Mac OS X终端:映射选项+删除为“向后删除单词”


232

试图从首选项->设置->键盘进行映射,但是“键”组合框只有“转发删除”,没有“删除”。另一方面,我的键盘只有“删除”,而没有“转发删除”!

除了首选项外,还有其他方法吗?


“向后删除单词”是指退格键吗?我不知道最近有带有删除键的Apple键盘。
瑟伦·库克劳

“向后删除单词”的确切含义是-从光标向后删除整个单词。:)最后一台Macbook有一个标有“删除”的键,但它充当了退格键。
ibz

我面临着同样的问题。键盘具有向后删除功能,但不能用作Terminal.app中的绑定。
knoopx

对我来说,您的问题值得数百万票。这对我帮助很大。之前,我是Ubuntu。现在,这也使我在Mac OS中的生活更加轻松。谢谢。
doptimusprime

Answers:


424

启用选项键作为元键

  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视为“向后删除字”。


32
它位于底部的“终端首选项”>“设置”>“键盘”下。
2013年

16
为什么这不是默认值?
Ross Hambrick

8
在优胜美地上,此设置现在位于首选项->配置文件->键盘下。看起来您必须为每个配置文件进行更改/设置。
palimpsestor 2015年

6
在非美国键盘上,通常需要使用选项键来获取某些字符(例如,管道“ |”在外壳上非常重要)。在这种情况下,其他答案中提到的<Esc> b和<Esc> f可能是最佳解决方案?
Touko

8
不幸的是,这对于使用外来键盘的程序员来说适得其反,他们需要使用选项键来获取特殊符号,例如{,因为当将选项键用作元键时,该符号将无效。
Magne

74

OS X的终端运行bash,其中包括readline支持。遵循Glomek的建议,并告诉终端将option用作meta键(或使用Esc),然后您将获得很多方便的选项:Ctrl+ w删除上一个单词(如提及的Meta + delete一样),但是您也可以使用Meta + f和Meta + b可以通过单词前后移动,Ctrl+ aCtrl+ e可以到达行首和结尾,Ctrl+可以k删除(杀死)光标到行尾,还有更多的功能。

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


3
这个“方便”如何?系统的其余部分delete与限定词一起使用以删除单词。
idrougge

是否可以有“删除行”?
wenbert

1
Readline很不错,但这对OP没有帮助。Ctrl + w会删除一个单词(用空格分隔),而不是一个单词(用标点符号+空格分隔)。将光标放在的末尾cat .git/refs/heads,Ctrl-w将显示cat。Meta + delete导致cat .git/refs/
idbrii '19

@nadafigment,“ a”和“ e”代表什么?
Pacerier

63

删除回溯的单词:

点阅率


2
读完这篇文章后,我发现“向前删除单词”是ctrl + k(通过反复试验)。现在我想知道为什么关于这一切的文件很少。
胜利者。

8
Ctr-k删除前面的所有单词,而不仅仅是删除一个单词,不是吗?
Shai 2015年

这适用于我的Mac。它也可以在ubuntu linux上工作吗?
391339年

1
Ctrl + w会删除一个单词(用空格分隔),而不是一个单词(用标点符号+空格分隔)。将光标放在的末尾cat .git/refs/heads,Ctrl-w将显示cat。Meta + delete导致cat .git/refs/
idbrii '19

24

默认情况下,元退格在大多数shell中都会向后抽词。如果您按Escape键,然后按Backspace键,那么几乎所有地方都可以使用。


3
太好了,不需要任何额外的设置。我注意到<Esc> b并且<Esc> f也为后退或前进一个单词而工作。
joeytwiddle

1
我更喜欢<ALT> + ARROW。ESC不允许连续单击b或f。
Vitali Pom

1
我一直在使用<ALT> + ARROW来回走动,但是我发现没有办法以类似的方式删除。上面提到的CTRL + W方法不会像<ALT> + ARROW一样在非单词字符处停止,因此它将删除所有内容,直到空白为止。使用类似于<ALT> + ARROW的边界检测进行删除的任何方法将不胜感激
Rene Wooller

18

⌃W(control + W)与meta + delete(如果未选中use选项作为meta键,则使用ESC + delete)不同。meta + delete将/ _视为单词定界符,其中^W会将空格视为定界符。

例如,使用ESC + Bakcspace(最后一个光标)

rm /dira/dirb/file1

rm /dira/dirb/

而相同的^ W将给出

rm

因此,在定义修改终端配置文件时,最好使用\ 033 \ 177而不是^ W。这样,您实际上就将⌥⌫映射到esc⌫正在执行的操作,并且您始终需要使用^ W来基于空间定界符擦除单词。

我希望能够发布有关如何执行此操作的图像,但是作为一个新手,我不能。

请参阅bouke注释以了解如何修改终端配置文件。


5
对于那些想要这样做的人iterm2,可以转到“首选项”>“键”>“添加键映射” ⌥⌫以发送十六进制代码0x1B 0x7F。🍻–
ixix

\033\177是怎么发现“删除单词的一部分”的呢?
绝热

实际上,您只需要在“终端首选项”对话框中按所需的按键顺序即可。首选项→配置文件→键盘选项卡→+按钮,然后选择修饰符“选项”和键“⌫删除”,然后选择文本字段,然后按退出键,然后按the键,即可完成操作。Esc +⌫与⌫的作用相同
Stephane Gasparini

14

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

终端配置文件键盘设置


stty必须将^ w映射到werase(默认行为)才能起作用。在命令行上使用stty -a查看如何设置映射。
natersoz

4

命令编辑快捷方式

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 –打印出什么!将替代


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.