直接将光标移动到`` 在长命令行中

直接将光标移动到`` 在长命令行中

Left-Arrow我经常发现自己处于一个很长的命令行中,通过、Right-ArrowAlt+ BAlt+F等方式导航到中间的特定位置可能会很痛苦。

我知道使用,我可以通过搜索tmux移动到特定的位置 。<keyword>由于这是一个非常常见的操作,现代终端中是否实现了类似的操作,例如gnome-terminal

额外奖励:如果能得到 macOS iTerm 的答案那就太好了。

答案1

Bash(以及任何其他使用 readline 库的终端应用程序)具有搜索功能。命令行编辑是由 shell 完成的,而不是由终端完成的。 (看“终端”、“shell”、“tty”和“控制台”之间的确切区别是什么?)。

主要的搜索命令是Ctrl+SCtrl+R,分别向前和向后搜索。这些是增量搜索:按Ctrl+SCtrl+后R,键入您要搜索的文本,您将被带到您迄今为止键入的下一个/上一个匹配项。

按任何不插入字符且不会Backspace结束搜索模式的键。请注意,该键将具有其通常的效果,特别是Enter立即运行该命令。Left/Right通常是最方便的方式。

如果您想取消搜索,请按Ctrl+ G,您将返回到您正在编辑的命令。这些命令搜索 shell 命令历史记录以及当前命令行。如果您不小心转到了上一个命令行,Ctrl+G将返回到您最初输入的内容。

巴什也有搜索单个字符的命令不进入搜索模式:Ctrl+]向前、Ctrl+ Alt+]Alt+ - Ctrl+]向后。

Zsh 有类似的命令(还有很多)。它是快速搜索单个字符的命令除非您处于 vi 模式,否则默认情况下不会绑定到方便的键(Ctrl+ X Ctrl+F向前,不向后),但您可以使用bindkey.

答案2

使用 bash,您可以使用edit-and-execute-command( Ctrl+ x, Ctrl+ e) 在您喜欢的编辑器中编辑命令:

   edit-and-execute-command (C-x C-e)
          Invoke  an editor on the current command line, and execute the result as shell commands.  
          Bash attempts to invoke $VISUAL, $EDITOR, and emacs as the editor, in that order.

如何移动到特定位置取决于您的编辑器。如果您使用 vim,则可以使用以下命令将光标定位到确切的单词vim-easymotion插入。

相关内容