【发布时间】:2012-02-27 22:55:15
【问题描述】:
在 Vim 中,有没有办法将选定的文本移动到 <current_file>.bak,追加或前置?
如果可能,不应显示备份文件。
我设想的工作流程是:
- 选择一些文字
- 输入
:sbak - 选择保存到
<current_file>.bak
【问题讨论】:
在 Vim 中,有没有办法将选定的文本移动到 <current_file>.bak,追加或前置?
如果可能,不应显示备份文件。
我设想的工作流程是:
:sbak
<current_file>.bak
【问题讨论】:
您可以分三步完成:
:'<,'>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
【讨论】:
expand('%:t')获取当前文件名
fnameescape()a:filename。
>> 之后省略文件名将追加到当前文件。之后使用e: 刷新缓冲区并查看附加的行。
怎么样
:'<,'> w! >> /YOUR/SELECTIONFILE:'<,'>d这就是你想要的吗?如果是这样,请为它设置一个map,比如
map <F2> :'<,'> w! >> /YOUR/SELECTIONFILE<cr>:'<,'>d<cr>
注意这附加到SELECTIONFILE,和不仅是选择,而且是整行。另外,阅读:h :w 和:h ++opt (在其中您可以了解写入文件的可能选项(例如)您可以附加到具有不同编码的文件,这真的很麻烦,所以不要这样做;-)
【讨论】:
您可以使用以下命令将 vim marks 选择的文本写入文件。
例如,您转到:20 行,然后将其标记为ma,然后转到第30 行:30 并将其标记为mb,然后将第20 到30 行复制到文件filename.dat @ 987654326@.
:'a,'b w filename.dat 将标记 a 到标记 b 的行写入文件 filename.dat
:'a,'b w! filename.dat 将现有文件 filename.dat 替换为从标记 a 到标记 b
:'a,'b w >> filename.dat 将从标记 a 到标记 b 的行附加到文件 filename.dat
【讨论】: