Est-il possible d'activer Ctrl + L pour effacer l'écran lorsque 'set -o vi' est défini?

54

Lorsque vous appuyez sur Ctrl+ Len mode bash par défaut, l’écran est effacé. Mais quand je cours set -o viet que je presse Ctrl+, Lla frappe est imprimée ( ^L). Y a-t-il un moyen de garder ce comportement?

David Martínez
la source

Réponses:

61

Ctrl+ Lest également lié en mode de commande vi mais pas en mode d'insertion. Il n'y a pas de liaison par défaut pour le clear-screenmode insertion. Les liaisons Readline doivent être spécifiées dans ~/.inputrc, comme suit:

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

Cela liera Ctrl+ Lpour effacer l'écran en mode normal et en mode insertion. Naturellement, si vous préférez ne l'utiliser que dans un seul mode, supprimez simplement l'option correspondante.

Il existe une longue liste de commandes readline que vous pouvez utiliser pour personnaliser votre shell bash.

jasonwryan
la source
1
par curiosité, pourquoi se préoccuper de vi-command s'il est déjà cartographié? juste pour être complet, ou y a-t-il une raison technique?
Ken Bellows
2
@KenBellows pour plus de clarté, conformément aux commentaires (j'avais besoin d'un exemple dans le bloc vi-command pour des raisons purement esthétiques).
jasonwryan
22

Mettez cette ligne dans votre bashrc:

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