什么是最好的方式来移动上给予很长的命令行的终端?

说我使用箭头的关键或 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$EDITORemacs (试着在这次序)。
  • 如果你跑了的命令前,击中 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可以在两种模式:

关砸到使用六模式:

$ 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 shellemacs.提供所有编辑的设施和按键 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确认的节省。

我做了一个脚本使命线 光标移动鼠标点击 :

  1. 使判断鼠跟踪报告
  2. 设置readline定消耗的逃生顺序产生的点击

它可以发现在

更多的信息 另一个职位

将工作,如果 echo -e "\e[?1000;1006;1015h" # Enable tracking 印逃序列的终端用鼠标点击时

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top