【问题标题】:In Vim, how to delete the suffix of a word?在 Vim 中,如何删除单词的后缀?
【发布时间】:2011-05-22 08:30:26
【问题描述】:

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

你会使用什么命令在这两种情况下都有效,最后一个字母与否?

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

【问题讨论】:

  • 这种行为不取决于单词的长度,而是取决于光标的位置。如果光标位于单词的最后一个字符,e 动作也会跳转到下一个单词的末尾。
  • 没错,再次感谢。问题已更正。
  • 已回答,但cw 也可能对您有用。它会按照您的描述进行操作,但也会让您进入编辑模式。
  • 感谢@ElYobo,cw 更容易记住!

标签: vim keyboard-shortcuts


【解决方案1】:

尝试使用vwged 而不是de,并定义如下所示的映射,如果您 喜欢。

:nnoremap <leader>de vwged

它似乎完全符合你的要求。

【讨论】:

  • vwged 是我想要的。谢谢。
【解决方案2】:

您也可以尝试d/\&gt;,它的意思是删除到下一个结束词边界。

【讨论】:

    【解决方案3】:

    如果您的单词分隔符是空格,dt&lt;space&gt; 将起作用。 t 将匹配指定字符之前的所有字符。

    【讨论】:

    • 一些有用的评论:dw - 删除他们所谓的“小”字。就像在“settings.config”中一样,如果你在“s”上,dw 会删除. 之前的所有内容来删除整个字符串,使用dW(删除“大”字)
    • 概括这个解决方案:dtC,其中C 是要删除的单词的最后一个字符旁边的字符。
    • 但是如果你的单词后面跟着逗号或分号(或任何其他不是单词的字符?)?你需要一种跳转到下一个单词边界的方法
    • @Nathan 是的,要使用此解决方案,您需要查找单词末尾旁边的字符,并在dt 之后键入它(例如,dt;)。要摆脱这样做的需要,请尝试我的答案中的映射。
    【解决方案4】:
    :s/\w\+//
    

    这将替换在行首。
    要使其替换在光标位置,您必须在 vimrc 中添加一些行。按照此处的说明进行操作

    http://vim.wikia.com/wiki/Repeating_a_substitute_from_current_cursor_position

    【讨论】:

      猜你喜欢
      • 2011-10-14
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      • 2021-05-26
      • 1970-01-01
      相关资源
      最近更新 更多