vi模式下转义点的bash/readline等价物
最近在bash中切换到vi模式,我错过的一件事是esc。获取最后一个命令的最后一个参数 我知道ctrl,但我总是按ctrl键vi模式下转义点的bash/readline等价物,bash,vi,readline,Bash,Vi,Readline,最近在bash中切换到vi模式,我错过的一件事是esc。获取最后一个命令的最后一个参数 我知道ctrl,但我总是按ctrl键 是否还有其他与此等效的vi模式?仅使用$\bash变量如何?我一直使用alt。获取最后一个命令的最后一个参数 还有,$将为您提供最后执行的命令的最后一个参数。你可以用感叹号做很多很酷的事情,只需查看bash的手册页并搜索历史扩展。我很确定你仍然可以使用vi模式的等效功能,应该是“ESC+”。我相信最接近你想要的解决方案是: 在你的.bashrc中,就在“set-ovi”之
是否还有其他与此等效的vi模式?仅使用$\bash变量如何?我一直使用alt。获取最后一个命令的最后一个参数
还有,
$代码>将为您提供最后执行的命令的最后一个参数。你可以用感叹号做很多很酷的事情,只需查看bash的手册页并搜索历史扩展。我很确定你仍然可以使用vi模式的等效功能,应该是“ESC+”。我相信最接近你想要的解决方案是:
在你的.bashrc中,就在“set-ovi”之后
这告诉bash在vi命令模式中使用“.”时调用“insert last argument”操作。这当然意味着你失去了VI的正常的“.”功能;但是如果你像我一样,你会喜欢这个
附录:
您可能还希望Ctrl-A、Ctrl-E、Ctrl-W和Ctrl-L起作用(这些是我最想念的):
您还可以使用以下命令在vi模式下恢复emacs“escape dot inserts last argument”行为:
bindkey -v '\e.' insert-last-word
通过改变或添加~/.inputrc
要在vi模式下恢复某些bash goodies,只需更改或添加~/.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
这是。我不认为是alt。在vi模式下工作。不过,历史扩张很酷。我知道一些事情,但不知道在哪里可以找到其余的。带您进入插入模式,然后。重复您最后键入的内容。so:touch test.txt;vi“esc+”会给你vivi作为第二行。遗憾的是,这个解决方案不会循环通过参数。我知道这是非常古老的。但我的同事只是给我看了以下内容,它完全复制了行为,只是增加了一个空格(见图)。不幸的是,我无法将其映射到Esc-。组合成功。所以有一些肌肉记忆需要打破。不管怎样,给你:bind-m vi insert C-k:yank last arg我之所以选择C-k,是因为它没有用于任何有用的东西,似乎类似于“Ctrl-Up”。每次击键结束时的点真的必要吗?与…相比。
bindkey -v '\e.' insert-last-word
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