如何设置键盘快捷键以跳转到行首/行尾? [关闭]

Posted

技术标签:

【中文标题】如何设置键盘快捷键以跳转到行首/行尾? [关闭]【英文标题】:How to set keyboard shortcuts to jump to beginning/end of line? [closed] 【发布时间】:2011-09-06 12:05:09 【问题描述】:

我可以看到 Ctrl+left/right 跳转到行首/行尾。如何将其更改为 Cmd+left/right arrow

【问题讨论】:

我在这里描述过:github.com/nikoloza/articles/blob/master/devtools/… 如果您希望这些快捷方式也可以在 VIM 中使用,请参阅此答案:***.com/a/9611698/991068 【参考方案1】:

按照上面列出的教程在 iterm2 中设置您的关键偏好。

    创建一个新的快捷键 选择“发送转义序列”作为操作 然后,在下面的文本中设置 cmd-left: 输入 [H 表示 行开始OR 输入 [F 表示 行尾

【讨论】:

F 在我的 iterm2 中只跳一个字 ITerm => 首选项 => 键 喜欢这个!其他解决方案对我不起作用。我花了好几个小时在 iterm2 中无法使用 ctrl+a 和 ctrl+e 感到沮丧。但我不想为此放弃鱼。这完全有效,谢谢! 其他解决方案对我也不起作用,但这个解决方案对我有用。【参考方案2】:

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

FOR ACTION SEND
⌘ ← "SEND HEX CODE" 0x01
⌘ → "SEND HEX CODE" 0x05
⌥ ← "SEND ESC SEQ" b
⌥ → "SEND ESC SEQ" f

这是给需要的人的视觉效果

【讨论】:

你知道Command+Delete的代码/序列是什么吗? (清除提示) 我在别处回答了我的第一条评论,基本上十六进制代码 0x15 给出了 Ctrl+U 来清除行。但是我发现 0x01 Ctrl+A 会干扰 Tmux 的使用。因此,我打算将其映射到 Home 键(与 Mac 键盘上的 Fn+Left 功能相同)。 Home 的转义序列为 [1~,End 的转义序列为 [4~ 像魅力一样工作,太棒了! 正确的绑定是 ⌘← "SEND ESC SEQ" OH 用于 Home 和 ⌘→ "SEND ESC SEQ" OF 用于 End (这些是大写的 'o' 不是零)。这模拟了实际按下 Home 和 End 键,因此可以在 bash、vim 等中工作。【参考方案3】:

只是为了帮助遇到同样问题但专门将 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文件中。

【讨论】:

【参考方案4】:

对于任何想在 iTerm2 中转到行尾或行首的人的快速参考,上面的链接 http://hackaddict.blogspot.com/2007/07/skip-to-next-or-previous-word-in-iterm.html 注意到在 iTerm2 中:

Ctrl+A,跳转到行首,同时 Ctrl+E,跳转到行尾。

【讨论】:

为什么这个答案不在顶部? @GangadharJannu:完全同意。它直接进入ans。应该在顶部。 同意我知道ctrl + A 可以进入行首,但找不到行尾。这需要标记为答案。【参考方案5】:

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

1。简单的解决方案(推荐)

    打开首选项 点击“个人资料”标签 在左侧列表中选择一个配置文件(例如“默认”) 点击“键”标签 单击“键映射”选项卡(如果存在) 点击“预设”下拉菜单并选择“自然文本编辑”

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

    点击“键”标签 选择“键绑定”

2。手动映射键(高级)

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

    打开首选项 点击“个人资料”标签 在左侧列表中选择一个配置文件(例如“默认”) 点击“键”标签 单击“键映射”选项卡(如果存在) 点击[+]图标 从下表中添加快捷方式
SHORTCUT DESCRIPTION ACTION SEND
⌘ ← Jump to beginning of line "SEND HEX CODE" 0x01
⌘ → Jump to end of line "SEND HEX CODE" 0x05
⌘ ← Delete Delete line "SEND HEX CODE" 0x15
⌥ ← Jump to beginning of word "SEND HEX CODE" 0x1b 0x62
⌥ → Jump to beginning end of word "SEND HEX CODE" 0x1b 0x66
⌥ ← DELETE Delete word "SEND HEX CODE" 0x1b 0x08
⌘ z Undo "SEND HEX CODE" 0x1f

注意

如果上述快捷键已经存在键盘绑定,则必须删除它们才能使新快捷键生效。

【讨论】:

这对我来说在 iTerm2 中效果很好,而且很容易理解,谢谢! 只是澄清 ⌥← 的原始绑定是做什么的?我看到了Says send Hex Codes: 0x1b 0x1b 0x5b 0x44。如果人们不想删除它,最好知道。 iTerm 有没有办法将这些捆绑到我们可以加载的预设中?手动输入似乎很烦人,但这对我有用,而且很棒。谢谢lto! 非常感谢,Home/End 键终于可以在 macOS ITerm2 上按预期工作了。 我认为这应该是问题的正确答案【参考方案6】:

对我来说,以下组合有效: | Key Action Esc+ End result | |-----------------------------------------------------| | Send Escape Sequence a Send ^[ a | | Send Escape Sequence e Send ^[ e |

【讨论】:

【参考方案7】:

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

【讨论】:

bind -p 仅适用于 zsh、csh tcsh 的 Bourne shell(bash、sh),请使用 bindkey【参考方案8】:

我看到已经有很多很好的答案,但这应该提供最接近本机 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 兼容性较差,在 node 中不起作用,默认情况下在 zsh 中不起作用,请参阅下面修复 zsh(bash/irb/pry 应该没问题),执行所需工作时的功能。

删除光标右侧的所有字符

+fn+←删除+删除→发送十六进制代码:0x0b

删除光标左侧的一个单词

+←删除发送十六进制代码:

0x1b 0x08 Elixir 的 IEX 中断,似乎在其他任何地方都可以正常工作

0x17 可以在任何地方使用,但不会在 IRB 中的正常分词处停止,而是会删除,直到看到文字空间。

删除光标右侧的一个单词

+fn←删除+删除→发送十六进制代码:0x1b 0x64

将光标移至行首

+ 发送十六进制代码:0x01

将光标移至行尾

+ 发送十六进制代码:0x05

光标左移一个字

+ 发送十六进制代码:0x1b 0x62

光标右移一个字

+ 发送十六进制代码:0x1b 0x66

撤消

+z 发送十六进制代码:0x1f

Redo 通常不绑定在 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 非常有帮助。

【讨论】:

这真的很有用,有很大的不同!我想指出,有些人可能会对echo 前面的$ 感到困惑(只需将其删除?)。除此之外,它是完美的。谢谢。 @Christophe 所以看起来键绑定是应该的。您在添加十六进制值时犯了一个错误,或者向后单词的键绑定被覆盖。运行bindkey | grep "\^\[b",它会告诉你设置后是否有其他东西覆盖它。它应该只返回#=> "^[b" backward-word。如果它被覆盖,您必须找到它被覆盖的位置并将其删除。如果这不可行,您可以运行echo 'bindkey "^[b" backward-word' >> ~/.zshrc,它会将其添加到您的.zshrc 的最后一行,然后重新启动 iTerm,它应该可以工作了 @Christophe 检查 iTerm 首选项中的 keys 选项卡,看看它是否也将 + 映射到某个东西。如果是这样删除它。您可以通过快速按下esc 释放,然后按下b 来测试您的b 是否正常工作。那应该向左跳一个字。或者,您可以将+ 映射到十六进制0x1b 0x42 0x1b 0x5b 0x31 0x3b 0x35 0x44。我证实这两个都对我有用。我真的认为你有 + 在 iTerm 中被覆盖,无论是在你的 profile keys 选项卡或 keys 选项卡中。 太棒了!刚刚从这里了解了撤消和重做绑定。 我手动执行此操作,我想为什么我不能导入配置文件来执行此操作?然后我根据这些说明创建了GabLeRoux/iterm2-macos-dynamic-profile。它完美无瑕,谢谢?【参考方案9】:

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

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

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

这应该启用 alt-falt-b 来逐字移动。 (仍然 ctrl-actrl-e 总是照常工作)

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

【讨论】:

【参考方案10】:

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

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

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

【讨论】:

您能否详细说明您的答案?例如,该预设包含哪些内容并可能覆盖? 感谢您的回答。此外,最好将其应用于您自己的自定义配置文件,这样您就不会使用默认设置,并且可以将配置文件切换为自然文本编辑“模式” 迄今为止最简单的解决方案。应该是第一答案。 @CarlesAlcolea 我认为它会删除您的自定义预设和热键,因此如果您想保存它们,您应该导出配置文件。 @CarlesAlcolea 和@wordsforthewise 看看warning【参考方案11】:

正如here 中所述,您可以通过简单的步骤完成:

默认情况下,单词跳转(选项+→或←)和单词删除(选项+ 退格)不起作用。要启用这些,请转到“iTerm → 首选项 → 配置文件 → 按键 → 加载预设... → 自然文本编辑 → 繁荣!头 爆炸”

【讨论】:

【参考方案12】:

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

您可以使用xxd -psd 获取密钥十六进制代码。

【讨论】:

【参考方案13】:

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

⌘← "SEND ESC SEQ" OH - 移到行首⌘→ "SEND ESC SEQ" OF - 移到行尾

【讨论】:

【参考方案14】:

我使用了Travis answer,并创建了一个动态配置文件,您可以根据其说明导入。

GabLeRoux/iterm2-macos-dynamic-profile

说明在自述文件中,导入它比手动添加要快得多。我根据@gooli 的要求做了这个回答,因为这被隐藏在评论中。希望你喜欢这个 ?

【讨论】:

一年后回到这里,很高兴找到这个!

以上是关于如何设置键盘快捷键以跳转到行首/行尾? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse快捷方式到行尾和行尾

Intellij IDEA 移动光标到行尾或行首的快捷键是啥?

vim教程之背键盘使我快乐

IDEAVIM 常用快捷键总结和使用说明

linux系统都有哪些快捷键

vim keymap