我可以看到Ctrl+ left/ right跳到行首/行尾。如何将其更改为Cmd+ left/ right arrow?
为了使Alt+ left/ right arrow正确地工作于跳字,请遵循本文。
我可以看到Ctrl+ left/ right跳到行首/行尾。如何将其更改为Cmd+ left/ right arrow?
为了使Alt+ left/ right arrow正确地工作于跳字,请遵循本文。
Answers:
在iTerm2中添加以下配置文件快捷键
FOR ACTION SEND
⌘← "SEND HEX CODE" 0x01
⌘→ "SEND HEX CODE" 0x05
⌥← "SEND ESC SEQ" b
⌥→ "SEND ESC SEQ" f
这是那些需要它的人的视觉
⌘← "SEND ESC SEQ" OH
于Home和⌘→ "SEND ESC SEQ" OF
End(这些都是大写的'o'而不是零)。这是模拟实际按下Home和End键,并且在bash这种意愿工作,VIM等
到单词之间跳跃和开始/在iTerm2线端挑一个下面的两种溶液。
如果您不想使用上面提到的“自然文本编辑”预设,则可以手动映射所需的键:
[+]
图标向左移动光标一个字
0x1b 0x62
向右移动光标一个字
0x1b 0x66
将光标移到行首
0x01
将光标移到行尾
0x05
删除单词
0x1b 0x08
删除行
0x15
撤消
0x1f
不要忘记删除以前的绑定:
Says send Hex Codes: 0x1b 0x1b 0x5b 0x44
。如果人们不想删除它,将很高兴知道。
我看到已经有了很多好的答案,但是这不仅应该在您的shell中提供尽可能最接近本机OSX的功能。我验证了它在ZSH,Bash,node,python -i,iex和irb / pry会话中都可以工作(使用rb-readline gem作为readline,但应该对所有人有效)。
打开iTerm首选项⌘+ ,并导航至Profiles
选项卡(Keys
可以使用该选项卡,但是向个人资料中添加快捷键允许您保存个人资料并将其同步到多台计算机)和keys
子选项卡并输入以下内容:
删除光标左侧的所有字符
⌘+ ←Delete发送十六进制代码:
0x15
兼容性更高,但有时功能是删除整行而不是仅删除光标左侧的字符。我个人使用它,然后覆盖我的zsh bindkey以便^U
仅删除光标左侧的内容(请参见下文)。要么
0x18 0x7f
兼容性较差,默认情况下在节点中不起作用,并且在zsh中不起作用,请参见下文以修复zsh(bash / irb / pry应该可以),并在工作时执行所需的功能。
删除光标右边的所有字符
⌘+ fn+ ←Delete或⌘+ Delete→发送十六进制代码:
0x0b
删除光标左侧的一个字
⌥+ ←Delete发送十六进制代码:
0x1b 0x08
Elixir的IEX破裂,似乎在其他任何地方都可以正常工作要么
0x17
可以在任何地方使用,但不会在IRB中以正常的断字功能停止,而是会删除,直到看到文字空间为止。
删除光标右边的一个字
⌥+ fn←Delete或⌥+ Delete→发送十六进制代码:
0x1b 0x64
将光标移到行首
⌘+ ←发送十六进制代码:
0x01
将光标移到行尾
⌘+ →发送十六进制代码:
0x05
向左移动光标一个字
⌥+ ←发送十六进制代码:
0x1b 0x62
向右移动光标一个字
⌥+ →发送十六进制代码:
0x1b 0x66
撤消
⌘+ z发送十六进制代码:
0x1f
重做通常不绑定在bash,zsh或readline中,因此我们可以将其设置为未使用的十六进制代码,然后可以在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中添加重做的解决方案,因此,如果有人知道任何一种解决方案,请在下面发表评论,我将尝试在其中添加。
对于寻找有关如何将键序列转换为十六进制的查找表的任何人,我发现此表非常有用。
$
前面的内容感到困惑echo
(只需删除它?)。除此之外,它是完美的。谢谢。
bindkey | grep "\^\[b"
,它将告诉您设置后是否有其他内容将其覆盖。它应该只返回#=> "^[b" backward-word
。如果要覆盖它,则必须找到要覆盖的位置并将其删除。如果那不可能,您可以运行echo 'bindkey "^[b" backward-word' >> ~/.zshrc
它将其添加到您的最后一行.zshrc
,然后重新启动iTerm,它应该可以工作
keys
iTerm首选项中的选项卡,查看它是否也将⌥
+ 映射←
到某些东西。如果是这样,将其删除。您可以b
通过快速按esc
释放,然后按来测试您的工作是否正常b
。那应该向左跳一个字。或者,您可以将⌥
+ 映射←
到十六进制0x1b 0x42
或 0x1b 0x5b 0x31 0x3b 0x35 0x44
。我验证了这两种方法对我都有效。我确实认为您的标签或标签中的iTerm 有⌥
+ ←
被覆盖。profile
keys
keys
按照上面列出的教程在iterm2中设置关键首选项。
要快速参考想在iTerm2中转到行尾或行首的任何人,请使用上面的链接 http://hackaddict.blogspot.com/2007/07/skip-to-next-or-previous-word- in-iterm.html 注意到在iTerm2中:
我使用了Travis答案,并创建了可根据其说明导入的动态配置文件。
GabLeRoux / iterm2-macos-dynamic-profile
说明在自述文件中,与手动添加它们相比,导入它要快得多。我已按照@gooli的要求将此答案设为了答案,因为这已隐藏在评论中。希望你喜欢这个 🍻
只是为了帮助遇到同样问题的人,特别是将Zsh Shell与iTerm 2一起使用。事实证明Zsh 不能/etc/inputrc
正确读取,因此无法理解您通过首选项设置的任何键绑定!
要解决此问题,您需要向.zshrc
文件中添加一些键绑定,例如:
# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line
注意上面示例中的反斜杠“ e”之前,链接的文章没有显示它们,因此.zshrc
在添加绑定时将它们添加到文件中。
bind -p
会在您的外壳中显示绑定的转义键列表,这可能有助于为您提供更多提示/搜索字词。
bind -p
仅在Bourne shell(bash,sh)中对zsh,csh tcsh,use有效bindkey
。
在https://aaronaddleman.com/articles/hexcodes-and-iterm/中进行了解释
您可以xxd -psd
用来获取关键的十六进制代码。
对我而言,以下组合有效:
| Key Action Esc+ End result |
|-----------------------------------------------------|
| ⌘← Send Escape Sequence a Send ^[ a |
| ⌘→ Send Escape Sequence e Send ^[ e |