vim在使用自動補齊的時候會爆
2014-09-18 11:58:02

在使用vim的時候,每當按下.[tab]的使候就會出現下面的錯誤訊息,接著vim就閃退了。

Vim: Caught deadly signal SEGV
Vim: preserving files...
Vim: Finished.

這個問題其實困擾我很久了,於是決定找個時間解決這個問題。尋問G大(keyword: vim autocomplete crash)之後,首先看到這篇Vim segfault upon some autocompletion in ruby files。有人提到這其實是rvm造成的問題,當啟動vim的時候,rvm會影響vim中plugin使用ruby的版本。一個簡單的測試方式就是在vim中輸入指令::ruby a=1(這個指令只是簡單執行一小段ruby的程式碼a=1),如果vim同樣爆了,那就是ruby版本的問題了。

測試的解果看來的確是這個問題,於是又有了這篇github:carlhuda/janus - Using RVM,它提出了解決的方式,就是在執行vim的時候強制unset rvm相關的環境變數。不過這篇提到的兩種方法,我用了還是不行。

再次受挫之後,看到有人提及vim本身compile的時候ruby的版本也會影響,於是抱著死馬當活馬醫的心情,重新compile了vim,而且還指定使用system的ruby版本來compile。搞了半個小時的時間,終於讓我試出來了,下面是最後的步驟。

  • 刪除原本的vim:brew remove vim
  • 使用系統ruby重新安裝編譯vim:rvm system do brew install vim
  • 在.zshrc中加入設定,強制使用系統ruby來執行vim

alias vim='rvm system do /usr/local/bin/vim $@'

UPDATE 2015-08-06

因為實在是受不了mac上的vim在打開大檔案的時候,速度變的極度緩慢…最後還是投奔sublime的懷抱(當然是with vim plugin啦,呵呵)。