在终端命令行上移动光标的最快方法?

在终端的特定命令行中移动的最佳方式是什么?

说我使用箭头键或Ctrl-R来获得这个长的命令行:

./cmd --option1 --option2 --option3 --option4 --option5 --option6 --option7 --option8 --option9 --option10 --option11 --option12 --option13 --option14 --option15 --option16 --option17 --option18 --option19 --option20 --option21 --option22 --option23 --option24 --option25 --option26 --option27 --option28 --option29 --option30 --option31 --option32 --option33 --option34 --option35 --option36 --option37 --option38 --option39 --option40 --option41 --option42 --option43 --option44 --option45 --option46 --option47 --option48 --option49 --option50 

现在我需要将光标移动(从行首或行尾开始)到--option25以修改其中的内容。

什么是最快的方式到达那里? 我通常做的是按Ctrl-A开始,然后重复Alt-F逐字逐句向前移动(或按Ctrl-E走到最后,然后按Alt-B然后往后走)。 但是需要花费太多时间的漫长路线。 必须有一种方法可以直接搜索并跳转到我需要修改的部分,例如option25


由于这还没有关闭,这里有几个选项。

  • 使用Ctrl + x,然后按Ctrl + e打开由$FCEDIT$EDITORemacs指定的编辑器中的当前行( $FCEDIT顺序尝试)。
  • 如果您更早运行该命令,请按Ctrl + r进行反向历史记录搜索并键入option25 (在本例中)。 该行将显示。 点击Tab在这一点开始编辑。
  • 使用s///修饰符进行历史扩展。 例如!-2:s/--option25/--newoption/将重新运行倒数第二个命令,但替换选项25。 要修改最后一个./cmd命令,请使用!string语法: !./cmd:s/--option25/--newoption/
    可以使用任何分隔符代替替换中的/。
  • 如果编辑上一行,可以使用快速替换: ^--option25^--newoption
  • 字符搜索。 Pax提到了这一点,可以通过按Ctrl +]进行正向搜索,按Ctrl + Alt +]以常规emacs模式完成后向搜索。
  • 我建议第二个选项。 Ctrl + r非常方便和快速,不会与编辑混淆,并且可以在命令运行之前看到结果(与历史扩展不同)。


    清楚的是,你不需要一个“在终端命令行上快速移动光标”。 你真正想要的是在shell程序中通过命令行导航的快速方法。

    例如,Bash是非常常见的外壳。 它使用Readline库来实现命令行输入。 可以这么说,知道Readline绑定非常方便,因为它不仅用在bash中。 例如,gdb也使用Readline来处理输入。

    在Readline文档中,您可以找到所有导航相关的绑定(以及更多):http://www.gnu.org/software/bash/manual/bash.html#Readline-Interaction

    如果上面的链接出现故障,请复制粘贴短片:

    基本必需品

  • Cb移回一个字符。
  • Cf前进一个字符。
  • [DEL]或[Backspace]删除光标左边的字符。
  • Cd删除光标下方的字符。
  • C-_或Cx Cu撤销上次的编辑命令。 您可以一直撤回到空行。
  • 运动

  • Ca移动到行的开头。
  • Ce移动到行的末尾。
  • Mf前进一个单词,其中一个单词由字母和数字组成。
  • Mb向后移动一个单词。
  • Cl清除屏幕,重新打印顶部的当前行。
  • 杀死和猛击

  • Ck将当前光标位置的文本杀死到行尾。
  • Md从光标杀死到当前单词的结尾,或者如果在单词之间,则结束到下一个单词的结尾。 单词边界与制造商使用的相同。
  • M- [DEL]从光标处杀死当前单词的开始,或者如果在单词之间,则杀死前一个单词的开始。 字边界与Mb使用的边界相同。
  • Cw从光标杀死前一个空格。 这与M-不同,因为单词边界不同。
  • Cy将最近被杀死的文本放回到光标处的缓冲区中。
  • 我旋转杀死环,并拔出新的顶部。 如果先前的命令是Cy或My,则只能执行此操作。
  • M是元键。 对于Max OS X Terminal,您可以在设置/键盘中启用“使用选项作为元键”。 对于Linux来说更加复杂。

    更新

    另请注意,Readline可以以两种模式运行:

  • emacs模式(这是默认的)
  • vi模式
  • 要切换Bash以使用vi模式:

    $ set -o vi
    

    Personaly我更喜欢vi模式,因为我使用vim进行文本编辑。

    奖金

    在macOS终端应用程序(也可以在iTerm中),您可以通过Option-Click移动光标(光标将移动到点击的位置)。 这甚至可以在vim


    按住Option键并点击你想要移动光标的位置,然后终端将光标移动到精确的位置。

    链接地址: http://www.djcxy.com/p/49359.html

    上一篇: Fastest way(s) to move the cursor on a terminal command line?

    下一篇: Open terminal here in Mac OS finder