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

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

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

我可以直接使用 vim 打开它吗?目前 vim 在打开大文件时会占用大量内存...只是想知道为什么需要它?是否有某些选项可以阻止加载内存?

答案1

如果你只是想查看一个文件,可以使用较少的

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

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

  2. 按下按键m-a这意味着:标记位置a

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

  4. 按下按键|(管道)a- 这意味着:将此处和位置 a 之间的所有内容通过管道传输到命令

  5. 输入要发送数据的命令。如果要将此数据复制到编辑器缓冲区,只需使用vim -as 命令(减号 as filename 表示要编辑的文件将从标准输入读取)。

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

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

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

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

答案2

查看

基本上,您的选择是:

  1. 赋予 Vim大文件尝试一下脚本。它禁用某些功能以提高 Vim 在编辑大文件时的响应能力。
  2. 将文件分成更小的块,编辑您关心的块并将它们重新连接在一起。

答案3

是的,Vim 可以打开非常大文件。但是,为了节省内存,在执行此操作之前您可能应该记住一些事项:

  • 忽略文件类型(无语法高亮等),尽管很可能它根本不会对日志文件进行语法高亮,但只是为了确保它不会开始浏览它们
  • noswapfile(你肯定不想要那么大的文件副本)
  • bufhidden = unload(查看其他文件时节省内存)
  • buftype = nowritefile (只读)
  • undolevels = -1(无法撤消)

也许我错过了一两个选项,但这些都在我的 _vimrc 中。

相关内容