私は の素晴らしさを発見したばかりですがset -o vi
、vi や vim をカスタマイズするのと同じ方法でこの vi シェル モードをカスタマイズできるかどうか興味があります。
たとえば、より便利なキーまたはキーの組み合わせをesc
?にマップするカスタム キー バインディングを作成します。
現在サポートされていない場合、プログラムのソース コードを変更してカスタマイズをハードコードすることはどの程度難しいでしょうか。それとも、それは悪い考えでしょうか。
答え1
はい、組み込み機能を使用してキー マッピング (vi モードまたは emacs のようなモードのいずれか) を変更できますbind
。これは実際には readline の機能です (したがって、bash だけでなく、すべての readline プログラムで vi のようなバインディングを使用できます)。
探しているキーは と呼ばれvi-movement-mode
、デフォルトは\e
(escape) です。さらに、次のように (かなり馬鹿げた話ですが) 等号にバインドすることもできます。2 行目は escape へのバインドを削除します。
$ bind "=":vi-movement-mode
$ bind -r "\e"
実行すると、bind -p
バインドできるすべてのキーと、それらの現在のバインド(ある場合)が表示されます。
bind
にコマンドを入力する.bashrc
ことも、~/.inputrc
実行するすべての readline プログラムに適用するように編集することもできます。readline のドキュメントに詳細がすべて記載されています。