Answers:
这些自定义命令如何:
:command! -bang -range -nargs=1 -complete=file MoveWrite <line1>,<line2>write<bang> <args> | <line1>,<line2>delete _
:command! -bang -range -nargs=1 -complete=file MoveAppend <line1>,<line2>write<bang> >> <args> | <line1>,<line2>delete _
通过“将一段文本移动到新文件”,我假设您的意思是从当前文件中剪切出该段文本并创建一个仅包含该文本的新文件。
各种示例:
:1,1 w new_file
创建一个仅包含第1行文本的新文件:5,50 w newfile
创建一个包含第5行到第50行文本的新文件:'a,'b w newfile
创建一个包含文本从标记一个新的文件a
,以标志b
上面的代码仅复制文本并创建一个包含该文本的新文件。然后,您需要随后删除。
可以使用相同的范围和d
命令来完成此操作:
:5,50 d
从第5行到第50行删除文本:'a,'b d
从标记删除文本a
来标记b
或dd用于单行情况。
如果改为使用可视模式选择文本,然后:
在选择文本时单击,则在命令行上将看到以下内容:
:'<,'>
指示所选文本。然后,您可以将命令扩展为:
:'<,'>w >> old_file
它将文本附加到现有文件。然后如上所述删除。
:2,3 d | new +put! "
细目:
:2,3 d
-删除第2至3行|
-从技术上讲,这会将第一个命令的输出重定向到第二个命令,但是由于第一个命令不输出任何内容,因此我们只是将命令链接在一起new
-打开一个新的缓冲区+put! "
-将未命名寄存器("
)的内容放入缓冲区
!
)在那里,因此将内容放置在当前行之前。这会导致文件末尾出现空行。没有它,文件顶部将有一个空行。'<,'>d | new | 0put "
清楚。
在可视模式下选择文本,然后按y将其“猛拉”到缓冲区中(复制)或d将其“删除”到缓冲区中(剪切)。
然后,您可以:split <new file name>
拆分vim窗口,然后按p粘贴在选中的文本中。正常写入文件。
要再次关闭拆分,请传递您要关闭的拆分:q
。
:x
改为通过拆分,则可以将书写和结尾合二为一,并分为五个步骤。:P