有没有办法在Mac Terminal中跳到命令行命令的较早部分?


9

我经常会发现自己在bash shell中写了很长的命令-包含许多参数,网址,路由等的东西。我常常会意识到我忘记了,例如,将我的“ bundle exec”放在命令的开头,或者拼错了什么,或者忘记了引号。或简单地将“ cd”代替“ vim”。

这样就开始了按住左箭头键的繁琐过程,直到我回到命令的开头。

有什么办法可以再次跳到行首吗?


2
您可能想摆脱默认的终端应用程序,然后下载iTerm
Clement Herreman

为什么?我刚刚检查了一下,它的行为似乎几乎一样。(home键现在可以用了,但是由于我还有其他键并不重要)。它提供了什么,使其值得重做我的所有设置,配置和任务,什么都没有?
GlyphGryph 2011年

您似乎可以使用.inputrc进行设置
-Rob,

另外,要一次跳一个单词,请分别使用⌥B和⌥F来回跳转。
fideli

@fideli,但前提是您已启用“将选项用作元键”。请注意,从Mac OS X Lion 10.7开始,终端的默认键盘设置将Option-左箭头/右箭头映射到Esc-b / f,因此无需进行配置。
克里斯·佩奇

Answers:


12

除了^ A和^ E,您还可以

  • Esc- b跳回一个字
  • Esc- f向前跳一个字
  • Ctrl- b向后移一个字符
  • Ctrl- f前进一个角色

有关移动命令,请参见bash手册。


需要注意的一件事-这是来自Emacs,通过将emacs选项添加到shellopts中,您可以得到更多。
TC1

6

您可以使用Emacs命令,例如:

  • ctrl-A转到命令行开头
  • ctrl-E转到命令行末尾

这是bash,并非特定于Mac。


3
set -o vi

然后Esc

^行的开头行的 $最后 b一个字反义词 w向前的一个字


我是Vim的忠实拥护者,所以我的回答原则是很好的,但是模态命令行编辑可能会使OP感到困惑,尤其是在没有提及如何恢复输入能力的情况下!使用i(插入)在光标之前键入或a(追加)在光标之后键入返回到插入模式。
卡斯卡贝尔2011年

几十年来,我一直将vi用作主要的文本编辑器,但我仍然更喜欢shell的emacs键绑定。
基思·汤普森

实际上,OP使用vim进行所有文本编辑,因此了解可以设置vi标准非常有用。非常感谢!
GlyphGryph 2011年

@基思·汤普森:我以前也这么认为。我只是以为shell不能很好地与这种模式切换混合使用(例如vvi模式中的刺激键)。但是过了一会儿,我刚被vim感染,所以我建议您尝试一下:P
kizzx2 2011年

1

这不能回答您的问题,但在某些情况下可以解决您的问题。

bash!!令牌取代你以前的命令。因此,如果您忘记在命令的开头添加一些内容(例如sudo),则可以执行以下操作

# ./super_secret_command --with-args
=> ACCESS DENIED

# sudo !!
sudo ./super_secret_command --with-args
=> ACCESS GRANTED

0

您可以配置Ctrl/Opt+Left/Right在终端中使用的常规快捷方式。这样,您在使用Terminal时不必重新学习所有内容。

打开终端»首选项…»设置»(选择配置文件)»键盘

在那里,分配以下快捷方式:

  • Control + Cursor Left将字符串发送\033[1~到外壳
  • Control + Cursor Right将字符串发送\033[4~到外壳
  • Option + Cursor Left将字符串发送\033[5D到外壳
  • Option + Cursor Right将字符串发送\033[5C到外壳

我也喜欢以下(Fn + Left/Right):

  • Home将字符串发送\033[1~到外壳
  • End将字符串发送\033[4~到外壳

在此处输入图片说明


在狮子⌥←和⌥→必然M-bM-f默认。⌃←和⌃→是更改空格的默认快捷方式。
Lri 2011年

0

我在Cygwin(而不是Mac)中需要此功能,但添加以下内容也~/.inputrc可能会有所帮助:

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

0

我不是Mac用户,但是Home密钥呢?在Linux终端上可以正常工作。


1
不,滚动到终端窗口的顶部。
GlyphGryph 2011年

默认情况下,“主页”和“结束”滚动视图,这是标准的Mac行为。默认情况下,Shift-Home和Shift-End分别发送“ ESC [H”和“ ESC [F”。这些都可以在终端>首选项>设置> [配置文件]>键盘中自定义。
克里斯·佩奇

0

在Mac OS X中在命令行中移动的最佳方法是使用我的配置文件:https : //github.com/lingtalfi/mac-terminal-shortcuts

它提供了以下(直观的)快捷方式:

ALT-left: move one word backward
ALT-right: move one word forward
CTRL-left: move to the beginning of the line
CTRL-right: move to the end of the line
ALT-backspace: kill one word backward
ALT-del: kill one word forward
ALT-up: set word after cursor to uppercase
ALT-down: set word after cursor to lowercase
home: move to the beginning of the line
end: move to the end of the line    
CTRL-backspace: Same as ALT-backspace
CTRL-del: Same as ALT-del
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.