OS X终端中是否有任何一种方法可以逐字移动光标?

时间:2020-03-05 18:58:19  来源:igfitidea点击:

我知道组合键Ctrl + A跳转到当前命令的开头,组合Ctrl + E跳转到当前命令的结尾。

但是有没有办法像Cocoa应用程序中的Alt+/一样逐字跳过呢?

解决方案

回答

这是你怎么做

默认情况下,终端具有以下快捷方式来逐字移动(左右):

  • esc + B(左)
  • esc + F(右)

我们可以配置alt+为我们生成这些序列:

  • 打开终端首选项(cmd+);
  • 在"设置"选项卡上,选择"键盘",然后双击"?"。 `(如果存在),或者如果不存在则添加。
  • 根据需要设置修饰符,然后在框中输入快捷键:" esc" +" B",生成文本" \ 033b"(我们不能手动输入此文本)。
  • 重复右移单词(" esc" +" F"变成" \ 033f")

或者,我们可以在textmate上参考此博客文章:

http://blog.macromates.com/2006/word-movement-in-terminal/

回答

我有Alt+/工作:打开首选项?设置?键盘上,设置选项光标向左的条目以将字符串发送到外壳:\ 033b,并设置选项光标右以将字符串发送到外壳:\ 033f。我们也可以将其用于其他控制键组合。

回答

开箱即用,我们可以使用非常奇怪的Esc+F移至下一个单词的开头,而使用Esc+B移至当前单词的开头。

回答

在Bash中,这些绑定到Esc-BEsc-F
Bash有很多很多键盘快捷键。看一看bind -p的输出,看看它们是什么。

回答

如果在首选项的键盘选项卡中选中"将选项用作元键",则默认的emacs样式命令用于前进和后退单词以及?F(Alt+F)和? Alt+B)。

我建议阅读从Bash到Z-Shell。如果我们想提高bash / zsh的实力!

回答

实际上,这取决于我们使用什么外壳,但是大多数外壳具有相似的绑定。我们所指的绑定(例如Ctrl + A和Ctrl + E)是我们在许多其他程序中都能找到的绑定,并且它们使用了很长时间,BTW在大多数UI应用程序中也可以使用。

这是Bash的默认绑定的外观:

最重要的Bash键盘快捷键

另请注意,我们可以自定义它们。我们需要创建一个文件,并按需要命名,我将其命名为mine .bash_key_bindings并将其放入我的主目录中。在这里,我们可以设置一些常规的bash选项,还可以设置键绑定。为了确保应用它们,我们需要修改一个名为" .bashrc"的文件,该文件将在bash启动时读取(如果不存在,则必须创建它)并在其中进行以下调用:

bind -f ~/.bash_key_bindings

〜表示在bash中的主目录,如上所述,我们可以根据需要命名文件,也可以将其放置在所需的位置,只要输入正确的路径名即可进行绑定。

让我向我们展示我的.bash_key_bindings文件的一些摘录:

set meta-flag on
set input-meta on
set output-meta on
set convert-meta off
set show-all-if-ambiguous on
set bell-style none
set print-completions-horizontally off

这些仅设置了几个选项(例如禁用铃声;可以在bash网页上全部查看)。

"A": self-insert
"B": self-insert
"C": self-insert
"D": self-insert
"E": self-insert
"F": self-insert
"G": self-insert
"H": self-insert
"I": self-insert
"J": self-insert

这些可以确保仅字符就不起作用,而要确保字符是"输入"的(将其自身插入到外壳中)。

"\C-dW": kill-word
"\C-dL": kill-line
"\C-dw": backward-kill-word
"\C-dl": backward-kill-line
"\C-da": kill-line

这很有趣。如果我单独按下Ctrl + D(我选择d作为删除),则什么也没有发生。但是,如果我再输入小写字母w,则会删除光标左侧的单词。但是,如果键入大写字母,则光标右侧的单词将被杀死。对于从光标开始的整行,l和L同样适用。如果我键入" a",则实际上删除了整行(光标之前和之后的所有内容)。

我在Ctrl + F上向前跳了一个单词,在Ctrl + B上向后跳了一个单词。

"\C-f": forward-word
"\C-b": backward-word

如我们所见,我们可以创建一个快捷方式,该操作可以立即导致一个操作,或者我们可以创建一个快捷方式,该操作仅初始化一个字符序列,然后我们必须键入一个(或者多个)字符来使操作发生,如上例所示。

因此,如果我们对默认绑定不满意,请随意自定义它们。这是bash手册的链接,以获取更多信息。