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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (26)

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

假设我使用了箭头键或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(按该顺序审讯)。
  • 如果您在前面运行该命令,请按Ctrl+r进行反向历史搜索,然后键入option25(在本个案中)。将显示这一行。点击Tab开始编辑。
  • s///改性剂。例如:!-2:s/--option25/--newoption/将重新运行第二次至最后一次命令,但替换选项25。修改最后一个./cmd命令,使用!string语法:!./cmd:s/--option25/--newoption/可以使用任何分隔符来代替/在替换中。
  • 如果编辑上一行,可以使用快速替换:^--option25^--newoption
  • 字符搜索。这是Pax提到的,可以在常规emacs模式下执行,Ctrl+用于前向搜索,Ctrl+Alt+用于反向搜索。

我建议第二种选择。Ctrl+r非常方便和快速,不会与编辑器打交道,而且在运行命令之前就会看到结果(与历史扩展不同)。

用户回答回答于

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

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

基本

  • 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来说更加复杂。

扫码关注云+社区