我正在嘗試將 vim 與插件一起容器化。我正在使用奇點容器。最重要的插件是youcompleteme。我將插件容器化的方法是安裝 vim 并將所有插件克隆到/etc/vim/plugin并在構建期間編譯 youcompleteme。構建映像后,我啟動 vim 并使用runtimepath (rtp)指向 /的修改etc/vim:
奇點運行 vim_image.sif vim --cmd 'set rtp^=/etc/vim'
但是,vim 無法加載插件。我收到如下錯誤:
處理 /etc/vim/plugin/sonokai/autoload/airline/themes/sonokai.vim 時檢測到錯誤:第
10 行:E117:未知函式:sonokai#get_configuration 第 11 行:E121:未定義變數:s:configuration E116:無效引數函式 sonokai#get_palette(s:configuration.style, s:configuration.colors_override)...
我希望 vim 可以/etc/vim/plugin毫無問題地加載任何插件。我堅持這一點。歡迎任何建議。
uj5u.com熱心網友回復:
安裝 vim 并將所有插件克隆到
/etc/vim/plugin
即使在物理機器上,這也行不通。
Vim 的運行時檔案以特定方式布局,預計在所有級別上都是一致的,因此將檔案放在隨機的任意位置對您沒有任何好處,因為沒有任何東西會出現在預期的位置。
在這個特定的情況下,plugin/sonokai/autoload/airline/themes/sonokai.vim是一個自動加載的腳本,但是因為你天真地把它放在 下plugin/,它是作為一個全域插件來獲取的,這只會造成麻煩。
Vim 允許您plugin/出于組織目的創建目錄層次結構,但這些子目錄僅用于全域插件。檔案型別插件、語法腳本、縮進腳本、自動加載腳本等與那里無關,因此必須將它們移動到適當的目錄下:ftplugin/、、syntax/等。
這種機制會導致這樣一種情況,對于給定的第三方插件foo,您會得到分散在各處的檔案:
plugin/foo/foo.vim
syntax/foo/foo.vim
bar/bar.vim
indent/foo/foo.vim
bar/bar.vim
etc.
從技術上講,它可以作業,如果您沒有太多插件,它甚至可能可用,但它本質上是混亂的。
如今,處理插件的首選方式是通過新:help package功能。在不過多破壞檔案的情況下,在 Vim 的運行時中有一個名為的新目錄pack,您可以在該目錄下放置整個第三方插件,每個插件都在它們自己的目錄中,這基本上是您在plugin/. 因此,您將擁有以下布局,而不是上面的布局:
" one directory for plugin `foo`
pack/<whatever>/start/foo/plugin/foo.vim
indent/foo.vim
syntax/foo.vim
" and one directory for plugin `bar`
pack/<whatever>/start/bar/indent/bar.vim
syntax/bar.vim
在普通用戶的正常設定中,該pack目錄應在$HOME/.vim/. 在這種特定情況下,幾乎可以肯定是正確的位置$VIM/vimfiles/。的確切值$VIM取決于很多事情,所以你必須問 Vim 它在哪里:
:echo $VIM
并相應地調整您的安裝腳本。
不過,我不確定將 Vim 容器化的好處。
uj5u.com熱心網友回復:
由于我無法發表評論,我將把這些留在這里。你可以在最流行的 vim 發行版 SpaceVim 中看到其他人是如何做到的。
- SpaceVim Docker 安裝
- SpaceVim Docker 存盤庫
- 另一個簡單的例子
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/481425.html
