我可以使用vim有效地打开一个大文件吗?


17

有时我需要打开一个数GB的日志文件,现在我需要使用tail获取合适的部分,但这非常繁琐。

我可以使用vim直接打开它吗?当前,当打开一个大文件时,vim将占据大量内存。如果有某些选项可以阻止该内存加载?

Answers:


13

如果您只想查看文件,请使用less

如果您需要剪切文件的特定部分,请执行以下操作(少于):

  1. 转到您感兴趣的第一页

  2. 按下键,m然后a-表示位置a

  3. 转到您感兴趣的文件的最后一个位置

  4. 按下键|(管道),然后a--这意味着:将此处的所有管道都管道起来,然后将a定位到命令

  5. 输入要发送数据的命令。如果要将这些数据复制到编辑器缓冲区中,只需将其vim -用作命令(文件名中的减号表示将从stdin中读取要编辑的文件)。

如果您知道需要从特定位置到文件末尾的所有数据,也可以这样做:

  1. 转到您感兴趣的第一页

  2. 按下键|(管道),$--这意味着:将此处和文件末尾之间的所有内容管道传输到命令

  3. 输入您要将数据发送到的命令(例如cat >/tmp/myfilevim -)。


1
我不知道less可以做到这一点。谢谢:)
icedwater

4

看看这个这个

基本上,您可以选择:

  1. 试试看Vim 大文件脚本。编辑大型文件时,它会禁用某些功能以提高Vim的响应速度。
  2. 将文件分解为较小的块,编辑所需的块,然后将它们重新连接在一起。

3

是的,Vim可以打开非常大的文件。但是,为了节省内存,您可能需要注意以下几点:

  • 忽略文件类型(不突出显示语法,等等),尽管很可能根本没有语法高度限制日志文件,但是要确保它不会开始遍历它们
  • noswapfile(您绝对不想要该大小的文件的副本)
  • bufhidden =卸载(查看其他文件时保存内存)
  • buftype = nowritefile(只读)
  • 撤消级别= -1(无法撤消)

也许我错过了一个或两个选项,但是到目前为止,这些都在我的_vimrc中。


请注意,(1)有一个插件(vim.org/scripts/script.php?script_id=1506),可以在打开大文件时自动打开其中几个选项,以及(2)即使使用此程序,也可以打开文件大小超过几个GB仍然是有问题的,因此我建议在此遵循“ Ctrl-C”提示:stackoverflow.com/a/19795855/1858225
Kyle Strand 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.