【问题标题】:Mac OS X Terminal: Map option+delete to "backward delete word"Mac OS X 终端:将选项+删除映射到“向后删除单词”
【发布时间】:2010-09-24 13:38:14
【问题描述】:

尝试从首选项 -> 设置 -> 键盘映射它,但“键”组合框只有“向前删除”而没有“删除”。另一方面,我的键盘只有“删除”,没有“向前删除”!

除了偏好之外,还有其他方法吗?

【问题讨论】:

  • “向后删除单词”是指退格键吗?我不知道最近有任何带有删除键的 Apple 键盘。
  • “向后删除单词”我的意思就是——从光标向后删除整个单词。 :) 最后一台 Macbook 有一个标记为“delete”的键,但它充当退格键。
  • 我也面临同样的问题。键盘有向后删除,但不能在 Terminal.app 中用作绑定。
  • 对我来说,您的问题值得数百万赞。这对我帮助很大。早些时候,我是 Ubuntu。现在,这也让我在 Mac OS 中的生活更轻松了。谢谢。

标签: macos keyboard-shortcuts terminal


【解决方案1】:

启用选项键作为元键

  1. 转到Terminal > Preferences > Profiles > Keyboard
  2. 检查Use option key as meta key

图片

在 2018 年 10 月 23 日捕获的 macOS High Sierra 10.13.6 上。

注意事项

许多应用程序(包括 bash 和 tcsh)将 Meta-Delete 视为“向后删除词”。

