Есть ли способ включить Ctrl + L, чтобы очистить экран, когда установлено «set -o vi»?

54

Когда вы нажимаете Ctrl+ Lв режиме bash по умолчанию, экран очищается. Но когда я запускаю 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чтобы очистить экран как в обычном, так и в режиме вставки. Естественно, если вы предпочитаете использовать его только в одном режиме, просто удалите соответствующую опцию.

Существует обширный список команд readline, которые вы можете использовать для настройки вашей оболочки bash.

jasonwryan
источник
1
из любопытства, зачем использовать vi-команду, если она уже сопоставлена? просто ради полноты или есть техническая причина?
Кен Беллоуз
2
@KenBellows для ясности, согласно комментариям (и мне нужен пример в блоке vi-command по чисто эстетическим причинам).
Джейсонвриан
22

Поместите эту строку в свой bashrc:

bind -m vi-insert "\C-l":clear-screen
Casey
источник