关闭。此问题不符合 Stack Overflow 准则。它目前不接受答案。我们不允许在 Stack Overflow 上提出有关通用计算硬件和软件的问题。您可以编辑问题,使其成为 Stack Overflow 的主题。去年关闭。改进这个问题
我可以看到 Ctrl+left/right 跳转到行的开头/结尾。如何将其更改为 Cmd+左/右箭头?
在 iTerm2 中添加以下配置文件快捷键
FOR ACTION SEND ⌘ ← "SEND HEX CODE" 0x01 ⌘ → "SEND HEX CODE" 0x05 ⌥ ← "SEND ESC SEQ" b ⌥ → "SEND ESC SEQ" f
这是给需要的人的视觉效果
https://i.imgur.com/djgBBQ3.png
要在 iTerm2 中的单词和行首/行尾之间跳转,请选择以下两种解决方案之一。
1.简单的解决方案(推荐)
打开首选项 单击“配置文件”选项卡 在左侧列表中选择配置文件(例如“默认”) 单击“键”选项卡 单击“键映射”选项卡(如果存在)单击“预设”下拉菜单并选择“自然文本编辑” "
https://i.stack.imgur.com/NLIVi.gif
注意:如果您有多个配置文件(fe 默认和热键窗口)并希望对所有配置文件应用相同的修改,请改用以下步骤:
单击“键”选项卡选择“键绑定”
2. 手动映射键(高级)
如果您不想使用上面提到的“自然文本编辑”预设,您可以手动映射您需要的键:
打开首选项 单击“配置文件”选项卡 在左侧列表中选择一个配置文件(例如“默认”) 单击“键”选项卡 单击“键映射”选项卡(如果存在) 单击 [+] 图标 从表中添加快捷方式以下
快捷键 描述 动作 SEND ⌘ ← 跳转到行首“SEND HEX CODE” 0x01 ⌘ → 跳转到行尾“SEND HEX CODE” 0x05 ⌘ ← Delete 删除行“SEND HEX CODE” 0x15 ⌥ ← 跳转到字首“SEND HEX CODE” 0x1b 0x62 ⌥ → 跳转到字“SEND HEX CODE”的开头结尾 0x1b 0x66 ⌥ ← DELETE 删除字“SEND HEX CODE” 0x1b 0x08 ⌘ z 撤消“SEND HEX CODE” 0x1f
笔记
如果上述快捷键已经存在键盘绑定,则必须删除它们才能使新快捷键生效。
Says send Hex Codes: 0x1b 0x1b 0x5b 0x44
。如果人们不想删除它,会很高兴知道。
set -o emacs
我看到已经有很多很好的答案,但这应该提供最接近本机 OSX 功能的不仅仅是你的 shell。我验证这在 ZSH、Bash、node、python -i、iex 和 irb/pry 会话中有效(使用 rb-readline gem 进行 readline,但应该适用于所有人)。
打开 iTerm 首选项 ⌘+, 并导航到 Profiles
选项卡(可以使用 Keys
选项卡,但将键绑定添加到您的配置文件允许您{1 } 并将其同步到多台计算机)和 keys
子选项卡并输入以下内容:
删除光标左侧的所有字符
⌘+←Delete Send Hex Codes: 0x15 更兼容,但有时功能是删除整行而不是光标左侧的字符。我个人使用它,然后为 ^U 覆盖我的 zsh 绑定键,以仅删除光标左侧的内容(见下文)。或 0x18 0x7f 不太兼容,在节点中不起作用,默认情况下在 zsh 中不起作用,请参阅下面修复 zsh(bash/irb/pry 应该没问题),在它起作用时执行所需的功能。
删除光标右侧的所有字符
⌘+fn+←Delete 或 ⌘+Delete→ 发送十六进制代码:0x0b
删除光标左侧的一个单词
⌥+←Delete Send Hex Codes: 0x1b 0x08 Elixir 的 IEX 中的中断,似乎在其他任何地方都可以正常工作或 0x17 在任何地方都可以正常工作,但不会在 IRB 中的正常单词中断处停止,而是会删除,直到它看到一个文字空间。
删除光标右侧的一个单词
⌥+fn←Delete 或 ⌥+Delete→ 发送十六进制代码:0x1b 0x64
将光标移动到行首
⌘+← 发送十六进制代码:0x01
将光标移动到行尾
⌘+→ 发送十六进制代码:0x05
将光标左移一个字
⌥+← 发送十六进制代码:0x1b 0x62
将光标向右移动一个单词
⌥+→ 发送十六进制代码:0x1b 0x66
撤消
⌘+z 发送十六进制代码:0x1f
Redo 通常不绑定在 bash、zsh 或 readline 中,因此我们可以将其设置为未使用的 hexcode,然后我们可以在 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 中添加重做的解决方案,所以如果有人知道其中任何一个的解决方案,请在下面发表评论,我会尝试添加它们。
对于正在寻找有关如何将键序列转换为十六进制的查找表的任何人,我发现 this table 非常有帮助。
echo
前面的 $
感到困惑(只是删除它?)。除此之外,它是完美的。谢谢你。
bindkey | grep "\^\[b"
,它会告诉您在设置后是否有其他内容覆盖它。它应该只返回 #=> "^[b" backward-word
。如果它被覆盖,您必须找到它被覆盖的位置并将其删除。如果这不可行,您可以运行 echo 'bindkey "^[b" backward-word' >> ~/.zshrc
,它会将其添加到 .zshrc
的最后一行,然后重新启动 iTerm,它应该可以工作
keys
选项卡,看看它是否也将 ⌥
+←
映射到某些东西。如果是这样删除它。您可以通过快速按 esc
释放,然后按 b
来测试您的 b
是否正常工作。那应该向左跳一个字。或者,您可以将 ⌥
+←
映射到十六进制 0x1b 0x42
或 0x1b 0x5b 0x31 0x3b 0x35 0x44
。我证实这两个都对我有用。我真的认为您的 ⌥
+←
在 iTerm 中被覆盖,无论是在您的 profile
keys
标签或 keys
标签。
在 iTerm 3.0.12 中,您可以切换到 Natural Text Editing
预设:
https://i.stack.imgur.com/OsZFw.png
iTerm → 首选项 → 配置文件 → 键
警告 因为它是一个预设,它可以覆盖你之前绑定的键。因此,最好在应用预设之前保存您当前的键绑定。
warning
按照上面列出的教程在 iterm2 中设置您的关键首选项。
创建一个新的快捷键 选择“发送转义序列”作为操作然后,设置 cmd-left,在下面的文本中:输入 [H for line start OR Enter [F for line end
对于想要在 iTerm2 中转到行尾或行首的任何人的快速参考,上面的链接 http://hackaddict.blogspot.com/2007/07/skip-to-next-or-previous-word-in-iterm.html 在 iTerm2 中指出:
Ctrl+A,跳转到行首,同时
Ctrl+E,跳到行尾。
ctrl
+ A
可以开始行,但找不到行尾。这需要标记为答案。
我使用了 Travis answer,并创建了一个动态配置文件,您可以根据其说明导入。
GabLeRoux/iterm2-macos-dynamic-profile
说明在自述文件中,导入它比手动添加它们要快得多。我根据@gooli 的要求做了这个回答,因为这被隐藏在评论中。希望你喜欢这个🍻
只是为了帮助任何遇到相同问题但专门将 Zsh shell 与 iTerm 2 一起使用的人。事实证明,Zsh doesn't read /etc/inputrc
properly 无法理解您通过首选项设置的任何键绑定!
要解决此问题,您需要向 .zshrc
文件添加一些键绑定,例如:
# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line
请注意上面示例中“e”之前的反斜杠,链接的文章没有显示它们,因此在添加绑定时将它们添加到您的 .zshrc
文件中。
唯一适用于移动到行首和行尾的是
⌘← "SEND ESC SEQ" OH
- 移至行首
⌘→ "SEND ESC SEQ" OF
- 移至行尾
老式的 emacs 绑定仍然可以在 iterm2 和 os x 终端中工作:
首选项 -> 配置文件 -> 键(配置文件中的子选项卡)
设置左/右选项 ⌥ 键充当 +Esc (类似于 os x 终端)
这应该启用 alt-f 和 alt-b 来逐字移动。 (仍然 ctrl-a 和 ctrl-e 总是照常工作)
如果设置为 meta
,这些旧绑定将起作用,而某些 iterm2 绑定不可用。
如 here 中所述,您可以通过简单的步骤来完成:
默认情况下,单词跳转(选项 + → 或 ←)和单词删除(选项 + 退格)不起作用。要启用这些,请转到“iTerm → 首选项 → 配置文件 → 键 → 加载预设... → 自然文本编辑 → 繁荣!头部爆炸”
bind -p
将在您的 shell 中显示绑定转义键的列表,这可能有助于为您提供更多想法/搜索词。
bind -p
仅适用于 zsh、csh tcsh、使用 bindkey
的 Bourne shell(bash、sh)。
对我来说,以下组合有效:
按键操作 Esc+ 最终结果 ⌘← 发送转义序列 a 发送 ^[ a ⌘→ 发送转义序列 e 发送 ^[ e
不定期副业成功案例分享
⌘← "SEND ESC SEQ" OH
和用于 End 的⌘→ "SEND ESC SEQ" OF
(它们是大写的 'o' 而不是零)。这模拟了实际按下 Home 和 End 键,因此可以在 bash、vim 等中工作。