vi 模式下 bash 中最后一个命令的最后一个参数

vi 模式下 bash 中最后一个命令的最后一个参数

我被说服(在 Stack Overflow 上)在 vi 模式下使用我喜爱的 bash。到目前为止,我已经习惯了它,并且我喜欢它。

然而我确实错过了一个功能:在 emacs 模式下,你可以按“ESC”键输入上一个命令的最后一个参数。(也就是说,先按 Esc 键,再按 . 键)

是否有默认绑定来在 vi 模式下插入最后一个参数?我找不到,我真的很想念这个命令……

答案1

没有默认值。当您切换到 vi 模式时,“yank-last-arg”的绑定(由“bind -p”列出)会消失。

bind '"\e."':yank-last-arg

将返回相同的绑定(或选择其他内容)

答案2

有 (vi-yank-arg),默认情况下映射到“_”。这应该可以满足您的要求(在命令模式下)。

答案3

不完全一样,但在任一模式下,您都可以输入!$,它将被替换为上一个命令的最后一个单词。在手册

答案4

在你的 .bashrc 中,添加以下内容:

set -o vi
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

这些将恢复不仅 ESC-dot 的默认行为 - 而且还有 Ctrl-A、Ctrl-E、Ctrl-W 和 Ctrl-L。因此,您可以享受正常的 bash vi 模式,同时仍使用您熟悉和喜爱的快捷方式。如果您需要更多操作,只需检查“man bash”以找到您需要的 readline 操作的名称(例如“clear-screen”、“end-of-line”等)。

相关内容