iTerm 2:如何设置键盘快捷键跳转到开始/结束行?

我可以看到Ctrl + / 跳转到行的开始/结尾。 如何将其更改为Cmd + / 右箭头

为了得到Alt + / 右箭头正确工作,跳字按照这篇文章 。

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

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

这是一个需要它的人的视觉

iTerm添加关键视觉

要在iTerm2中的单词和行的开始/结尾之间跳转,请执行以下步骤:

  • iTerm2 – >首选项( +
  • 打开“密钥”选项卡
  • 添加以下全局快捷键

将光标左移一个字

  • 键盘组合: +
  • 行动:发送hex代码
  • 代码: 0x1b 0x62

向右移动光标一个字

  • 键盘组合: +
  • 行动:发送hex代码
  • 代码: 0x1b 0x66

将光标移动到行首

  • 键盘组合: +
  • 行动:发送hex代码
  • 代码: 0x01

移动光标到行尾

  • 键盘组合: +
  • 行动:发送hex代码
  • 代码: 0x05

删除单词

  • 键盘组合: + ←删除
  • 行动:发送hex代码
  • 代码: 0x1b 0x08

删除行

  • 键盘组合: + ←删除
  • 行动:发送hex代码
  • 代码: 0x15

解开

  • 键盘组合: + z
  • 行动:发送hex代码
  • 代码: 0x1f

不要忘记删除以前的绑定

  • 打开“configuration文件”选项卡
  • 点击子选项卡“Keys”
  • 删除组合键ma + + 的映射

我已经看到了很多很好的答案,但是这应该提供最接近本地OSXfunction的function,而不仅仅是在您的shell中。 我证实,这在ZSH,Bash,节点,python -i,iex和irb / pry会话(对于readline使用rb-readline gem,但应该适用于所有)中起作用。

打开iTerm首选项 + 然后导航到“ Profiles选项卡(可以使用“ Keys选项卡,但向configuration文件添加Keys绑定允许您保存configuration文件并将其同步到多台计算机)和keys子选项卡并input以下内容:

删除光标左侧的所有字符

+ ←删除发送hex代码:

0x15更兼容,但function有时是删除整行,而不是光标左侧的字符。 我个人使用这个,然后覆盖我的zsh绑定键^U只删除光标左边的东西(见下文)。

要么

0x18 0x7f不兼容,不能在节点工作,默认情况下不能在zsh中工作, 见下面修复zsh (bash / irb / pry应该没问题),当它工作时执行所需的function。

删除光标右侧的所有字符

+ fn + ←删除 + 删除→发送hex代码: 0x0b

删除光标左边的一个字

+ ←删除发送hex代码:

0x1b 0x08在Elixir的IEX打破,似乎在其他地方工作正常

要么

0x17在任何地方都可以使用,但是不会停留在IRB中正常的单词分隔,而是直到它看到一个文字空间。

删除光标右侧的一个单词

+ fn ←删除 + 删除→发送hex代码: 0x01b 0x64

将光标移动到行的前面

+ 发送hex码: 0x01

将光标移动到行尾

+ 发送hex码: 0x05

将光标左移一个字

+ 发送hex代码: 0x1b 0x62

向右移动光标一个字

+ 发送hex码: 0x1b 0x66

解开

+ z发送hex代码: 0x1f

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

+ + Z + y发送hex代码: 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 

我无法find在bash或readline中添加重做的解决scheme,所以如果有人知道其中任何一个的解决scheme,请在下面评论,我会尝试添加它们。

对于任何人查找关于如何将键序列转换为hex的查找表,我觉得这个表非常有帮助。

按照上面列出的教程设置iterm2中的密钥首选项。 要将cmd-left设置为line start,请创build新的快捷键。 select“Send escape sequence”作为动作,在下面的文本字段中select“H”(不带引号),对于行尾,使用“F”。

在iTerm 3.0.12中,您可以切换到Natural Text Editing预设:

在这里输入图像说明

iTerm→首选项→configuration文件→密钥

只是为了帮助任何人有相同的问题,但专门使用iTerm 2的Zsh shell。事实certificate,Zsh 没有正确读取/etc/inputrc ,因此无法理解您通过首选项设置的任何键绑定!

为了解决这个问题,你需要在你的.zshrc文件中添加一些键绑定,比如:

 # key bindings bindkey "\e[1~" beginning-of-line bindkey "\e[4~" end-of-line 

请注意上面示例中的反斜杠,在“e”之前,链接的文章不会显示它们,所以在添加绑定时将它们添加到您的.zshrc文件中。

对于任何想要在iTerm2中结束行或行首的人来说,上面的链接http://hackaddict.blogspot.com/2007/07/skip-to-next-or-previous-word- iterm.html指出,在iTerm2中:

  • Ctrl + A ,同时跳转到行首
  • Ctrl + E ,跳转到行尾。

老式的emacs绑定仍然可以在iterm2和os xterminal上运行:

首选项 – >configuration文件 – >键(configuration文件中的子选项卡)

  • 设置Left/Right option <kbd>⌥</kbd> key acts as +Esc (类似于os xterminal)

这应该使用altfaltb来逐词移动单词。 (仍ctrlactrle总是像往常一样工作)

如果设置为meta这些旧的绑定将工作,而一些iterm2绑定不可用。

bind -p会显示你shell中的绑定转义键列表,这可能会给你更多的想法/search条件。

对我而言,以下组合起作用:
| Key Action Esc+ End result | |-----------------------------------------------------| | Send Escape Sequence a Send ^[ a | | Send Escape Sequence e Send ^[ e |

正如在这里的解释,你可以用一个简单的步骤来做到这一点:

默认情况下,单词跳转(选项+→或←)和单词删除(选项+退格)不起作用。 要启用这些function,请转到“iTerm→首选项→configuration文件→按键→加载预设…→自然文本编辑→热潮!爆炸头”