【问题标题】:How to replace current string line with another line in vim?如何用vim中的另一行替换当前字符串行?
【发布时间】:2014-07-31 05:44:01
【问题描述】:

我想用另一行替换当前字符串行(例如,另一行位于当前行上方的 5 行中)。我可以用一对命令做到这一点

dd
:-5t-1

有没有更短的方法可以达到相同的目标?

【问题讨论】:

    标签: vim replace edit vi


    【解决方案1】:
    dd
    :-5t-1
    

    如果你问我,已经很短了。但是您可以将所有内容压缩到一个单行中:

    :d|-5t-1
    

    并删除1,因为- 暗示了它:

    :d|-5t-
    

    除非制作自定义命令或映射,否则我不知道如何缩短它。

    【讨论】:

      【解决方案2】:
      :-5y<CR>Vp
      

      是不是更短了?

      如果你需要经常这样做,把它添加到你的 vimrc 中:

      command! -range R d|<line1>,<line2>t-
      

      那么你可以将:-5R 替换为-5

      2,4R cp 2-4 行(3 行)到当前行,并替换当前行。

      【讨论】:

        【解决方案3】:

        如果您不介意插件,我的LineJuggler plugin 提供了]r 命令(以及更多):

        ]r 获取当前行上方的第 [count] 行可见行,并用它替换当前行。

        有了它,你的例子将是简短的5]r


        此外,配套的LineJugglerCommands plugin 现在提供了类似的:Replace Ex 命令。同样,你的例子是

        :Replace -5
        

        【讨论】:

          猜你喜欢
          • 2011-05-30
          • 2018-01-14
          • 2010-09-09
          • 1970-01-01
          • 2021-07-19
          • 2019-11-28
          相关资源
          最近更新 更多