自己帳號下 Vim (甚至是 Neovim) 要裝什麼都很簡單,但動到系統的時候基本上儘量維持原狀,除非是利遠大於弊的項目。
這次遇到的問題是用 sudo vim
改 nginx 設定檔時無法判斷出正確的 filetype=nginx
,這點通常可以在檔案開頭放個 # vim: typefile=nginx
解決,這個功能叫做 modelines。
但這也代表在開任意檔案的時候很危險,因為他可以任意設定 Vim 的變數,所以就有了 securemodelines 這個套件,只允許某些參數被 override。(不過後來好像名稱變成有 dash 的 secure-modelines)
所以問題就變成要怎麼讓 root 吃這個 plugin... 我研究一輪後決定這樣搞:
先在 Ubuntu 上安裝 vim-scripts,這個套件裡面就有 secure-modelines,從 dpkg -L vim-scripts
裡面可以看到:
/usr/share/doc/vim-scripts/html/secure-modelines.html /usr/share/vim-scripts/secure-modelines /usr/share/vim-scripts/secure-modelines/plugin /usr/share/vim-scripts/secure-modelines/plugin/securemodelines.vim /usr/share/nvim/site/pack/dist-bundle/opt/secure-modelines /usr/share/vim/vimfiles/pack/dist-bundle/opt/secure-modelines
接著就是到 /etc/vim/vimrc.local
裡面放設定,因為這個檔案會被 /etc/vim/vimrc
自動呼叫:
set runtimepath+=/usr/share/vim/vimfiles/pack/dist-bundle/opt/secure-modelines packadd! secure-modelines
這樣避免了裝 package manager...