删除 Vim 中的行并将其重定向到另一个文件

sha*_*mpa 6 vi vim scripting

我想删除最后 10 行并将其移动到另一个文件。

我目前所做的是:

  • 在可视模式下选择最后 10 行,
  • 将这些行写入:'<,'>w其他文件,
  • 然后删除选定的行。

有没有更有效的方法可以做到这一点?

Jam*_*mie 6

您可以通过执行以下操作删除一个步骤:

  • 视觉上选择线条
  • :!> newfile.txt

这将使用外部命令将行写入给定的文件名,并同时删除它们,因为该命令没有输出任何内容。

如果您想追加到文件而不是覆盖它,请使用而>>不是>.


Eri*_*tis 4

您可以使用ex命令来代替。例如

:1,10w file.name   写出十行

:$-9,$w file.name 写入最后十行(美元符号表示最后一行)


通过下面的代码,.vimrc您可以使用命令:MoveTo file.name

function! MoveLastLines(f)
  exe '$-9,$w ' . a:f    "write last ten lines to the passed filename
  $-9,$d                 "delete last ten lines
endfunction

command! -nargs=1 -range MoveTo :call MoveLastLines(<f-args>)
Run Code Online (Sandbox Code Playgroud)


在正常模式下,我认为您提到的步骤 ( GV9k:w file.name gvd) 是最有效的。