bash/readline 相当于 vi 模式下的 escape-dot
最近在 bash 中切换到 vi 模式后,我想念的一件事是 esc . 获取最后一个命令的最后一个参数。
我知道 ctrl _,但我最终总是点击 ctrl - 。
是否还有其他相当于此功能的 vi 模式?
Having recently switched to vi-mode in bash, the one thing I miss is esc . to get the last argument of the last command.
I know about ctrl _, but I always end up hitting ctrl - instead.
Is there another vi-mode equivalent for this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我相信最接近您想要的解决方案是:
在您的 .bashrc 中,在“set -o vi”之后...
这告诉您的 bash 在“.”时调用“insert-last-argument”操作在 vi 命令模式下使用。这当然意味着你失去了正常的“。” VI的功能;但如果你像我一样,你会更喜欢这个。
附录:
您可能还希望 Ctrl-A、Ctrl-E、Ctrl-W 和 Ctrl-L 工作(这些是我最想念的):
I believe the closest solution to what you want is this:
In your .bashrc, right after "set -o vi"...
This tells your bash to invoke the "insert-last-argument" action when '.' is used in vi-command mode. This of course means that you lose the normal "." functionality of VI; but if you are like me, you'll prefer this.
Addendum:
You may also want Ctrl-A, Ctrl-E, Ctrl-W and Ctrl-L to work (those were the ones I was missing the most):
您还可以使用以下命令在 vi 模式下恢复 emacs“转义点插入最后一个参数”行为:
You can also use the following to restore the emacs "escape-dot inserts last argument" behaviour in vi mode:
通过更改或添加 ~/.inputrc
要在 vi 模式下恢复某些 bash 功能,只需更改或添加 ~/.inputrc 即可,如下所示:
这里有 更多可绑定 readline bash 命令。
By altering or adding ~/.inputrc
To restore certain bash goodies in vi-mode, simply alter or add ~/.inputrc like this:
Here are more bindable readline bash commands.
我总是使用 alt . 来获取最后一个命令的最后一个参数。
此外,
!$
将为您提供最后执行的命令的最后一个参数。您可以使用感叹号做很多很酷的事情,只需查看 bash 的手册页并搜索历史扩展即可。I always used alt . to get the last argument of the last command.
Also, the
!$
will give you the last argument of the last command executed. There are a bunch of cool things you can do with the exclamation point, just check out the man page for bash and search for History Expansion.只使用 $_ bash 变量怎么样?
How about just using $_ bash variable?
我很确定您仍然可以使用 vi 模式的等效内容,应该是“ESC +”。
I'm pretty sure you can still use the equivalent for vi mode, which should be "ESC + ."