【讨论】:

  • 它在终端首选项 > 设置 > 键盘下,就在底部。
  • 为什么这不是默认的?!
  • 在 Yosemite 上,此设置现在位于首选项 -> 配置文件 -> 键盘下。看起来您必须为每个配置文件更改/设置它。
  • 在非美国键盘上,通常需要选项键来获取某些字符(例如,管道“|”在 shell 中非常重要)。在那种情况下,其他答案中提到的 b 和 f 可能是最好的解决方案?
  • 不幸的是,这对于具有外出键盘的程序员来说,需要使用选项键获取特殊符号,如{,因为在选项键被用作元时不起作用。键。
【解决方案2】:

OS X 的终端运行 bash,其中包括 readline 支持。按照 Glomek 的建议并告诉终端使用选项作为元键(或者使用 Esc)然后你有一堆方便的选项:Ctrl+w 删除上一个单词(就像之前提到的 Meta+delete 一样),但您也可以使用 Meta+f 和 Meta+b 来向前和向后遍历单词,Ctrl+a Ctrl+e 到行首和行尾,Ctrl+k 删除(杀死)从光标到行尾,还有更多。

请参阅http://www.bigsmoke.us/readline/shortcuts 以获取漂亮的小参考表。

【讨论】:

  • 这个“好用”吗?系统的其余部分使用带有限定符的delete 来删除单词。
  • 是否也可以有“删除行”?
  • Readline 很棒,但这对 OP 没有帮助。 Ctrl+w 删除一个 WORD(由空格分隔),而不是一个单词(由标点符号 + 空格分隔)。当光标位于cat .git/refs/heads 的末尾时,Ctrl-w 会产生cat。元+删除结果为cat .git/refs/
  • @nadafigment,'a' 和 'e' 代表什么?
【解决方案3】:

删除一个倒退的词:

Ctr-w.

【讨论】:

  • 读完后我发现“向前删除单词”是 ctrl+k(通过反复试验)。现在我想知道为什么关于这一切的文档如此之少。
  • ctr-k 把前面的都删掉,不只是一个字,不是吗?
  • 这适用于我的 Mac。它也适用于 ubuntu linux 吗?
  • Ctrl+w 删除一个 WORD(由空格分隔),而不是一个单词(由标点符号 + 空格分隔)。当光标位于cat .git/refs/heads 的末尾时,Ctrl-w 会产生cat。元+删除结果cat .git/refs/
【解决方案4】:

⌃W (control+W) 与 meta + delete 不同(ESC+delete 如果您没有选中使用选项作为元键) meta+delete 会将/ _ 视为单词分隔符,而^W 会将空格视为分隔符。

例如 在(末尾的光标)上使用 ESC+Bakcspace

rm /dira/dirb/file1

给予

rm /dira/dirb/

虽然 ^W 一样会给出

rm

所以在定义修改终端配置文件时最好使用\033\177 而不是^W。 这样,您实际上将 ⌥⌫ 映射到 esc⌫ 正在执行的操作,并且您继续让 ^W 根据空格分隔符擦除单词。

我希望能够发布一张关于如何做到这一点的图片,但作为一个新手我不能。

参考bouke评论了解如何修改终端配置文件。

【讨论】:

  • 对于那些想要在iterm2 中执行此操作的人,您可以转到首选项> 键> 添加键映射⌥⌫ 以发送十六进制代码0x1B 0x7F。 ?
  • 你是怎么知道\033\177是你想要的“删除单词的一部分”?
  • 确实,您只需在“终端首选项”对话框中按下所需的按键序列。首选项→配置文件→键盘选项卡→+按钮,然后选择修饰符“选项”和键“⌫删除”,然后选择文本字段并按转义键,然后按⌫键就完成了。 Esc+⌫ 和 ⌥⌫ 做同样的事情
【解决方案5】:

默认情况下,meta backspace 在大多数 shell 中执行向后的单词 yank。如果您按 Escape 然后按退格键,则几乎可以在任何地方使用。

【讨论】:

  • 太棒了,不需要额外的设置。我注意到<Esc> b<Esc> f 也适用于向后或向前跳一个字。
  • 我更喜欢 + ARROW。 ESC 不允许连续点击 b 或 f。
  • 我一直在用 + ARROW 来移动,但是我发现没有办法用类似的方式删除。上面提到的 CTRL + W 方法不会像 + ARROW 那样在非单词字符处停止,因此它会删除直到空格之前的所有内容。任何使用与 + ARROW 类似的边界检测进行删除的方法都将不胜感激
【解决方案6】:

命令编辑快捷键

Ctrl + a - 转到命令行的开头

Ctrl + e – 转到命令行末尾

Ctrl + k – 从光标处删除到命令行末尾

Ctrl + u – 从光标处删除到命令行开头

Ctrl + w – 从光标删除到单词的开头(即向后删除一个单词)

Ctrl + y – 在光标之后粘贴使用删除快捷方式之一(例如上面的那个)剪切的单词或文本

Ctrl + xx – 在命令行开头和当前光标位置之间移动(然后再返回)

Alt + b – 向后移动一个单词(或转到光标当前所在单词的开头)

Alt + f – 向前移动一个单词(或转到光标当前所在单词的末尾)

Alt + d - 从光标处删除到单词的结尾(如果光标在单词的开头,则删除整个单词)

Alt + c – 大写到从光标开始的单词的结尾(如果光标在单词的开头,则为整个单词)

Alt + u – 从光标到词尾变为大写

Alt + l – 从光标到词尾变为小写

Alt + t – 将当前单词与前一个单词交换

Ctrl + f – 向前移动一个字符

Ctrl + b – 向后移动一个字符

Ctrl + d – 删除光标下的字符

Ctrl + h – 删除光标前的字符

Ctrl + t – 将光标下的字符与前一个字符交换

命令调用快捷键

Ctrl + r - 向后搜索历史

Ctrl + g – 退出历史搜索模式

Ctrl + p – 历史中的上一个命令(即返回命令历史)

Ctrl + n – 历史中的下一个命令(即向前浏览命令历史)

Alt + . – 使用上一条命令的最后一个字

命令控制快捷键

Ctrl + l – 清屏

Ctrl + s - 停止输出到屏幕(用于长时间运行的详细命令)

Ctrl + q – 允许输出到屏幕(如果之前使用上述命令停止)

Ctrl + c – 终止命令

Ctrl + z – 暂停/停止命令

Bash Bang (!) 命令

Bash 还有一些使用 ! (bang) 允许您使用 bash 命令做一些时髦的事情。

!! – 运行最后一条命令 !blah - 运行以“blah”开头的最新命令(例如!ls)

!blah:p – 打印出 !blah 将运行的命令(也将其添加为最新的 命令历史中的命令)

!$ – 上一条命令的最后一个字(与 Alt + . 相同)

!$:p – 打印出 !$ 将替代的单词

!* – 除最后一个单词外的上一个命令(例如,如果您输入 _find somefile.txt /,那么 !* 将给您 _find somefile.txt

!*:p - 打印出 !* 将替代的内容

【讨论】:

  • 这是一个超级有用的列表伴侣! O:我把它抄下来,加到我的老生常谈的书里! Ctrl + xx 太棒了!
  • 完美列表@Curtis
  • 这个列表真的很棒!只是我尝试使用带有 alt + 字母的快捷方式并在当前版本的 mac(Catalina/Big Sur/...)中打印其中一个希腊字母,例如: alt +d 执行“∂”(delta,I思考)。所以这有点令人沮丧,不知道如何绕过它。
【解决方案7】:

在终端的配置文件中,您可以将⌥⌫(选项+删除)绑定到⌃W(控制+W),因此它的工作原理与其他应用类似。

【讨论】:

  • stty 必须将 ^w 映射到 werase (默认行为)才能正常工作。在命令行上使用 stty -a 查看映射是如何设置的。
【解决方案8】:

在 Profile -> Keys 中启用 Natural Text Editing 预设。 你可以简单地删除这个词

  • 后退alt + delete
  • 转发fn + alt + delete

【讨论】:

    【解决方案9】:

    如果您使用的是Iterm2(这就像 OSX 的常规终端更好:) 你可以用这个来改变这种行为:

    您需要将左 ⌥ 键设置为转义字符。这可以通过 iTerm2 > Preferences > Profiles > Keys 来完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      相关资源
      最近更新 更多