當我有 16 GB RAM 時,為什麼 Vim 無法開啟 100 MB 文字檔案?

當我有 16 GB RAM 時,為什麼 Vim 無法開啟 100 MB 文字檔案?

我有一個 100MB 的 MySQL 資料庫備份文件,但在具有 16G RAM 的 Linux 機器上的 Vim 中打開它時遇到問題。

Vim 只是掛起(至少無法使用)。這是我不明白的事。我有 16 GB RAM,為什麼無法在編輯器中載入 100 MB 檔案?

是因為 Vim 嗎?我認為所有的記憶體管理都是由作業系統處理的。

答案1

Vim 有時會在處理行數異常長的檔案時遇到問題。它是一個文字編輯器,因此它是為文字檔案設計的,行長度通常最多為幾百個字元寬。

資料庫檔案可能不包含許多換行符,因此它可能是一個 100 Mb 長的行。 Vim 不會對此感到滿意,儘管它可能會工作,但加載文件可能需要相當長的時間。

我確實已經打開了文字使用 Vim 處理大於 100 Mb 的檔案。該檔案甚至不需要一次全部裝入記憶體(因為 Vim 可以根據需要將變更交換到磁碟)。

答案2

根據我的經驗,Vim 不會窒息大文件,但是在排長龍。使用此命令可以得到mysqldump使用較短的線路以犧牲更大的文件:

$ mysqldump --complete-insert -u -p

此外,您可以打開 Vim 並要求它不要解析您的.vimrc檔案或使用以下命令加載任何插件:

$ vim -u NONE output.sql

以這種方式載入 Vim 將使用更少的內存,並且不需要 Vim 像許多插件那樣解析整個檔案。

答案3

「載入沒有 .vimrc 和外掛程式的 VIM(乾淨的 VIM),例如對於巨大的文件

  gvim -u NONE -U NONE -N largefile.sql

答案4

Vim 不只是將檔案原樣載入到記憶體中。它將其轉換為內部結構(行、單字等),使用內部腳本語言執行語法突出顯示等;所有這些都會消耗記憶體(比一個字元的一個位元組多得多)和 CPU 時間。

相關內容