我Ctrl+W
在mac终端中删除一个单词(从光标所在位置删除到单词开头)
如何执行相反的操作 - 从光标所在位置删除到单词末尾?
答案1
这取决于您的 shell 及其活动的命令行编辑模式。
对于具有 Emacs 命令行编辑模式的 shell(set -o emacs
在某些 shell 中),请使用Alt+D(无论出于何种原因,这在 macOS 上不起作用,但会打印字符∂
,请Escd改为使用)。
对于具有 Vi 命令行编辑模式的 shell(set -o vi
在某些 shell 中),请使用Escdw(this做也可在 macOS 上运行)。
答案2
在Linux终端中,您可以尝试Ctrl+K来删除从光标到行尾的内容。
还有一些其他快捷方式,例如:
- Ctrl+ E:将光标移动到行尾。
- Ctrl+ T:翻转光标周围的两个字符。
- Ctrl+ Y:从删除环中拉出文本(粘贴之前删除的文本)。
- Ctrl+ U:删除从行首到光标处的文本。
- Ctrl+ O:提交当前行并从历史记录中加载下一行(如果有)。
- Ctrl+ P:从历史记录中获取上一行(如↑)。
- Ctrl+ K:删除光标后的行的其余部分。
- Ctrl+ A:将光标移动到行首。
- Ctrl+ D:如果该行为空,相当于
EOF
;通常,退出 shell。否则,删除光标后的字符。 - Ctrl+ F:将光标向前移动一个字符。
- Ctrl+ H: 与 相同Backspace。
- Ctrl+ J: 与 相同Enter。
- Ctrl+ M: 与 相同Enter。
- Ctrl+ B: 与 相同→。
- Ctrl+ W:删除光标左侧的单词。
答案3
对于 tty 行规则,^W
删除之前的空格分隔单词。
vi
在插入模式下的编辑器中,^W
向后删除到 alnums 或非 alnums 的第一个序列的开头(在 上foo-+-bar.. baz
,它首先删除baz
、然后..
、然后bar
、然后-+-
、然后foo
)。
在emacs
编辑器中,^W
从光标位置删除到标记(您用 设定的那个Ctrl+Space)。
一些行编辑器,例如readline
(使用bash
, gdb
...)、zle
(使用zsh
)、 ,在模式pdksh
下时,在这方面的行为类似于 tty 行规则(而不是)。vi
vi
emacs
emacs
libedit
(由 BSD shell 使用或(可选)dash
)、tcsh
、 AT&Tksh
在emacs
模式下,行为emacs
类似于^W
删除标记(最初在缓冲区的开头)。
要在编辑器中向前删除单词,vi
您可以在命令(普通的) 模式,用于dw
删除到下一个 alnums 或非 alnums 序列的开头(或行尾),并删除到下一个非空白序列( tty 行规则的dW
挂件)。^W
在行编辑器中emacs
,Meta-D将删除结尾下一个 alnum 字符序列。词运动运算符 ( Meta-B, Meta-F) 的行为类似。
命令行编辑器在vi
模式下的行为类似于vi
,但在emacs
模式下,您有两个主要学校:tcsh
学校和ksh
学校。
学校ksh
( readline
, ksh
, yash
) 的行为大多类似于emacs
(的行为在处理和模式fish
中的非数字、非空白字符方面略有不同)。emacs
vi
在tcsh
学校 ( tcsh
, libedit
, zsh
) 中,单词运动基于空格分隔的单词,因此^W
在这方面与 tty 行规则一致。
在 中zsh
,行为是可定制与不同的字型对于所有单词运动小部件。
对于readline
,您可以通过添加到您的 来获取tcsh
学校(并Meta-D删除相同类型的单词) :Ctrl-W~/.inputrc
set keymap vi-move
"\e[EMACS~": emacs-editing-mode
set keymap emacs
"\e[VI~": vi-movement-mode
"\ed": "\e[VI~dW\e[EMACS~"
"\ef": vi-fWord
"\eb": vi-bWord
或者,另一方面,^W
与其他单词运动小部件对齐(行为类似于Meta-Backscape):
set keymap emacs
"\C-W": backward-kill-word
至于Meta关键是什么,请参见那里。