OS X 终端中有没有办法逐字移动光标?
-
09-06-2019 - |
题
我知道组合 控制键+A 跳转到当前命令的开头,并且 控制键+乙 跳到最后。
但是有没有办法逐字跳转,比如 替代+←/→ 在Cocoa应用程序中呢?
解决方案
开箱即用,你可以使用相当奇怪的 Esc键+F 移动到下一个单词的开头并且 Esc键+乙 移动到当前单词的开头。
其他提示
在 Mac OS X 上 - 默认情况下可以使用以下键盘快捷键。请注意,您必须使 选项 关键行为就像 元 在终端首选项中(在键盘选项卡下)
- 替代 (⌥)+F 跳 F一句话简介
- 替代 (⌥)+乙 跳 乙差一个字
我发现用于简单文本导航的默认 emacs 键绑定似乎适用于 bash shell。您可以使用
- 替代 (⌥)+D 删除从当前光标位置开始的单词
- 控制键+A 跳到行首
- 控制键+乙 跳到行尾
- 控制键+K 终止从光标位置开始的行
- 控制键+是 从终止缓冲区粘贴文本
- 控制键+右 从历史记录中反向搜索您过去输入的命令
- 控制键+S 转发搜索(对我来说适用于 zsh,但不适用于 bash)
- 控制键+F 向前移动一个字符
- 控制键+乙 向后移动一个字符
- 控制键+瓦 从光标位置向后删除单词
默认情况下,终端具有以下用于逐字移动(向左和向右)的快捷键:
- Esc键+乙 (左边)
- Esc键+F (正确的)
您可以配置 替代+← 和 → 为您生成这些序列:
- 打开终端首选项(指令+,);
- 在“设置”选项卡中,选择“键盘”并双击
⌥ ←
如果存在,则添加;如果不存在,则添加。 - 根据需要设置修饰符,然后在框中键入快捷键: Esc键+乙, ,生成文本
\033b
(您无法手动输入此文本)。 - 重复单词右侧 (Esc键+F 变成
\033f
)
或者,您可以参考 textmate 上的这篇博文:
切换到 iTerm2. 。它是免费的,而且比普通的旧终端好得多。它还具有更多自定义选项,例如键盘快捷键。
我也喜欢你可以使用 指令 和 1-9 在选项卡之间切换。尝试一下,您将永远不会回到常规终端:)
如何在 iterm2 中设置自定义键盘首选项
- 安装iTerm2
- 启动然后转到首选项窗格。
- 选择键盘配置文件选项卡
- 您需要将配置文件复制到新的内容,然后删除箭头键快捷键,例如 ^+ 正确的/左边 或者,如果您不关心备份,只需从默认配置文件中删除它们即可。
- 接下来确保选择您修改后的个人资料(已加星标)
- 现在选择键盘选项卡(最顶行)
- 单击加号按钮添加新的键盘快捷键
- 在第一个框中输入 指令管理系统+左箭头
- 在第二个框中选择“发送转义码”
- 在第三个框中输入字母 乙
- 使用所需的组合键重复此操作。 逃脱+乙 向左移动一个单词, 逃脱+F 向右移动一个单词。
- 您可能还希望设置 指令+d 删除光标前面的单词 逃脱+d
我经常按错按钮(指令 / 控制 / 替代)用箭头键,所以我有我的箭头键组合,这些按钮都设置为向前和向后跳跃单词,但请做最适合你的事情。
实际上有更好的方法。抓住 选项 ( 替代 在某些键盘上),然后按向左或向右箭头键按单词移动。就那么简单。
选项←
选项→
还 控制键e 将带您到队列的末尾并且 控制键A 将带您回到起点。
我有 替代+←/→ 在职的:打开 首选项 » 设置 » 键盘, ,设置条目 选项光标向左 到 发送字符串到 shell:\033b, ,并设置 选项光标向右 到 发送字符串到 shell:\033f. 。您还可以将其用于其他控制键组合。
实际上这取决于您使用的 shell,但是大多数 shell 都有类似的绑定。您所指的绑定(例如 控制键+A 和 控制键+乙)是您可以在许多其他程序中找到的绑定,它们已经使用了很长时间,顺便说一句,它也适用于大多数 UI 应用程序。
下面是 Bash 的默认绑定:
另请注意,您可以自定义它们。您需要创建一个文件,名称随意,我将其命名为 .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
这些确保字符本身除了确保字符被“键入”之外什么也不做(它们将自身插入到 shell 中)。
"\C-dW": kill-word
"\C-dL": kill-line
"\C-dw": backward-kill-word
"\C-dl": backward-kill-line
"\C-da": kill-line
这很有趣。如果我打 控制键+D 单独(我选择 d 进行删除),什么也没有发生。但如果我随后输入小写 w,则光标左侧的单词将被删除。但是,如果我输入大写字母,光标右侧的单词就会被删除。对于从光标开始的整行,l 和 L 也是如此。如果我输入“a”,则整行实际上被删除(光标之前和之后的所有内容)。
我把向前跳一个字放在 控制键+F 并向后倒一个字 控制键+乙
"\C-f": forward-word
"\C-b": backward-word
正如您所看到的,您可以创建一个快捷方式,立即导致一个操作,或者您可以创建一个快捷方式,仅初始化一个字符序列,然后您必须键入一个(或多个)字符来导致操作发生,如下所示如上面的示例所示。
因此,如果您对默认绑定不满意,请随意根据需要自定义它们。这是一个 bash 手册的链接 了解更多信息。
如果你碰巧是 Vim 用户,你可以尝试 bash 的 vim 模式。运行它或将其放入您的 ~/.bashrc
文件:
set -o vi
默认情况下,您处于插入模式;点击 escape,你就可以像在正常模式 Vim 中一样移动,所以按单词移动是 w
或者 b
, ,以及 常用的移动键也可以使用.
如果你检查 Use option as meta key
在首选项的键盘选项卡中,然后是向前和向后单词的默认 emacs 样式命令以及 ⌥F
(替代+F) 和 ⌥B
(替代+乙) 分别。
我建议阅读 从 Bash 到 Z-Shell. 。如果你想提高你的 bash/zsh 能力!
从 Mac OS X Lion 10.7 开始,终端地图 选项-左/右箭头 到 Esc键-男/女 默认情况下,因此它现在内置于 bash 和其他使用这些 emacs 兼容键绑定的程序。
在 Bash 中,这些必然是 Esc键-乙 和 Esc键-F。Bash 有很多很多的键盘快捷键;看看输出 bind -p
看看它们是什么。
按住 Option 键并单击您希望光标移动的位置