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


54

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

回答:


61

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つのモードでのみ使用する場合は、関連するオプションを削除してください。

bashシェルをカスタマイズするために使用できるreadlineコマンドの広範なリストがあります。


1
好奇心から、それが既にマップされているのに、なぜviコマンドに煩わされるのですか?完全を期すために、または技術的な理由がありますか?
ケンベローズ

2
コメントによると、わかりやすくするために@KenBellows(そして純粋に審美的な理由からviコマンドブロックに例が必要でした)。
-jasonwryan

22

以下にこの行を入れてくださいbashrc

bind -m vi-insert "\C-l":clear-screen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.