^
表示 vim 中光标下的字符
请不要用
T
动作回答,因为这需要我知道最后一个字符,这对我有帮助,但我想知道是否还有其他方法
我有一行文字:
these are test words
现在如果我想删除这个词
test
。
如果我的光标位于单词的开头
these are test words
^
我按
dw
它完全按照我想要的方式删除test
和空格直到下一个单词,即“单词”,我理解这是有效的,因为w
运动是排他性并且它不包括下一个单词的开头字符
但是,如果我在单词的末尾,那么我如何向左方向删除并删除那些空格(也在
are
和“test”之间):
these are test words
^
当我按
dgE
时,它会删除 e
末尾的 are
,因为它试图到达前一个单词的末尾并删除它,从而导致
these ar words
我试图强制此命令是独占的,但它排除右侧而不是左侧
我希望最终结果是:
these are words
请不要用
T
或F
动作来回答
补充说明
我之前问过这个问题,我得到的答案是使用
daw
,如果我们想要处理的单词前后只有一个空格字符,它就可以工作
例如,如果线路是
these are test words
^
即单词右侧有多余的空格,那么如果我这样做
daw
,它不会执行我想要的操作,我希望左侧的空白消失,但右侧会清除
即
daw
输出为 there are words
我想要的是
these are words
奇怪的是,Vim 并没有为每一个可以想象的编辑任务提供内置命令。在这种情况下,您可能需要发出多个命令才能实现您的目标。
如果“test”之前只有一个(或几个)空格,我会选择
diwX
这将删除该单词,但让所有空格保持不变,然后按一次(或几次)X
删除空格。请参阅:help iw
。
对于更复杂的空白场景,我会使用
:substitute
命令,如下所示:
:s/\s*test
这将匹配任意数量的空格
\s*
,后跟单词“test”,并将匹配项替换为空,并将其删除。您可以使用 Ctrl-RCtrl-W 将光标下的单词快速插入到命令行中,如:help c_CTRL-R_CTRL-W
中所述。