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

Mo.*_*Mo. 22 bash

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

但是我确实错过了一个功能:在 emacs 模式下,您可以通过按“ESC”来输入上一个命令的最后一个参数。(也就是说,按 Esc 后跟 .)

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

Mik*_*her 12

有 (vi-yank-arg),默认映射到“_”。那应该做你想做的(在命令模式下)。


Pol*_*lsy 10

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

bind '"\e."':yank-last-arg
Run Code Online (Sandbox Code Playgroud)

会给你同样的绑定(或选择其他东西)


leg*_*cia 8

不完全相同,但在任何一种模式下,您都可以键入!$,它将被上一个命令的最后一个单词替换。在手册中找到更多这样的东西。


Mar*_*slo 5

〜/ .inputrc文件文件可以配置键映射(可以手动生成它,如果它无法找到)。将以下命令添加到~/.inputrc 中

"\e.": yank-last-arg
"\e_": yank-last-arg
Run Code Online (Sandbox Code Playgroud)

我的 ~/.inputrc 是:

set completion-ignore-case on
set show-all-if-ambiguous on
set show-all-if-unmodified on

set editing-mode vi
set keymap vi-insert

"\C-p": previous-history
"\C-n": next-history
"\C-a.":beginning-of-line
"\C-e.":end-of-line

"\e.": yank-last-arg
"\e_": yank-last-arg
Run Code Online (Sandbox Code Playgroud)

您可以找到有关细节的readlinebind -p这里:http://linux.about.com/library/cmd/blcmdl3_readline.htm

以及一些关于bashReadline VI Editing Mode Cheat Sheet 中的Vi keyblindings 的信息