我可以看到 Ctrl + left / right 跳转到行的开头/结尾。如何将此更改为 Cmd + 左 / 右箭头?
为了让 Alt + 左 / 右箭头正确地进行单词跳转,请关注this article。
答案 0 :(得分:619)
在iTerm2中添加以下配置文件快捷键
FOR ACTION SEND
⌘← "SEND HEX CODE" 0x01
⌘→ "SEND HEX CODE" 0x05
⌥← "SEND ESC SEQ" b
⌥→ "SEND ESC SEQ" f
这是一个需要它的人的视觉
答案 1 :(得分:325)
要在iTerm2中的单词和行的开头/结尾之间跳转,请按照以下步骤操作:
向左移动光标
0x1b 0x62
向右移动光标一个字
0x1b 0x66
将光标移动到行首
0x01
将光标移动到行尾
0x05
删除字词
0x1b 0x08
删除行
0x15
<强>撤消强>
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 中设置您的主要偏好设置。
答案 4 :(得分:33)
在iTerm 3.0.12中,您可以切换到Natural Text Editing
预设:
iTerm→偏好设置→配置文件→按键
警告由于它是预设,因此可以覆盖您之前绑定的键。因此,在应用预设之前保存当前的键绑定会更好。
答案 5 :(得分:11)
为了快速参考任何想要在iTerm2中走到行尾或行开头的人,请使用上面的链接 http://hackaddict.blogspot.com/2007/07/skip-to-next-or-previous-word-in-iterm.html 请注意,在iTerm2中:
答案 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 |