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

时间:2011-07-27 03:51:23

标签: bash vi readline

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

我知道 ctrl _ ,但我总是最后点击 ctrl -

是否有另外的vi-mode等效?

6 个答案:

答案 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)

通过更改或添加〜/ .inputrc

要在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

以下是more bindable readline bash commands

答案 3 :(得分:2)

我总是使用 alt 来获取最后一个命令的最后一个参数。

此外,!$将为您提供最后执行的命令的最后一个参数。你可以用感叹号做一些很酷的事情,只需查看bash的手册页并搜索History Expansion。

答案 4 :(得分:1)

如何使用$ _ bash变量?

答案 5 :(得分:0)

我很确定你仍然可以使用等效的vi模式,它应该是“ESC +。”