Answers:
这取决于您的Shell及其活动的命令行编辑模式。
对于具有Emacs命令行编辑模式的shell(set -o emacs
在某些shell中),请使用Alt+D(出于某种原因,这在macOS上不起作用,但会打印字符∂
,请Escd改用)。
对于vi命令行编辑模式(壳set -o vi
在一些炮弹),使用Escdw(这个确实在MacOS工作,以及)。
对于tty行规则,^W
删除前一个空格分隔的单词。
在vi
插入模式下的编辑器中,^W
向后删除到第一个数字或非数字序列的开头(在上foo-+-bar.. baz
,它首先删除baz
,然后是..
,然后是bar
,然后是-+-
,然后是foo
)。
在emacs
编辑器中,^W
从光标位置删除到标记(用设置的标记Ctrl+Space)。
有些行编辑器readline
(在模式下)(在bash
,gdb
...下),zle
(在zsh
)使用(在下),pdksh
在这种情况vi
下的行为类似vi
,而在emacs
模式下的行为则在tty行规整下(不是emacs
)。
libedit
(使用BSD壳或(任选地)dash
),tcsh
AT&T ksh
,在emacs
模式,举止像emacs
,其中^W
删除所述标记(最初在缓冲器的开头)。
要删除向前的单词,请在vi
编辑器中以命令(常规)模式执行此操作,dw
以删除到下一个数字或非数字序列的开头(或行的末尾)并dW
删除到下一个非空格序列(^W
tty行规的的垂线)。
在emacs
行编辑器,Meta-D将删除该结束的alnum字符下一序列。运动运算符(Meta-B,Meta-F)的行为类似。
命令行编辑器在vi
模式下时的行为类似于vi
,但是在emacs
模式下,您有两个主要学校:tcsh
学校和ksh
学校。
该ksh
学校(readline
,ksh
,yash
)的行为大多喜欢emacs
(fish
的行为是它怎样对待非alnum,非空白字符都略有不同emacs
和vi
模式)。
在tcsh
学校(tcsh
,libedit
,zsh
),字运动是基于空格分隔的单词等等都是与tty线路学科的一贯^W
在这方面。
在中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关键是什么,请看那里。
在Linux中,尝试Ctrl+k
从光标所在位置到单词末尾删除。
下面列出了一些其他快捷方式(在Linux中有效):
Ctrl+e
->将光标移到单词的末尾。Ctrl+t
->互换字母的位置。Ctrl+y
->将后缀“ hh”添加到当前单词。Ctrl+u
->删除整行。Ctrl+o
->与Enter键相同。Ctrl+p
->与上箭头按钮相同。Ctrl+a
->将光标移至命令的起始位置。Ctrl+d
->关闭终端。Ctrl+f
->将光标向前移动一个字符。Ctrl+h
->与Backspace键相同。Ctrl+j
->与Enter键相同。Ctrl+m
->与Enter键相同。Ctrl+b
->与右箭头键相同。14- Ctrl+4
>删除单词Ctrl+k
删除到行尾。Ctrl+u
删除整行(如果光标位于末尾)。Ctrl+d
发送EOF。Ctrl+e
转到的端线,等等
bash
中vi
模式下,你可以使用dW
删除这些