有没有办法在设置“set -o vi”时启用 Ctrl+L 清除屏幕?

有没有办法在设置“set -o vi”时启用 Ctrl+L 清除屏幕?

当您在 bash 默认模式下按Ctrl+时L,屏幕将被清除。但是当我运行set -o vi并按Ctrl+时L,会打印击键 ( ^L)。有什么办法可以保持这种行为吗?

答案1

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以在正常和插入模式下清除屏幕。当然,如果您只想在一种模式下使用它,只需删除相关选项即可。

如果您希望设置它只是为了bash使用以下等效项~/.bashrc

set -o vi
bind -m vi-command 'Control-l: clear-screen'
bind -m vi-insert 'Control-l: clear-screen'

有一个广泛的 readline 命令列表您可以使用它来自定义您的 bash shell。

答案2

将此行放入您的bashrc

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

相关内容