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

bra*_*rad 2 vim

我有两个文件,比如a.txtb.txt,在 vim 的同一个会话中,我拆分了屏幕,所以我a.txt在上部窗口和b.txt下部窗口中有文件。

我想在这里动线,有来自a.txtb.txt:我选择了行Shift+ v,然后我移动到b.txt与下窗Ctrl+ w ,用粘贴p,回到a.txtCtrl+ w ,我可以重复操作,当我到达另一条线我想移动。

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

Ant*_*gan 5

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

记录

来自重复作业的录制键 - Vim Tips

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

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

我按下qm记录以下命令:

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

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

dd^Wjp^Wk
Run Code Online (Sandbox Code Playgroud)

用法

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