web-dev-qa-db-ja.com

「set -o vi」が設定されているときにCtrl + Lを有効にして画面をクリアする方法はありますか?

押すと Ctrl+L bashのデフォルトモードでは、画面はクリアされます。しかし、set -o viを実行して押すと Ctrl+L キーストロークが印刷されます(^L)。この動作を維持する方法はありますか?

55
David Martínez

Ctrl+L viコマンドモードでもバインドされますが、挿入モードではバインドされません。挿入モードのclear-screenには、デフォルトのバインディングはありません。 Readlineバインディングは、次のように~/.inputrcで指定する必要があります。

set editing-mode vi
$if mode=vi

set keymap vi-command
# these are for vi-command mode
Control-l: clear-screen

set keymap vi-insert
# these are for vi-insert mode
Control-l: clear-screen 
$endif

これはバインドされます Ctrl+L 通常モードと挿入モードの両方で画面をクリアします。もちろん、1つのモードでのみ使用する場合は、関連するオプションを削除してください。

readlineコマンドの詳細なリスト を使用して、bashシェルをカスタマイズできます。

62
jasonwryan

この行をbashrcに入れます:

bind -m vi-insert "\C-l":clear-screen
24
casey