シェルスクリプトで対話的な選択を出来るようにするスクリプトを作った で紹介したsentaku というスクリプトに対してリスト中のアイテムを上下出来る機能を実装しました。
やりたいこと
sentakuでは、インプットファイルを決めて
$ sentaku -F input.txt
などとすれば、その中のにあるものをリストし、リストから欲しい値を取る事ができたりします。
また、
$ sentaku -F input.txt -p new_word
とすれば、input.txt内のリストの先頭にnew_word
を加えられます
1。
ここで、このスクリプトから追加することは出来るのですが、 保存したリストを変更したりすることがスクリプトから出来ないので、 どうしてもしたいときは直接ファイルを開いて手で変更してたりしました。
特に、rcmdnk/sd_cl
2
で-p
オプションを使って予め作っておいたディレクトリリストへ移動する、
ということをしたい場合、
sd_cl
の中だと通常の履歴ディレクトリリストからp
を押すと
保存リストに移せるのですが、よく使う物を上に置きたいので
気が向いたらリストを直接開いて編集、みたいなことをする必要があって面倒でした。
大体、変更したいな、と思うのはスクリプトを立ち上げた時なので、 やはり気づいたときに変更したいな、ということをするための機能追加です。
アイテム移動
アイテム移動はCtrl-iとCtrl-oに それぞれ上に移動、下に移動を割り当てました。
こんな感じでCtrl-i/Ctrl-oで 選択行のアイテムを上下に移動出来ます。 これらのキーの前に数字を押せば数字の分だけ移動することも出来ます。
これらのキーはVimモードでもEmacsモード 3 でも有効です。
ファイルから読み込んでリスト表示してる場合、移動するたびに保存し直されるので、
途中でq
等で止めても移動した物が保存されて次からもその順番になっています。
同じような機能を持つもの
この前sentakuのアップデートを を紹介した時に同じような機能を持つものとして zawと percol というものがあた、との話をしましたが、 ここ最近pecoと言うものが作られて 話題になっています。 これはpercolのアイデアをgoで作った、と言うもの。
こちらはpecoというユーザー名も取得して 4 今後も積極的にいろんな人が貢献しながらアップデートしていきそうです。
sentakuの方も何か気づいたことがあったら是非教えて下さい。 とは言っても、何故か外国の人が主にスターを付けてくれてたりして (どうもどこかのブログで紹介してくれたらしい) 主に使ってる人はこれを見てない人のが多いのかもしれませんが。。。