有什么办法在OS Xterminal来逐词移动光标?
我知道组合键Ctrl + A跳转到当前命令的开头, Ctrl + E跳转到结尾。
但是有什么办法可以一字一字地跳,就像在Cocoa应用程序中的Alt + ← / →呢?
开箱即可使用相当离奇的Esc + F移动到下一个单词的开头, Esc + B移动到当前单词的开头。
在Mac OS X上 – 以下键盘快捷键默认工作。 请注意,您必须在“terminal”偏好设置(在“键盘”选项卡下)中将“
- alt⌥+ F一个字跳跃向前
- alt⌥+ B一个字跳了起来
我观察到用于简单文本导航的默认emacs键绑定似乎在bash shell上工作。 您可以使用
- alt + D删除从当前光标位置开始的一个字
- ctrl + A跳转到行首
- ctrl + E跳转到行尾
- ctrl + K从光标位置开始杀掉行
- ctrl + Y从kill buffer中粘贴文本
- 按Ctrl + R来反转search您从历史logging中input的过去的命令
- CTRL + S转发search(在zsh工作,但不bash)
- 按Ctrl + F向前移动一个字符
- 按Ctrl + B向后移动一个字符
- 按Ctrl + W从光标位置向后删除单词
这是你如何做到的
默认情况下,terminal有这些快捷方式可以逐字(左和右)移动:
- esc + B (左)
- esc + F (右)
您可以configurationalt + ←和→为您生成这些序列:
- 打开terminal首选项( cmd + , );
- 在设置选项卡上,select键盘并双击
⌥ ←
如果它在那里,或者如果不是,则添加它。 - 根据需要设置修改器,然后在框中input快捷键: esc + B ,生成文本
\033b
(不能手动input此文本)。 - 重复单词右键( esc + F变成
\033f
)
另外,你可以参考这个博客张贴textmate:
切换到iTerm2 。 这是免费的,比普通旧terminal更好。 另外它还有更多的自定义选项,比如键盘快捷键。
另外我喜欢你可以使用cmd
和1-9切换标签。 尝试一下,你永远不会回到常规terminal:)
如何在iterm2中设置自定义键盘首选项
- 安装iTerm2
- 启动,然后转到偏好窗格。
- select键盘configuration文件选项卡
- 您需要将configuration文件复制到新的configuration文件中,然后删除箭头键快捷键(
^ right / left arrow
或者如果您不关心备份,只需从默认configuration文件中删除即可。 - 接下来确保您的修改后的configuration文件被选中(加星标)
- 现在select键盘选项卡(非常顶行)
- 点击加号button添加一个新的键盘快捷键
- 在第一个框中键入
CMD + left arrow
- 在第二个框中select“发送转义码”
- 在第三个框中键入字母B.
- 重复所需的组合键。
escape + B
向左移动一个单词,escape + f
向右移动一个单词。 - 你也可以设置cmd + d,用
escape + d
删除光标前面的单词
我经常用箭头键敲错button(cmd / control / alt),所以我有我的箭头组合键与所有设置为跳转前进和后退单词的button,但请做适合你最好的。
其实有一个更好的方法。 按住选项,左右方向键按字移动。 就那么简单。
选项 ←
选项 →
另外ctrl e会带你到行的末尾, ctrl a会带你到开始。
我有Alt + ← / →工作:打开首选项»设置»键盘 ,设置光标向左选项的条目发送string到shell:\ 033b ,并设置选项向右光标 发送string到shell:\ 033f 。 您也可以将其用于其他控制组合。
实际上它取决于你使用的是什么shell,但是大多数shell有类似的绑定。 你所指的绑定(例如Ctrl + A和Ctrl + E )是你在许多其他程序中可以find的绑定,它们被用于很多年龄段,BTW也适用于大多数UI应用程序。
下面是Bash的默认绑定:
最重要的Bash键盘快捷键
还请注意,您可以自定义它们。 你需要创build一个文件,名字,如你所愿,我命名我的.bash_key_bindings并把它放到我的主目录。 在那里你可以设置一些常规的bash选项,你也可以设置键绑定。 为了确保它们被应用,你需要修改一个名为“.bashrc”的文件,bash在启动时读入(如果它不存在,你必须创build它)并在那里进行下面的调用:
bind -f ~/.bash_key_bindings
〜表示bash中的主目录,如上所述,您可以根据需要命名该文件,也可以将其放在您喜欢的位置,只要您input正确的path+名称进行绑定即可。
让我给你看一些我的.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
这些确保只有字符只是确保字符是“键入”(他们自己插入到shell中)。
"\C-dW": kill-word "\C-dL": kill-line "\C-dw": backward-kill-word "\C-dl": backward-kill-line "\C-da": kill-line
这很有趣。 如果我单独按Ctrl + D (我select了d删除),没有任何反应。 但是如果我input一个小写字母w,光标左边的单词就会被删除。 如果我input一个大写字母,但是,光标右边的单词被杀死。 关于从光标开始的整行,l和L也是一样的。 如果我input“a”,整行就会被删除(光标前后的所有内容)。
我在Ctrl + F上向前跳一个单词,在Ctrl + B上向后跳一个单词
"\Cf": forward-word "\Cb": backward-word
正如你所看到的,你可以创build一个快捷方式,立即引发一个动作,或者你可以创build一个只属于一个字符序列的快捷方式,然后你必须input一个(或多个)字符来引起一个动作如上面的示例中所示。
所以,如果你对默认绑定不满意,可以随意自定义它们。 这是一个链接到bash手册的更多信息。
如果在首选项的键盘选项卡中选中“ Use option as meta key
,则前向和后向字的默认emacs样式命令分别为⌥F
( Alt + F )和⌥B
( Alt + B )。
我build议阅读从Bash到Z-Shell 。 如果你想增加你的bash / zsh的实力!
如果你碰巧是一个Vim用户,你可以尝试bash的vim模式。 运行这个或者把它放在你的~/.bashrc
文件中:
set -o vi
默认情况下你处于插入模式; 命中逃生,你可以像在正常模式Vim中一样移动 ,所以按字移动是w
或b
,而通常的移动键也可以工作 。
从Mac OS X Lion 10.7开始,terminal默认将选项 – 左/右箭头映射到Esc – b / f ,所以现在内置了bash和其他使用这些emacs兼容的按键绑定的程序。
在Bash中,这些绑定到Esc – B和Esc – F 。 Bash有许多更多的键盘快捷方式; 看看bind -p
的输出来看看它们是什么。