【发布时间】:2009-10-07 04:58:54
【问题描述】:
用于在使用命令行时快速定位位置(是的,我是 Emacs 粉丝)。在查看 Bash 的人之后,我找不到这样的提示。是否需要修改readline的源代码来支持?
非常感谢!!
【问题讨论】:
用于在使用命令行时快速定位位置(是的,我是 Emacs 粉丝)。在查看 Bash 的人之后,我找不到这样的提示。是否需要修改readline的源代码来支持?
非常感谢!!
【问题讨论】:
CTRL-r (reverse-i-search) 将允许您搜索当前行以及历史记录中的任何内容。
如果你想跳回几个参数,你可以点击空格,然后再次 CTRL-r 来“再次查找”。 Escape 会用光标在最后一个搜索结果上跳出来。
【讨论】:
C-x C-e 的破坏性要小得多。
我不知道直接在命令行中执行此操作的方法,但 bash 确实支持在您选择的编辑器中打开命令行的按键。来自 bash 手册页:
edit-and-execute-command (C-xC-e)
Invoke an editor on the current command line, and execute the
result as shell commands. Bash attempts to invoke $FCEDIT,
$EDITOR, and emacs as the editor, in that order.
因此,在 emacs 绑定模式(默认)下按 CTRL-x CTRL-e 或在 vi 绑定模式下按 ESC v(set -o vi)将在上述环境变量指定的编辑器中打开现有命令行。您可以编辑命令行,一旦您保存并退出编辑器,该命令就会被执行。
【讨论】:
:q!,命令都会执行。所以如果你想要一个 noop - 删除所有内容!
:q! 在 vim 中将直接退出而不保存,所以据 bash 所知,您只是没有进行任何编辑。上次保存的内容将是执行的命令,并且“上次保存的”开始于您告诉 bash 在编辑器中打开它时命令行上的任何内容。但是,有一个例外:如果您的编辑器返回一个非零状态,bash 将不 执行该命令。您可以在 vim 中使用 :cq 执行此操作。一个奇怪的地方是:在调用编辑器之前命令行中的任何内容仍将添加到您的历史记录中,即使它从未执行过。