Existe alguma maneira de ativar Ctrl + L para limpar a tela quando 'set -o vi' estiver definido?

54

Quando você pressiona Ctrl+ Lno modo padrão do bash, a tela é limpa. Mas quando corro set -o vie pressiono Ctrl+, La tecla é impressa ( ^L). Existe alguma maneira de manter esse comportamento?

David Martínez
fonte

Respostas:

61

Ctrl+ Ltambém está vinculado no modo de comando vi, mas não no modo de inserção. Não há ligação padrão para clear-screenno modo de inserção. As ligações da linha de leitura devem ser especificadas da seguinte ~/.inputrcmaneira:

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

Isso ligará Ctrl+ Lpara limpar a tela no modo normal e de inserção. Naturalmente, se você preferir usá-lo apenas em um modo, basta remover a opção relevante.

Há uma extensa lista de comandos readline que você pode usar para personalizar seu shell bash.

jasonwryan
fonte
11
por curiosidade, por que se preocupar com o vi-command se ele já estiver mapeado? apenas por uma questão de completude, ou existe uma razão técnica?
Ken Bellows
2
@KenBellows para maior clareza, de acordo com os comentários (e eu precisava de um exemplo no bloco de comando vi por razões puramente estéticas).
jasonwryan
22

Coloque esta linha no seu bashrc:

bind -m vi-insert "\C-l":clear-screen
Casey
fonte