bash/readline相当于vi-mode中的escape-dot

rou*_*ge8 10 vi bash readline

最近在bash中切换到vi-mode,我想念的一件事是esc .获取最后一个命令的最后一个参数.

我知道ctrl _,但我总是最终打击ctrl -.

还有另一个vi模式等效吗?

tts*_*ras 9

我相信最符合您需求的解决方案是:

在你的.bashrc中,在"set -o vi"之后......

set -o vi
bind -m vi-command ".":insert-last-argument
Run Code Online (Sandbox Code Playgroud)

这告诉你的bash在'.'时调用"insert-last-argument"动作.用于vi命令模式.这当然意味着你失去了正常的"." VI的功能; 但如果你像我一样,你会更喜欢这个.

附录:您可能还希望Ctrl-A,Ctrl-E,Ctrl-WCtrl-L工作(这些是那些我失踪最):

bind -m vi-command ".":insert-last-argument
bind -m vi-insert "\C-l.":clear-screen
bind -m vi-insert "\C-a.":beginning-of-line
bind -m vi-insert "\C-e.":end-of-line
bind -m vi-insert "\C-w.":backward-kill-word
Run Code Online (Sandbox Code Playgroud)

  • 可悲的是,这个解决方案不会在参数中循环。 (2认同)

小智 6

您还可以使用以下命令在 vi 模式下恢复 emacs 的“escape-dot inserts last argument”行为:

bindkey -v '\e.' insert-last-word
Run Code Online (Sandbox Code Playgroud)