在终端中给定的很长的命令行上移动的最佳方式是什么?
假设我使用箭头键或Ctrl-R来获取这个长命令行:
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以修改那里的内容。
--option25
到达那里最快的方法是什么?我通常做的是Ctrl-A从头开始,然后反复Alt-F逐字前进(或Ctrl-E走到尽头,然后Alt-B然后倒退)。但是排长队需要太多时间。必须有一种方法可以搜索并直接跳转到我需要修改的部分,例如option25?
A
Alt
F
E
B
option25
由于这还没有关闭,这里有更多的选择。
x
e
$FCEDIT``$EDITOR``emacs
r
Tab
使用带有s///修饰符的历史扩展。例如!-2:s/--option25/--newoption/,将重新运行倒数第二个命令,但替换 option25。要修改最后一个./cmd命令,请使用以下!string语法:!./cmd:s/--option25/--newoption/ 可以使用任何分隔符代替 / 在替换中。
s///
!-2:s/--option25/--newoption/
./cmd
!string
!./cmd:s/--option25/--newoption/
如果编辑上一行,您可以使用快速替换:^--option25^--newoption
^--option25^--newoption
]
我推荐第二种选择。Ctrl+r非常方便快捷,无需与编辑器混为一谈,并且您可以在命令运行之前看到结果(与历史扩展不同)。