iTerm 2:如何设置键盘快捷键以跳转到行首/行尾?

时间:2011-06-01 17:18:28

标签: macos bash iterm iterm2

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

为了让 Alt + / 右箭头正确地进行单词跳转,请关注this article

14 个答案:

答案 0 :(得分:619)

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

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

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

iTerm add key visual

答案 1 :(得分:325)

要在iTerm2中的单词和行的开头/结尾之间跳转,请按照以下步骤操作:

  • iTerm2 - >偏好设置( +
  • 打开“密钥”标签
  • 添加以下全局快捷键

向左移动光标

  • 键盘组合: +
  • 操作:发送十六进制代码
  • 代码:0x1b 0x62

向右移动光标一个字

  • 键盘组合: +
  • 操作:发送十六进制代码
  • 代码:0x1b 0x66

将光标移动到行首

  • 键盘组合: +
  • 操作:发送十六进制代码
  • 代码:0x01

将光标移动到行尾

  • 键盘组合: +
  • 操作:发送十六进制代码
  • 代码:0x05

删除字词

  • 键盘组合: + ←删除
  • 操作:发送十六进制代码
  • 代码:0x1b 0x08

删除行

  • 键盘组合: + ←删除
  • 操作:发送十六进制代码
  • 代码:0x15

<强>撤消

  • 键盘组合: + z
  • 操作:发送十六进制代码
  • 代码:0x1f

不要忘记删除以前的绑定

  • 打开“个人资料”标签
  • 点击子标签“关键字”
  • 删除组合键的映射 + +

答案 2 :(得分:220)

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

打开iTerm首选项 + 并导航到Profiles标签(可以使用Keys标签,但添加键绑定到您的个人资料允许您save your profile并将其同步到多台计算机)和keys子标签,并输入以下内容:

删除光标左侧的所有字符

  

+ ←删除发送十六进制代码:

     

0x15更兼容,但功能有时是删除整行,而不仅仅是光标左侧的字符。我个人使用它,然后覆盖^U的zsh bindkey,只删除光标左侧的内容(见下文)。

     

     

0x18 0x7f兼容性较差,在节点中无效,默认情况下无法在zsh中工作,请参阅下文修复zsh (bash / irb / pry应该没问题,在它工作时执行所需的功能。

删除光标右侧的所有字符

  

+ fn + ←删除 + 删除→发送十六进制代码:0x0b

删除光标左侧的一个单词

  

+ ←删除发送十六进制代码:

     

0x1b 0x08 Elixir的IEX中断似乎在其他任何地方都能正常工作

     

     

0x17无处不在,但在IRB中不会停留在正常的分词符号中,而是会删除,直到看到文字空格。

删除光标右侧的一个单词

  

+ fn ←删除 + 删除→发送十六进制代码:0x1b 0x64

将光标移动到行的前面

  

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

将光标移动到行尾

  

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

将光标向左移动

  

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

将光标向右移动一个字

  

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

撤消

  

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

重做通常不会绑定在bash,zsh或readline中,因此我们可以将其设置为未使用的hexcode,然后我们可以在zsh中修复

  

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

现在如何解决任何不能工作的问题

对于zsh,您可以为尚未使用的功能设置绑定 + ←删除 + + 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中添加重做的解决方案,因此如果有人知道其中任何一个的解决方案,请在下方发表评论,我会尝试添加它们。

对于寻找有关如何将键序列转换为十六进制的查找表的任何人,我发现this table非常有帮助。

答案 3 :(得分:45)

按照上面列出的教程在 iterm2 中设置您的主要偏好设置。

  1. 创建新的短信密钥
  2. 选择“发送转义序列”作为操作
  3. 然后,设置 cmd-left ,在下面的文字中:
    • 输入 [ H line start
    • 输入 [ F line end

答案 4 :(得分:33)

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

enter image description here

  

iTerm→偏好设置→配置文件→按键

警告由于它是预设,因此可以覆盖您之前绑定的键。因此,在应用预设之前保存当前的键绑定会更好。

答案 5 :(得分:11)

为了快速参考任何想要在iTerm2中走到行尾或行开头的人,请使用上面的链接  http://hackaddict.blogspot.com/2007/07/skip-to-next-or-previous-word-in-iterm.html 请注意,在iTerm2中:

  • Ctrl + A ,跳转到该行的开头,而
  • Ctrl + E ,跳转到该行的末尾。

答案 6 :(得分:8)

只是为了帮助任何有同样问题的人,但是特别是在iTerm 2中使用Zsh shell。结果是Zsh doesn't read /etc/inputrc properly,因此无法理解你通过首选项设置的任何键绑定!< / p>

要解决此问题,您需要向.zshrc文件添加一些键绑定,例如:

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

请注意上面示例中“s”之前的反斜杠,链接文章没有显示它们,因此在添加绑定时将它们添加到.zshrc文件中。

答案 7 :(得分:6)

我使用了Travis answer,并创建了一个动态配置文件,您可以根据其说明进行导入。

GabLeRoux/iterm2-macos-dynamic-profile

说明在自述文件中,与手动添加它们相比,导入它要快得多。我已按照@gooli的要求将此答案设为了答案,因为这已隐藏在评论中。希望您喜欢

答案 8 :(得分:3)

旧时尚emacs绑定仍然可以在iterm2和os x终端中使用:

偏好设置 - &gt;个人资料 - &gt;键(配置文件中的子选项卡)

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

这应该启用 alt - f alt - b 来按字移动单词。 (仍 ctrl - a ctrl - e 始终照常工作)

如果设置为meta那些旧绑定将起作用,而某些iterm2绑定不可用。

答案 9 :(得分:2)

唯一适用于移至行首和行尾的事情是

⌘← "SEND ESC SEQ" OH-移至行首
⌘→ "SEND ESC SEQ" OF-移至行尾

答案 10 :(得分:1)

bind -p会在您的shell中显示绑定转义键的列表,这可能会为您提供更多想法/搜索字词。

答案 11 :(得分:1)

正如here中的解释,您可以通过一个简单的步骤来完成:

  

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

答案 12 :(得分:1)

https://aaronaddleman.com/articles/hexcodes-and-iterm/

中解释

您可以使用xxd -psd获取密钥十六进制代码。

答案 13 :(得分:0)

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