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

Car*_*Yim 22 vim

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

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

ktf*_*ktf 16

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

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

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

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

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

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

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

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

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

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

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

  • 我不知道“less”可以做到这一点。谢谢 :) (2认同)

Dan*_*ruz 7

看看这个这个

基本上,您的选择是:

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


Roo*_*ook 5

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

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

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