2011-05-22 59 views
6

在vim中,在普通模式下,如果光标位于一个单词中,而不是最后一个字母,则de将从该位置删除该单词的后缀。如果光标在最后一个字母上,x也会这样做,而de会跳到下一个单词的末尾。在Vim中,如何删除单词的后缀?

你会使用哪种命令,在两种情况下都能正常工作,最后一封信是不是?

其目的是将该命令包含在宏中。

+2

该行为不取决于单词的长度,而取决于游标的位置。如果光标位于单词的最后一个字符处,“e”运动也会跳到下一个单词的末尾。 – 2011-05-22 09:30:02

+0

没错,再次感谢。问题得到纠正。 – galath 2011-05-24 06:29:46

+1

已经回答了,但'cw'也可能对你有用。它完成你所描述的内容,但也会跳转到编辑模式。 – 2011-05-24 07:15:02

回答

4

尝试vwged而不是de,并定义类似以下的映射,如果你喜欢它,则使用 。

:nnoremap <leader>de vwged 

它似乎正是你想要的。

+0

'vwged'就是我一直在寻找的东西。谢谢。 – galath 2011-05-24 06:16:46

1

如果你的词分隔符是空格,dt<space>将起作用。 t将匹配所有字符,直到指定的字符。

+0

一些有用的评论:dw - 删除他们称之为“小”的单词。就像在“settings.config”中一样,如果你使用的是“s”,'dw'会删除'.'前的所有内容以删除整个字符串,使用'dW'(删除“big”字) – Nemoden 2011-05-22 08:37:17

+0

为了推广这个解决方案:'dtC ',其中'C'是要删除的单词的最后一个字符旁边的字符。 – 2011-05-22 09:37:16

+0

但是如果你的单词后面跟着逗号或分号(或任何其他不是字的字符?)?你需要一种方法来跳转到下一个单词边界 – 2011-05-22 09:42:33

2

您也可以尝试d/\>它转换为删除高达下一页尾字边界。