有没有一种本机的方法可以在与相邻行交换时在Vim中垂直移动文本?

时间:2018-08-08 23:19:41

标签: vim

考虑以下文本文件:

--> Foobar
    Barfoo

我想将此文本转换为

    Foobar
--> Barfoo

有几种方法可以做到这一点。一种可能性是使用REPLACE模式用三个空格覆盖第一行,然后使用REPLACE模式。

但是,我想知道是否存在一种本机方式来选择数组文本(也许在可视块模式下)并将其下拉到相邻行。

2 个答案:

答案 0 :(得分:2)

学习了视觉重新选择(gv)之后,我想出了一种方法,该方法可以概括为任何类型的视觉选择(第一步根据要选择的内容而有所不同,移动)。

  1. 直观地选择该块:0vf>
  2. 将该块添加到寄存器中:y
  3. 重新选择块:gv
  4. 用空格字符替换所有文本:r[Space]
  5. 下移一行:j
  6. 使用[Shift]R进入替换模式。
  7. 粘贴寄存器内容[Control]R"

我将其记录为宏,并且效果很好。

答案 1 :(得分:1)

尽管坚持原生vim有其优点,但有时不值得成为一个纯粹主义者。可视块是一个值得通过插件增强的领域。在您的情况下,我建议使用基于Damian Conway的vim-schlepp插件的dragvisuals.vim,该插件使视觉块的拖动和复制成为一种乐趣。有关可视块插件的更多想法,请观看Conway的演示here