最近在bash中切换到vi-mode,我想念的一件事是 esc 。来获取最后一个命令的最后一个参数。
我知道 ctrl _ ,但我总是最后点击 ctrl - 。
是否有另外的vi-mode等效?
答案 0 :(得分:9)
我相信你想要的最接近的解决方案是:
在.bashrc中,紧跟在“set -o vi”...
之后set -o vi
bind -m vi-command ".":insert-last-argument
这告诉你的bash在'。'时调用“insert-last-argument”动作。用于vi命令模式。这当然意味着你失去了正常的“。” VI的功能;但如果你像我一样,你会更喜欢这个。
<强>附录强>: 您可能还需要 Ctrl-A , Ctrl-E , Ctrl-W 和 Ctrl-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
答案 1 :(得分:4)
您还可以使用以下命令在vi模式下恢复emacs“escape-dot insert last argument”行为:
bindkey -v '\e.' insert-last-word
答案 2 :(得分:3)
要在vi模式下恢复某些bash好东西,只需改变或添加〜/ .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
$if mode=vi
"\C-a": beginning-of-line
"\C-e": end-of-line
"\C-l": clear-screen
"\C-n": next-history
"\C-p": previous-history
"\C-w": backward-kill-word
"\e.": yank-last-arg
"\e_": yank-last-arg
$endif
答案 3 :(得分:2)
我总是使用 alt 。来获取最后一个命令的最后一个参数。
此外,!$
将为您提供最后执行的命令的最后一个参数。你可以用感叹号做一些很酷的事情,只需查看bash的手册页并搜索History Expansion。
答案 4 :(得分:1)
如何使用$ _ bash变量?
答案 5 :(得分:0)
我很确定你仍然可以使用等效的vi模式,它应该是“ESC +。”