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
这是一个需要它的人的视觉
要在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)
这应该使用alt – f和alt – b来逐词移动单词。 (仍ctrl – a和ctrl – e总是像往常一样工作)
如果设置为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文件→按键→加载预设…→自然文本编辑→热潮!爆炸头”