设置“set -o vi”时,有什么方法可以启用 Ctrl+L 来清除屏幕?

Dav*_*nez 62 bash readline vi-mode

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

jas*_*yan 77

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
Run Code Online (Sandbox Code Playgroud)

这将绑定Ctrl+L以在正常和插入模式下清除屏幕。当然,如果您更喜欢仅在一种模式下使用它,只需删除相关选项即可。

如果您更喜欢设置它只是为了在 中bash使用以下等效项~/.bashrc

set -o vi
bind -m vi-command 'Control-l: clear-screen'
bind -m vi-insert 'Control-l: clear-screen'
Run Code Online (Sandbox Code Playgroud)

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

  • 出于好奇,如果 vi-command 已经被映射,为什么还要麻烦它呢?只是为了完整性,还是有技术原因? (3认同)
  • @KenBellows 为了清晰起见,根据评论(出于纯粹的审美原因,我需要 vi 命令块中的一个示例)。 (3认同)

cas*_*sey 28

将此行放在您的bashrc

bind -m vi-insert "\C-l":clear-screen
Run Code Online (Sandbox Code Playgroud)