将所选文本附加或前置到Vim中的文件

时间:2012-02-06 13:09:51

标签: vim save backup selection

在Vim中,有没有办法将所选文本移动到<current_file>.bak,附加或前置? 如果可能,不应显示备份文件。

我设想工作流程为:

  1. 选择一些文字
  2. 输入:sbak
  3. 选择内容已保存到<current_file>.bak

3 个答案:

答案 0 :(得分:31)

您可以分三步完成:

  • type Shift-v j ... j 选择一些行
  • 键入 :'<,'>w! >>file.bak ,将选定的行保存到file.bak(追加)
  • 键入 g v d 删除原始行

如果您愿意,可以编写用户定义的命令 Sbak

com! -nargs=1 -range Sbak call MoveSelectedLinesToFile(<f-args>)
fun! MoveSelectedLinesToFile(filename)
    exec "'<,'>w! >>" . a:filename
    norm gvd
endfunc

答案 1 :(得分:11)

怎么样?
  1. v
  2. 一些移动命令/甚至搜索以选择文本
  3. :'<,'> w! >> /YOUR/SELECTIONFILE
  4. :'<,'>d
  5. 这就是你想要的吗?如果是这样,请设置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

的行替换现有文件 filename.dat

:'a,'b w >> filename.dat 将标记 a 到标记 b 的行附加到文件 filename.dat