代码之家  ›  专栏  ›  技术社区  ›  merlin2011

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

vim
  •  1
  • merlin2011  · 技术社区  · 6 年前

    请考虑以下文本文件:

    --> Foobar
        Barfoo
    

    我想将此文本转换为

        Foobar
    --> Barfoo
    

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

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

    2 回复  |  直到 6 年前
        1
  •  2
  •   merlin2011    6 年前

    在学习了视觉再选择之后( gv ),我找到了一种方法,可以推广到任何类型的视觉选择(第一步是不同的,这取决于一个人想要选择和移动什么)。

    1. 直观地选择块: 0vf>
    2. 将块拉入寄存器: y
    3. 重新选择块: 全球价值
    4. 将所有文本替换为空格字符: r[Space]
    5. 下移一行: j
    6. 进入替换模式 [Shift]R .
    7. 粘贴寄存器内容 [Control]R"

    我把它作为一个宏录制下来,效果相当不错。

        2
  •  1
  •   gregory    6 年前

    虽然坚持使用原生vim有其优点,但有时它不值得成为这样一个纯粹主义者。可视化块是一个值得用插件增强的领域。对你来说,我建议 vim-schlepp 基于Damian Conway的 dragvisuals.vim 使拖动和复制可视块成为一种乐趣的插件。有关可视块插件的更多想法,请观看Conway的演示 here .