OS X终端中是否有任何一种方法可以逐字移动光标?
我知道组合键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
-B
和Esc
-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手册的链接,以获取更多信息。