我可以看到Ctrl+左/右跳转到行首/行尾。如何将此更改为Cmd+左/右箭头?


当前回答

按照上面列出的教程在iterm2中设置关键首选项。

创建一个新的快捷键 选择“发送转义序列”作为动作 然后,设置cmd-left,在下面的文本中: 输入[H为line start 或 输入[F为行结束

其他回答

我已经看到了很多好的答案,但这应该提供最接近本机OSX的功能,而不仅仅是在您的shell中。我验证了这在ZSH, Bash, node, python -i, iex和irb/pry会话中工作(使用rb-readline gem for readline,但应该适用于所有)。

打开iTerm首选项⌘+,并导航到Profiles选项卡(可以使用Keys选项卡,但将密钥绑定添加到配置文件中可以保存配置文件并将其同步到多台计算机)和Keys子选项卡,并输入以下内容:

删除光标左侧的所有字符

⌘+←删除发送Hex code: 0x15更加兼容,但功能有时是删除整行,而不仅仅是光标左侧的字符。我个人使用这个,然后覆盖^U的zsh bindkey,只删除光标左侧的东西(见下文)。 或 0x18 0x7f不太兼容,在节点中不工作,默认情况下也不会在zsh中工作,请参见下面来修复zsh (bash/irb/pry应该没问题),当它工作时执行所需的功能。

删除光标右侧的所有字符

⌘+fn+←Delete或⌘+Delete→发送十六进制代码:0x0b

删除光标左边的一个字

发送十六进制编码: 0x1b 0x08 Elixir的IEX中断,似乎在其他地方工作正常 或 0x17在任何地方都可以工作,但不会在IRB中的正常换行符处停止,而是会删除,直到看到文字空格。

删除光标右边的一个字

“发送十六进制代码”:0x1b 0x64

移动光标到行前

⌘+←发送十六进制代码:0x01

将光标移动到行尾

⌘+→发送十六进制代码:0x05

将光标向左移动一个字

←发送十六进制代码:0x1b 0x62

向右移动光标一个字

发送十六进制代码:0x1b 0x66

Undo

⌘+z发送十六进制代码:0x1f

重做通常不绑定在bash, zsh或readline中,所以我们可以将它设置为一个未使用的hexcode,然后在zsh中修复

+⌘+Z或⌘+y发送十六进制代码:0x18 0x1f

现在如何修复任何不工作

对于zsh,可以为尚未具有功能的对象设置绑定 ⌘+←Delete +⌘+Z/⌘+y

# 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为line start 或 输入[F为行结束

在iTerm2中添加以下配置文件快捷键

FOR ACTION SEND
⌘ ← "SEND HEX CODE" 0x01
⌘ → "SEND HEX CODE" 0x05
⌥ ← "SEND ESC SEQ" b
⌥ → "SEND ESC SEQ" f

这里有一个视觉给那些需要它的人

在iTerm 3.0.12中,您可以切换到自然文本编辑预设:

iTerm→首选项→配置文件→键

警告因为它是一个预设,它可以覆盖你之前绑定的键。因此,最好在应用预设之前保存当前的键绑定。

正如这里所解释的,你可以通过简单的步骤来做到:

默认情况下,单词跳转(option +→或←)和单词删除(option + 退格键)不工作。要启用这些,请转到“iTerm→Preferences→” 配置文件→按键→加载预设…→自然文本编辑→Boom!头 爆炸”