我可以看到Ctrl+ left/right跳转到行的开头/结尾。如何将其更改为Cmd+ left/ right arrow?
14 回答
在 iTerm2 中添加以下配置文件快捷键
为了 | 行动 | 发送 |
---|---|---|
⌘ ←</td> | “发送十六进制代码” | 0x01 |
⌘ →</td> | “发送十六进制代码” | 0x05 |
⌥ ←</td> | “发送 ESC 序列” | b |
⌥ →</td> | “发送 ESC 序列” | F |
这是给需要的人的视觉效果
要在 iTerm2 中的单词和行首/行尾之间跳转,请选择以下两种解决方案之一。
1.简单的解决方案(推荐)
- 打开首选项
- 单击“个人资料”选项卡
- 在左侧列表中选择一个配置文件(例如“默认”)
- 单击“密钥”选项卡
- 单击“键映射”选项卡(如果存在)
- 单击“预设”下拉菜单并选择“自然文本编辑”
注意:如果您有多个配置文件(fe 默认和热键窗口)并希望对所有配置文件应用相同的修改,请改用以下步骤:
- 单击“密钥”选项卡
- 选择“键绑定”
2. 手动映射键(高级)
如果您不想使用上面提到的“自然文本编辑”预设,您可以手动映射您需要的键:
- 打开首选项
- 单击“个人资料”选项卡
- 在左侧列表中选择一个配置文件(例如“默认”)
- 单击“密钥”选项卡
- 单击“键映射”选项卡(如果存在)
- 点击
[+]
图标 - 添加下表中的快捷方式
捷径 | 描述 | 行动 | 发送 |
---|---|---|---|
⌘ ←</td> | 跳到行首 | “发送十六进制代码” | 0x01 |
⌘ →</td> | 跳到行尾 | “发送十六进制代码” | 0x05 |
⌘ ← 删除 | 删除行 | “发送十六进制代码” | 0x15 |
⌥ ←</td> | 跳转到词首 | “发送十六进制代码” | 0x1b 0x62 |
⌥ →</td> | 跳转到单词的开头结尾 | “发送十六进制代码” | 0x1b 0x66 |
⌥ ← 删除 | 删除单词 | “发送十六进制代码” | 0x1b 0x08 |
⌘ z | 撤消 | “发送十六进制代码” | 0x1f |
笔记
如果上述快捷键已经存在键盘绑定,则必须删除它们才能使新快捷键生效。
我看到已经有很多很好的答案,但这应该提供最接近本机 OSX 功能的不仅仅是你的 shell。我验证这在 ZSH、Bash、node、python -i、iex 和 irb/pry 会话中有效(使用 rb-readline gem 进行 readline,但应该适用于所有人)。
打开 iTerm 首选项⌘</kbd>+, and navigate to the Profiles
tab (the Keys
tab can be used, but adding keybinding to your profile allows you to save your profile and sync it to multiple computers) and keys
sub-tab and enter the following:
删除光标左侧的所有字符
⌘</kbd>+←Delete Send Hex Codes:
0x15
更兼容,但有时功能是删除整行,而不仅仅是光标左侧的字符。我个人使用它,然后覆盖我的 zsh bindkey^U
以仅删除光标左侧的内容(见下文)。或者
0x18 0x7f
兼容性较差,在 node 中不起作用,默认情况下在 zsh 中不起作用,请参阅下文以修复 zsh(bash/irb/pry 应该没问题),在它起作用时执行所需的功能。
删除光标右侧的所有字符
⌘</kbd>+fn+←Delete or ⌘</kbd>+Delete→</kbd> Send Hex Codes:
0x0b
删除光标左侧的一个单词
⌥</kbd>+←Delete Send Hex Codes:
0x1b 0x08
Elixir 的 IEX 中断,似乎在其他任何地方都可以正常工作或者
0x17
在任何地方都可以使用,但不会在 IRB 中的正常分词处停止,而是会删除,直到看到文字空间。
删除光标右侧的一个单词
⌥</kbd>+fn←Delete or ⌥</kbd>+Delete→</kbd> Send Hex Codes:
0x1b 0x64
将光标移动到行首
⌘</kbd>+←</kbd> Send Hex Codes:
0x01
将光标移动到行尾
⌘</kbd>+→</kbd> Send Hex Codes:
0x05
将光标左移一个字
⌥</kbd>+←</kbd> Send Hex Codes:
0x1b 0x62
将光标向右移动一个单词
⌥</kbd>+→</kbd> Send Hex Codes:
0x1b 0x66
撤消
⌘</kbd>+z Send Hex Codes:
0x1f
Redo通常不绑定在 bash、zsh 或 readline 中,因此我们可以将其设置为未使用的 hexcode,然后我们可以在 zsh 中修复
⇧</kbd>+⌘</kbd>+Z or ⌘</kbd>+y Send Hex Codes:
0x18 0x1f
现在如何解决任何不起作用的问题
对于 zsh,您可以为尚未功能的设置绑定 ⌘</kbd>+←Delete and ⇧</kbd>+⌘</kbd>+Z/⌘</kbd>+y by running:
# changes hex 0x15 to delete everything to the left of the cursor,
# rather than the whole line
$ echo 'bindkey "^U" backward-kill-line' >> ~/.zshrc
# binds hex 0x18 0x7f with deleting everything to the left of the cursor
$ echo 'bindkey "^X\\x7f" backward-kill-line' >> ~/.zshrc
# adds redo
$ echo 'bindkey "^X^_" redo' >> ~/.zshrc
# reload your .zshrc for changes to take effect
$ source ~/.zshrc
我找不到在 bash 或 readline 中添加重做的解决方案,所以如果有人知道其中任何一个的解决方案,请在下面发表评论,我会尝试添加它们。
对于任何正在寻找有关如何将键序列转换为十六进制的查找表的人,我发现此表非常有用。
按照上面列出的教程在iterm2中设置您的关键首选项。
- 创建一个新的快捷键
- 选择“发送转义序列”作为操作
- 然后,设置cmd-left,在下面的文本中:
- 输入行[H开始或
- 输入[F为行尾
- 输入行[H开始或
对于想要在 iTerm2 中转到行尾或行首的任何人的快速参考,以上链接 http://hackaddict.blogspot.com/2007/07/skip-to-next-or-previous-word- in-iterm.html 指出在 iTerm2 中:
- Ctrl+ A,跳转到行首,而
- Ctrl+ E,跳到行尾。
我使用了Travis 答案,并创建了一个动态配置文件,您可以根据其说明导入。
GabLeRoux/iterm2-macos-dynamic-profile
说明在自述文件中,导入它比手动添加它们要快得多。我根据@gooli 的要求做了这个回答,因为这被隐藏在评论中。希望你喜欢这个
只是为了帮助任何遇到相同问题但专门将 Zsh shell 与 iTerm 2 一起使用的人。事实证明 Zsh无法/etc/inputrc
正确读取,因此无法理解您通过首选项设置的任何键绑定!
要解决此问题,您需要在.zshrc
文件中添加一些键绑定,例如:
# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line
请注意上面示例中“e”之前的反斜杠,链接的文章没有显示它们,因此.zshrc
在添加绑定时将它们添加到您的文件中。
唯一适用于移动到行首和行尾的是
⌘← "SEND ESC SEQ" OH
- 移动到行首
⌘→ "SEND ESC SEQ" OF
- 移动到行尾
老式的 emacs 绑定仍然可以在 iterm2 和 os x 终端中工作:
首选项 -> 配置文件 -> 键(配置文件中的子选项卡)
- 设置
Left/Right option <kbd>⌥</kbd> key acts as +Esc
(在 os x 终端中类似)
这应该启用alt-f并且alt-b逐字移动。(仍然ctrl-a并且ctrl-e总是像往常一样工作)
如果设置为meta
那些旧绑定将起作用,而某些 iterm2 绑定不可用。
正如在此处解释的那样,您可以通过简单的步骤来完成:
默认情况下,单词跳转(选项 + → 或 ←)和单词删除(选项 + 退格)不起作用。要启用这些,请转到“iTerm → 首选项 → 配置文件 → 键 → 加载预设... → 自然文本编辑 → 繁荣!头部爆炸”
bind -p
将在您的外壳中显示绑定转义键的列表,这可能有助于为您提供更多想法/搜索词。
在https://aaronaddleman.com/articles/hexcodes-and-iterm/中解释
您可以使用xxd -psd
获取密钥十六进制代码。
对我来说,以下组合有效:
| Key Action Esc+ End result |
|-----------------------------------------------------|
| ⌘</kbd>←</kbd> Send Escape Sequence a Send ^[ a |
| ⌘</kbd>→</kbd> Send Escape Sequence e Send ^[ e |