题
什么是最好的方式来移动上给予很长的命令行的终端?
说我使用箭头的关键或 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-一个 得到的开始和然后反复地 Alt-F 向前迈进,逐字(或 Ctrl-E 去结束和 Alt-B 然后去向后)。但是,在一个长线,花费太多的时间。必须有一种方法来搜索和直接跳到的一部分,我需要修改,例如 option25
?
解决方案
由于这种没有被关闭然而,这里有一些更多的选择。
- 使用 Ctrl+x 随后通过 Ctrl+e 打开目前的在线编辑指定的通过
$FCEDIT
或$EDITOR
或emacs
(试着在这次序)。 - 如果你跑了的命令前,击中 Ctrl+r 为扭转历史的搜索和类型
option25
(在这种情况下)。线就会显示出来。打 卡 开始编辑在这一点上。 - 使用历史膨胀的
s///
改性剂。E.g。!-2:s/--option25/--newoption/
将重新运行的第二个命令,但是替代option25.修改最后一个./cmd
命令时,使用!string
语法:!./cmd:s/--option25/--newoption/
任何分隔可能被用于替代/在替代。 - 如果编辑的前线,可以使用快速取代:
^--option25^--newoption
- 符搜索。这是中提到的人,并可以在常规emacs模式 Ctrl+] 对于前进的搜索, Ctrl+Alt+] 为落后的搜索。
我建议第二个选项。 Ctrl+r 真的是方便和迅速,没有碴约与编辑,你可以看到结果之前的运行命令(不同于历史的扩展).
其他提示
到是清楚的,你不想要一个"快速的方式来移动上的光标 终端 命令线"。什么你实际上想要的是一个快速的方式浏览过的命令行你 外壳 程序。
Bash 是很常见的外壳,例如。它使用 Readline 图书馆实施的命令行输入。所以说,这是非常方便知道Readline绑定,因为它不仅用于在狂欢。例如,库还使用Readline处理的输入。
在Readline文档,你可以找到所有导航有关的绑定(和更大):http://www.gnu.org/software/bash/manual/bash.html#Readline-Interaction
短制如果链路上走下:
裸露的要点
- Ctrl-b搬回来一个字符。
- Ctrl-f推动一个字符。
- [删除]或[Backspace]删除该字的左边的光标。
- Ctrl-d删除该字在底下的光标。
- Ctrl-_或C-x C-u撤消的最后编辑的指令。你可以撤销的所有办法回到一个空行。
运动
- Ctrl-一个移动的启动线。
- Ctrl-e移动到结束的线。
- Meta-f推动一个字,在那里一个字是由字母和数字。
- Meta-b向后移动一个字。
- Ctrl-l明确的画面,重印的前线。
杀了和美国
- Ctrl-k杀案文从目前的标位置的底线。
- M-d杀了从光标,结束当前的词,或者,如果之间的词语,来结束的下一个单词。词的边界都是一样的使用M-f。
- M-[删除]杀了从光标开始之前词,或者,如果之间也就是说,要开始之前一个字。词的边界都是一样的使用M-b。
- Ctrl-w杀了从光标移到前面的空白。这是不同于M-因为这个词的界限不同而不同。
- Ctrl-y拉最近被杀害的案文回到缓冲器在光标。
- 我的旋转的杀戒,美国佬的新的顶部。你只能这样做,如果现有的命令是C-y或我的。
M元的关键。为最大OS X终可以使"使用的选择,因为元的关键"在设置/键盘。Linux其更加复杂。
更新
还注意到,Readline可以在两种模式:
- emacs模式(默认)
- vi 模式
关砸到使用六模式:
$ set -o vi
本人来说我喜欢vi模式,因为我使用vim文本的编辑。
奖金
在mac os终端应用程序(在iTerm太)可以选择击将光标移动(将光标移至击位置)。这甚至是内部的工作 vim
.
按下选择的关键,并点击,你会喜欢的光标移动,并终端冲标,准确的现场。
我倾向于选择六编辑模式(因为这些按键是嵌入到我的脊髓现在(大脑的不使用),随着按CTRL-K,按CTRL-X从WordStar3.3:-).你可以使用命令行 set -o vi
来激活它(和 set -o emacs
恢复).
在六,它将(ESC-K获得行了第一次的课程)"f5;;B
"(无双引号).
当然,你必须明白什么是行得到与此有关。基本上,这是
f5 to find the first occurrence of "5" (in --option5).
; to find the next one (in --option15).
; to find the next one (in --option25).
B to back up to the start of the word.
让我们看看如果emacs爱好者可以想出更好的解决方案,少于5键击(虽然我不想要开始一场宗教战争).
你有没有想过你是否会也许希望把这种窘况的长命令成一个剧本吗?:-)
实际上,我可以去一个比这更好的:"3f5B
"以找到第三个生"5"再回到开始的这个词。
使用的元b/Meta-f向后移动/通过前一个字分别为。
在OS x的元翻译为ESC,这糟透了。
但是或者,你可以打开端的偏好->的设置配置文件的>键盘和检查"用的选择,因为元的关键"
运行后,该命令一旦运行 fc
它将启动 $EDITOR
与先前的命令,然后您可以使用常规的编辑修改命令。当你保存并出,该文件将被执行。
..但是,正如人所说的命令行并不是特别好的编辑荒谬的长线-为什么不做的命令成一个剧本吗?
如果你想要前进一定数量的话,打 M-<n>
(M-
是的元及其通常于逃避关键的),然后点击数字。这发出了一个重复的参数readline,所以你可以重复的任何命令你想要的-如果你想往前走然后击中 M-<n> M-f
并将光标移动向前 <n>
数字。
E.g。
$|echo "two three four five six seven"
$ M-4
(arg: 4) echo "two three four five six seven"
$ M-f
$ echo "two three four| five six seven"
所以对你的例从光标在开始行,你会打击, M-26 M-f
和你的光标将是在 --option25|
-或是-从底线 M-26 M-b
会把你的光标 --|option25
递增的历史中搜索
在终端输入:
gedit ~/.inputrc
然后副本贴和保存
"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char
所有你需要做的是找一个上面的命令是该说第一次2或3个字母和向上的箭头将带你有快说我想要的:
for f in *.mid ; do timidity "$f"; done
我所需要做的就是输入
fo
和打击向上的箭头指令很快就会出现
一种选择是使用 M-x shell
在 emacs
.提供所有编辑的设施和按键 emacs
有,所以 C-s
可用于搜索的文本 option25
, 例。
(但是我还是更喜欢在真实终端的外壳,而不是如果有人可以指向我到良好的搜索和编辑设施。)
使用鼠标
有时候最简单的方法来编辑一个命令行是用鼠标。一些以前的答案得到命令打开你的电线在你的编辑.对我来说(zhs与grml config)这种结合是 Alt+e
.如果你启用鼠标在你的编辑,你可以使用它。
使老鼠在Vim,添加这样对你~/.vimrc
set mouse=a
set ttymouse=xterm2
如果你那么想做个选择文本在终端(而不是通过可以vim),保持移当你击;这是终端的具体的,当然。
系统管理员不应该害怕的老鼠。
在Cygwin,可以激活这样的特征右击窗口。在弹出式窗口,选择 选择... ->鼠->激活 点击的地方的命令行的光标 ->的适用。
从现在起,只需点击鼠标左键,在某些位置的命令行将光标。
第一:出口编辑='纳米-m'
然后:CTRL+X CTRL+电子序列。
你前行将打开在纳米编辑鼠启用。你能击中任何一部分的文字和编辑
然后按CTRL+X退出和y确认的节省。