在vim中,在普通模式下,如果光标位于一个单词中,而不是最后一个字母,则de
将从该位置删除该单词的后缀。如果光标在最后一个字母上,x
也会这样做,而de
会跳到下一个单词的末尾。在Vim中,如何删除单词的后缀?
你会使用哪种命令,在两种情况下都能正常工作,最后一封信是不是?
其目的是将该命令包含在宏中。
在vim中,在普通模式下,如果光标位于一个单词中,而不是最后一个字母,则de
将从该位置删除该单词的后缀。如果光标在最后一个字母上,x
也会这样做,而de
会跳到下一个单词的末尾。在Vim中,如何删除单词的后缀?
你会使用哪种命令,在两种情况下都能正常工作,最后一封信是不是?
其目的是将该命令包含在宏中。
尝试vwged
而不是de
,并定义类似以下的映射,如果你喜欢它,则使用 。
:nnoremap <leader>de vwged
它似乎正是你想要的。
'vwged'就是我一直在寻找的东西。谢谢。 – galath 2011-05-24 06:16:46
如果你的词分隔符是空格,dt<space>
将起作用。 t
将匹配所有字符,直到指定的字符。
一些有用的评论:dw - 删除他们称之为“小”的单词。就像在“settings.config”中一样,如果你使用的是“s”,'dw'会删除'.'前的所有内容以删除整个字符串,使用'dW'(删除“big”字) – Nemoden 2011-05-22 08:37:17
为了推广这个解决方案:'dtC ',其中'C'是要删除的单词的最后一个字符旁边的字符。 – 2011-05-22 09:37:16
但是如果你的单词后面跟着逗号或分号(或任何其他不是字的字符?)?你需要一种方法来跳转到下一个单词边界 – 2011-05-22 09:42:33
:s/\w\+//
这将替换在行首。
要使其在光标位置处替换,必须将一些行添加到vimrc中。按照说明这里
http://vim.wikia.com/wiki/Repeating_a_substitute_from_current_cursor_position
您也可以尝试d/\>
它转换为删除高达下一页尾字边界。
该行为不取决于单词的长度,而取决于游标的位置。如果光标位于单词的最后一个字符处,“e”运动也会跳到下一个单词的末尾。 – 2011-05-22 09:30:02
没错,再次感谢。问题得到纠正。 – galath 2011-05-24 06:29:46
已经回答了,但'cw'也可能对你有用。它完成你所描述的内容,但也会跳转到编辑模式。 – 2011-05-24 07:15:02