在 vim 中的拆分窗口之间移动行

在 vim 中的拆分窗口之间移动行

我在同一个 vim 会话中有两个文件,比如说a.txt和,我将屏幕分割,这样我就在上面窗口和下面窗口中分别有一个文件。b.txta.txtb.txt

我想将行从 移动到a.txt:我用+b.txt选择一行,然后我用+移动到下方窗口,用 粘贴,用+返回,当我到达想要移动的另一行时,我可以重复该操作。Shiftvb.txtCtrlw pa.txtCtrlw

我的问题:有没有更快的方式来表达 vim“将我所在的线路(或我选择的测试)发送到另一个窗口”

答案1

这听起来像是宏的一个很好的用例。宏是可以记录并存储在 Vim 寄存器中的命令。每个寄存器都由从 a 到 z 的字母标识。

记录

记录重复工作的按键 - Vim Tips

要开始录制,请q在普通模式下按下,然后按字母(a 到 z)。这将开始将击键记录到指定的寄存器中。Vim 将显示“记录”在状态行中。输入任何普通模式命令,或进入插入模式并输入文本。要停止录制,请q在普通模式下再次按下。

对于这个特定的宏,我选择m(用于移动)寄存器来存储它。

我按下了qm记录以下命令:

  • dd删除当前行(并保存到默认寄存器)
  • CtrlWj移至下面的窗口
  • p粘贴默认寄存器的内容
  • CtrlWk返回上面的窗口。

当我输入q完成录制宏时,寄存器的内容m是:

dd^Wjp^Wk

用法

  • 要移动当前行,只需@m在普通模式下输入。
  • 要在不同的行上重复宏,@@可用于执行最近使用的宏。
  • 要执行宏 5 次(即将当前行及其下方的以下四行移动),请使用5@m5@@

答案2

您可以直接:set clipboard+=unnamed使用系统剪贴板,它涵盖所有 vim 分割。

我在这个问题上发现了这一点 共享 Vim Yank 注册

相关内容