在Vim中,有没有办法将所选文本移动到<current_file>.bak
,附加或前置?
如果可能,不应显示备份文件。
我设想工作流程为:
:sbak
<current_file>.bak
答案 0 :(得分:31)
您可以分三步完成:
:'<,'>w! >>file.bak
,将选定的行保存到file.bak
(追加)如果您愿意,可以编写用户定义的命令 Sbak
:
com! -nargs=1 -range Sbak call MoveSelectedLinesToFile(<f-args>)
fun! MoveSelectedLinesToFile(filename)
exec "'<,'>w! >>" . a:filename
norm gvd
endfunc
答案 1 :(得分:11)
怎么样?
:'<,'> w! >> /YOUR/SELECTIONFILE
:'<,'>d
这就是你想要的吗?如果是这样,请设置map
,例如
map <F2> :'<,'> w! >> /YOUR/SELECTIONFILE<cr>:'<,'>d<cr>
注意这不只是选择SELECTIONFILE
,和,还包括整行。另外,阅读:h :w
和:h ++opt
(您可以在其中了解编写文件的可能选项(例如),您可以附加到具有不同编码的文件,这真的会让事情变得混乱,所以不要这样做那;;)
答案 2 :(得分:0)
您可以使用以下命令将 vim marks 选择的文本写入文件。
例如,您转到第 :20
行,然后将其标记为 ma
,然后转到第 30 行 :30
并将其标记为 mb
,然后复制第 20 行到 30 到文件 filename.dat :'a,'b w filename.dat
。
:'a,'b w filename.dat
将标记 a 到标记 b 的行写入文件 filename.dat
:'a,'b w! filename.dat
用从标记 a 到标记 b
:'a,'b w >> filename.dat
将标记 a 到标记 b 的行附加到文件 filename.dat