如何在VIM中删除一个单词和前面的空格{当它两边空格不等时}?

问题描述 投票:0回答:1

^
表示 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 neovim
1个回答
0
投票

奇怪的是,Vim 并没有为每一个可以想象的编辑任务提供内置命令。在这种情况下,您可能需要发出多个命令才能实现您的目标。

如果“test”之前只有一个(或几个)空格,我会选择

diwX
这将删除该单词,但让所有空格保持不变,然后按一次(或几次)
X
删除空格。请参阅
:help iw

对于更复杂的空白场景,我会使用

:substitute
命令,如下所示:

:s/\s*test

这将匹配任意数量的空格

\s*
,后跟单词“test”,并将匹配项替换为空,并将其删除。您可以使用 Ctrl-RCtrl-W 将光标下的单词快速插入到命令行中,如
:help c_CTRL-R_CTRL-W
中所述。

© www.soinside.com 2019 - 2024. All rights reserved.