Mac OS X终端:地图选项+删除到"后退删除字"

ibz*_*ibz 216 macos terminal keyboard-shortcuts

试图从首选项 - >设置 - >键盘映射它,但"键"组合框只有"转发删除"但没有"删除".另一方面,我的键盘只有"删除"而没有"正向删除"!

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

And*_*isi 388

启用选项密钥作为元键

  1. 进入Terminal> Preferences> Profiles>Keyboard
  2. 检查Use option key as meta key.

图片

在macOS High Sierra 10.13.6上,于2018年10月23日拍摄.

窗口的例证切换选项钥匙的作为元钥匙

笔记

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

  • 它位于终端首选项>设置>键盘下方,位于底部. (30认同)
  • 为什么这不是默认的?! (12认同)
  • 在优胜美地,这个设置现在位于首选项 - >配置文件 - >键盘下.看起来你必须为每个配置文件更改/设置它. (8认同)
  • 不幸的是,对于那些需要使用选项键来获取特殊符号(如`{`)的程序员而言,这会产生反作用,因为当选项键用作元键时,这将不起作用. (7认同)
  • 在非美国键盘上,通常需要选项键来获取某些字符(例如,管道'|'在shell中非常重要).在那种情况下,其他答案中提到的<Esc> b和<Esc> f可能是最好的解决方案吗? (6认同)
  • 为什么我之前没有用谷歌搜索过这个。我想这些年来我确实损失了几天的生产力。 (3认同)
  • 太感谢了!幸运的是,我使用的是美国键盘,而且效果很好。 (2认同)

小智 69

OS X的终端运行bash,其中包括readline支持.按照Glomek的建议告诉终端使用选项作为元键(或者使用Esc)然后你有一堆方便的选项:Ctrl+ w删除prev字(就像提到的Meta +删除一样),但你也可以使用Meta + f和Meta + b通过单词前进和后退,Ctrl+ aCtrl+ e到行的开头和结尾,Ctrl+ k从游标到行尾删除(kill),还有更多.

请参阅http://www.bigsmoke.us/readline/shortcuts以获取一个不错的小参考表.

  • 这个“好用”如何?系统的其余部分使用带有限定符的“delete”来删除单词。 (3认同)
  • Readline 很棒,但这对OP没有帮助。Ctrl+w 删除一个单词(以空格分隔),而不是删除一个单词(以标点符号+空格分隔)。将光标置于“cat .git/refs/heads”末尾,按 Ctrl-w 会生成“cat”。元+删除结果为“cat .git/refs/” (3认同)

Sha*_*hai 58

删除一个字:

CTR-W上.

  • Ctr-k会删除前面的所有内容,而不仅仅是一个单词,不是吗? (8认同)
  • Ctrl+w 删除一个单词(以空格分隔),而不是删除一个单词(以标点符号+空格分隔)。将光标置于“cat .git/refs/heads”末尾,按 Ctrl-w 会生成“cat”。元+删除结果为“cat .git/refs/” (4认同)
  • 读完这篇文章后,我发现“向前删除单词”是 ctrl+k(通过反复试验)。现在我想知道为什么关于这一切的文档很少。 (2认同)

Dus*_*tin 22

默认情况下,元退格会在大多数shell中执行向后的单词.如果您按下escape然后按退格键,那几乎无处不在.

  • 太棒了,不需要额外的设置.我注意到`<Esc> b`和`<Esc> f`也适用于跳回或转发一个单词. (2认同)
  • 我更喜欢&lt;ALT&gt;+箭头。ESC 不允许连续点击 b 或 f。 (2认同)
  • 我一直使用 &lt;ALT&gt; + ARROW 来移动,但我发现没有办法以类似的方式删除。上面提到的 CTRL + W 方法不会像 &lt;ALT&gt; + ARROW 那样停止在非单词字符处,因此它会删除直到空格为止的所有内容。任何使用类似于 &lt;ALT&gt; + ARROW 的边界检测来删除的方法将不胜感激 (2认同)

Cur*_*s M 19

命令编辑快捷键

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 太棒了! (4认同)

Ste*_*ini 15

?W(控制+ W)与meta + delete不同(ESC +删除如果你没有选中使用选项作为元键)meta + delete将/ _视为单词分隔符,^W将空格视为分隔符.

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

rm /dira/dirb/file1
Run Code Online (Sandbox Code Playgroud)

rm /dira/dirb/
Run Code Online (Sandbox Code Playgroud)

而^ W同样会给

rm
Run Code Online (Sandbox Code Playgroud)

因此,在定义修改终端配置文件时,最好使用\ 033\177而不是^ W. 那样你就是把⌥⌫映射到esc⌫正在做的事情,你继续根据空间分隔符擦除字.

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

请参阅bouke评论,了解如何修改终端配置文件.

  • 对于那些想在`iterm2`中执行此操作的人,可以转到Preferences> Keys>添加KeyMapping`⌥⌫`以发送十六进制代码`0x1B 0x7F`. (4认同)
  • 事实上,您只需在“终端首选项”对话框中按所需的按键序列即可。首选项→配置文件→键盘选项卡→+按钮,然后选择修饰符“选项”和键“⌫删除”,然后选择文本字段并按转义键,然后按⌫键即可完成。Esc+⌫ 与 ⌥⌫ 执行相同的操作 (2认同)

Bou*_*uke 13

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

终端配置文件键盘设置