rcmdnk's blog

成功が約束される選択の法則: 必ず結果が出る今を選ぶ5つの仕組み (一般書)

シェルスクリプトで対話的な選択を出来るようにするスクリプトを作った で紹介したsentaku というスクリプトに対してEmasc的なキーバインドを実装しました。

Emacsキーバインド

sentakuは複数のインプットを並べて インタラクティブに選択出来るようにしたBash/Zshのスクリプトです。

選択時に行を移動させるのに、デフォルトだとVimのjが下、kが上、 みたいなキーバインドになってますが、 これに加えてEmacsの様に<C-n>で下、<C-p>で上、に移動できる様なオプションを付けました。

使い方は直接sentaku -E-Eのオプションを与えるか、 常にEmacsモードにしたい場合は環境変数で

export SENTAKU_KEYMODE=1

と、SENTAKU_KEYMODEという変数を1にします(デフォルトは0=Vim Mode)。

Emacs移動は

  • <C-n>: 一行下を選択
  • <C-p>: 一行上を選択
  • <C-v>: Page down
  • <M-p>: Page up

の4つ。(Macでは<M-p>=<Cmd-p>が上手く動かないかもしれません。)

ただ、Vim Modeであっても他のキーとバッティングしないので 両方で有効になっています。

特に、Vim ModeでSearchに入った時、 ESCを押さずにも<C-n>とかで直接移動出来るようにもなりました。

Emacs Mode専用で良い点は、Controlとかがついてない普通のキーを入力すると すぐにインクリメンタルサーチを始められるところです。 検索して絞り込んで決定、をよく使う場合はこちらの方が便利かもしれません。

検索モードのオプション追加

ついでに、検索の仕方についてもオプションを追加しました。 これまでは、入力した文字から始まる物を検索してましたが、 SENTAKU_SEARCH_OPTという環境変数を設定することで、 以下の4つを選べます。

  • 0: AND search (ignore case) (Default)
  • 1: AND search (case sensitive)
  • 2: Starts with (ignore case)
  • 3: Starts with(case sensitive)

これまでのデフォルトは3に当たるものでしたが、 現在のデフォルトは0で、 大文字小文字区別せず、入力文字が含まれてたら該当するようになっています。 また、スペースで区切って入力するとそれらのAND検索になります。 Macのスポットライト検索とかと同じ感じ。

sentaku_emacs

同じような機能を持つもの

ついでに最近見つけたsentakuと似たような事を目的とした物について。 結構昔からあるので、なんで今まで気づかなかったのかな、と。

もともとBashのシェルスクリプトを書いてて その内の一部がいくつかのスクリプトで共有できそうだったので 切り分けた形なので、先にこういうのあるかな、と検索してなかったからだとは思いますが。

上のEmacsモード入れてみよう、と思ったのは実はこれらを見つけて 見てみたというのが理由。

基本的に同じ様な機能だと思います。

sentakuならそのままBashでもZshでもシェルスクリプトとして簡単に(自分的に) 拡張できますよ、という点が利点ということで。

Sponsored Links
Sponsored Links

« GitHubでForkしたリポジトリで元のリポジトリの変化を追う Vimをコマンドラインから使ってまとめて複数コードファイルのインデントを調整する »

}