如何设置键盘快捷键跳转到开始/结束行?

我可以看到Ctrl+/正确的跳转到行首/行尾。如何将此更改为Cmd+/右箭头?

181762 次浏览

按照上面列出的教程在iterm2中设置键首选项。

  1. 创建一个新的快捷键
  2. 选择“发送转义序列”作为动作
  3. 然后,在下面的文本中设置cmd-left:
    • 输入H for 行开始
      或< / >强
    • 行结束输入F
    • 李< / ul > < / >

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

< span style=" font - family:宋体;"> < / th > < span style=" font - family:宋体;"行动> < / th > < span style=" font - family:宋体;"> < / th >发送 < span style=" font - family:宋体;"道明> >⌘←< / < span style=" font - family:宋体;"道明> >⌘→< / < span style=" font - family:宋体;"道明> >⌥←< / < span style=" font - family:宋体;"道明> >⌥→< /
&;SEND HEX CODE" < span style=" font - family:宋体;"> 0 x01 td > < /
&;SEND HEX CODE" < span style=" font - family:宋体;"> 0 x05 td > < /
"SEND ESC SEQ" < span style=" font - family:宋体;"b > < / td >
"SEND ESC SEQ" < span style=" font - family:宋体;"f > < / td >

这里有一个视觉给那些需要它的人

iTerm add key visual

只是为了帮助那些有同样问题的人,特别是使用Zsh shell和iTerm 2。结果是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-in-iterm.html 注意到在iTerm2:

  • Ctrl+一个,跳转到行开始,而
  • Ctrl+E,跳转到行尾。

要在iTerm2中的单词和行首/行尾之间跳转,请选择下面两个解决方案中的一个

1. 简单解决方案(推荐)

  1. 开放的偏好
  2. 点击“Profile"选项卡
  3. 在左边的列表中选择一个配置文件(例如"Default")
  4. 点击“Keys"选项卡
  5. 点击“键映射”;TAB(如果存在)
  6. 点击“预设”;下拉菜单,选择“自然文本编辑”;

enter image description here

注意:如果你有几个配置文件(例如默认和热键窗口),并希望对所有配置文件应用相同的修改,请使用以下步骤:

  1. 点击“Keys"选项卡
  2. 选择“键绑定”;

2. 手动映射键(高级)

如果您不想使用“自然文本编辑”;上面提到的预设,你可以手动映射你需要的键:

  1. 开放的偏好
  2. 点击“Profile"选项卡
  3. 在左边的列表中选择一个配置文件(例如"Default")
  4. 点击“Keys"选项卡
  5. 点击“键映射”;TAB(如果存在)
  6. 点击[+]图标
  7. 从下面的表格中添加快捷方式
< span style=" font - family:宋体;"< / th > >快捷方式 < span style=" font - family:宋体;"> < / th描述> < span style=" font - family:宋体;"行动> < / th > < span style=" font - family:宋体;"> < / th >发送 < span style=" font - family:宋体;"道明> >⌘←< / < span style=" font - family:宋体;">向左跳到行首 < span style=" font - family:宋体;"道明> >⌘→< / < span style=" font - family:宋体;">右跳转到行尾 < span style=" font - family:宋体;">⌘←Delete . txt < span style=" font - family:宋体;"> < / td >删除行 < span style=" font - family:宋体;"道明> >⌥←< / < span style=" font - family:宋体;">向左跳到单词的开头 < span style=" font - family:宋体;"道明> >⌥→< / < span style=" font - family:宋体;">右跳到单词的结尾 < span style=" font - family:宋体;">←DELETE < span style=" font - family:宋体;"> < / td >删除词 < span style=" font - family:宋体;"道明> >⌘z < / < span style=" font - family:宋体;">撤销td > < /
&;SEND HEX CODE" < span style=" font - family:宋体;"> 0 x01 td > < /
&;SEND HEX CODE" < span style=" font - family:宋体;"> 0 x05 td > < /
&;SEND HEX CODE" < span style=" font - family:宋体;"> 0 x15 td > < /
&;SEND HEX CODE" < span style=" font - family:宋体;"> 0 x1b 0 x62 td > < /
&;SEND HEX CODE" < span style=" font - family:宋体;"> 0 x1b 0 x66 td > < /
&;SEND HEX CODE" < span style=" font - family:宋体;"> 0 x1b (td > < /
&;SEND HEX CODE" < span style=" font - family:宋体;"> 0 x1f td > < /

请注意

如果上述快捷键的键盘绑定已经存在,则必须将其删除,以便新的快捷键生效。

对我来说,以下组合是有效的:

关键 行动 Esc + 最终结果
# EYZ0 # EYZ1 发送转义序列 一个 发送
# EYZ0 # EYZ1 发送转义序列 e 发送[e]

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

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

打开iTerm首选项+,导航到Profiles选项卡(Keys选项卡可以使用,但添加键绑定到您的配置文件允许您保存你的资料并将其同步到多台计算机)和keys子选项卡,并输入以下内容:

删除光标左侧的所有字符

发送十六进制代码:

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

0x18 0x7f不太兼容,在node中不能工作,默认情况下在zsh中也不能工作,请参见下面修复ZSH (bash/irb/pry应该没问题),在工作时执行所需的功能。

删除光标右侧的所有字符

+fn+←删除+删除→发送Hex码: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发送Hex码:0x18 0x1f

现在如何修复任何不工作

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

对于任何寻找如何将键序列转换为十六进制的查找表的人来说,我发现这个表非常有用。

老式的emacs绑定仍然可以在iterm2和os x终端中工作:

首选项->配置文件->键(配置文件中的子选项卡)

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

这应该启用alt-falt-b来逐个单词移动单词。(仍然ctrl-一个ctrl-e照常工作)

如果设置为meta,这些旧的绑定将工作,而一些iterm2绑定不可用。

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

enter image description here

iTerm→首选项→配置文件→键

警告因为它是一个预设,它可以覆盖你之前绑定的键。因此,最好在应用预设之前保存当前的键绑定。

正如在在这里中解释的那样,你可以通过简单的步骤来做到这一点:

默认情况下,单词跳转(option +→或←)和单词删除(option + .; 退格键)不工作。要启用这些,请转到“iTerm→Preferences→” 配置文件→按键→加载预设…→自然文本编辑→Boom!头 爆炸" < / p >

https://aaronaddleman.com/articles/hexcodes-and-iterm/中解释过

你可以使用xxd -psd来获得关键的十六进制代码。

唯一适用于移动到行首和行尾的东西是

⌘← "SEND ESC SEQ" OH -移动到行开始
⌘→ "SEND ESC SEQ" OF -移动到行尾

我使用 Travis 回答和我创建了一个 动态轮廓,你可以根据它的指示导入。

GabLeRoux/iterm2-macos-Dynamic-profile

指令都在自述文件中,导入它比手动添加它们要快得多。我按照@gooli 的要求回答了这个问题,因为这个问题隐藏在评论中。希望你喜欢这个