通常我所做的是删除一个文件中的行,转到另一个文件,然后粘贴。
此外,我通常使用标记。而不是输入实际数字,我按下 mb
标记开始行,然后去到结束行并按下 d'b
删除到被标记为 b
的行。但您也可以使用 mb
标记开始行和 me
标记结束行,然后运行 ex 命令:
:'b,'e w somefile.txt<Enter>
当然,您可以使用任意从 a
到 z
的字母作为标记;我通常使用 b
和 e
,但您可以使用您喜欢的字母。
我如何移动这些行:
m'b
<navigate to end line>
d'b
:n somefile.txt<Enter>
p
Ctrl+^
按下Ctrl+^可以从当前打开的文件切换到上一个打开的文件。(如果您喜欢,您也可以只打开一个窗格并切换窗格。在普通的vi中不支持窗格,但在vim中是可以的)
上述假设您已经设置了autowrite
选项。通过autowrite
,:n
命令和Ctrl+^都只会先写入当前文件,然后再切换到其他文件,而不是抱怨文件已被更改而未保存。您还可以在使用:n
或Ctrl+^之前明确地写入文件。
顺便说一句,我使用Ctrl+^非常频繁,所以我将其映射到了K
键。这样更容易输入,但我很久以前养成了这个习惯,当时我有时必须使用无法输入Ctrl+^的哑终端。
顺便说一下,当您删除行时,它们会进入“未命名缓冲区”。在vim中,当您切换文件时,未命名的缓冲区会被保留。在原始的vi中,未命名的缓冲区会被清除。因此,上述方法对于旧版本的vi不起作用。您可以通过删除到命名缓冲区,然后从命名缓冲区粘贴来使其在任何版本的vi中都可以使用。
m'b
<navigate to end line>
"ad'b
:n somefile.txt<Enter>
"ap
Ctrl+^
上述操作将内容删除到名为
a
的缓冲区,然后从
a
中粘贴到另一个文件中。当然,在vim中也能做到这一点,只是你无需这样做。