2012-12-17 26 views
6

我知道在這個問題上有多個帖子,但我嘗試過無法讓Vim的這個簡單部分工作。我想要讓病毒插件與Vim一起工作。作爲幾點,我正在使用Windows系統。我通過github下載了病原體,並創建了目錄.vim和子目錄autoloadbundle。我.vimrcmkvimrc創建了默認:病毒無法在Vim中工作

call pathogen#infect() 
syntax on 
filetype plugin indent on 

加入到了谷底。解決其他帖子我看到:

我猜
:set cp? = nocompatible 

的一個領域是問題的一部分,是我跑:scriptnames後,我沒有得到.vim目錄。我只獲得Vim\.vimrcvim73目錄。我如何解決這個問題?如果這件事對這裏的其他人顯而易見,我已經很長時間了,並且表示歉意。

+0

順便說一句,你的':set'語法是錯誤的。在'='周圍不應有空格,並放下'?';它用於顯示當前值。 –

回答

9

在Windows上,本地用戶配置的默認位置是$HOME/vimfiles。如果你的文件在$HOME/.vim那麼您可能需要將其移動到vimfiles或在.vimrc添加.vim您runtimepath:

set runtimepath+=~/.vim 

而且,如果病原體在bundle子目錄,你需要明確地運行它從那裏,因爲默認Vim只會在~/.vim/。在pathogen#infect調用之前把這個在您的.vimrc

runtime bundle/pathogen/autoload/pathogen.vim 
+1

就是這樣,我將.vim目錄移到了vimfiles中,似乎都在工作。謝謝,這已經讓我瘋狂了。 – Liam

+0

沒問題。在不同平臺之間移動文件時,這經常令我感到困惑。我希望Vim的默認值是一致的! –

0

開放的Vim 禁用插件並鍵入:set rtp - 注意:

  • ,如果你的系統是Unix,則默認爲:第一去~/.vim,最後去~/.vim/after;
  • 如果你在Windows上,那麼默認情況下:第一個去~/vimfiles,最後一個去~/vimfiles/after

這是一種Vim慣例。 after目錄用於強制覆蓋Vim的默認設置或插件設置,有時這很重要。這就是爲什麼他們是rtp中的最後一個。

病原體實際上會分析當前rtp變量的結構,並使用它將插入路徑正確注入rtp。例如,看我的rtp

runtimepath= 
~/.vim, 
~\.vim\plugins\NERDCommenter, 
~\.vim\plugins\NERDTree, 
~\.vim\plugins\SameSyntaxMotion, 
~\.vim\plugins\Tabular, 
~\.vim\plugins\UltiSnips, 
~\.vim\plugins\c.vim, 
~\.vim\plugins\clang_complete, 
~\.vim\plugins\CountJump, 
~\.vim\plugins\delimitMate, 
~\.vim\plugins\fswitch, 
~\.vim\plugins\matchit, 
~\.vim\plugins\matlab, 
~\.vim\plugins\neocomplcache, 
~\.vim\plugins\protodef, 
~\.vim\plugins\python-syntax, 
~\.vim\plugins\solarized, 
~\.vim\plugins\syntastic, 
~\.vim\plugins\vim-creole, 
~\.vim\plugins\vim-latex, 
~\.vim\plugins\vim-markdown, 
~\.vim\plugins\vim-python-pep8-indent, 
~/vimfiles, 
D:\Applications\Vim/vimfiles, 
D:\Applications\Vim, 
D:\Applications\Vim/vimfiles/after, 
~/vimfiles/after, 
~\.vim\plugins\Tabular\after, 
~\.vim\plugins\UltiSnips\after, 
~\.vim\plugins\vim-markdown\after, 
~/.vim/after 

通知病原體如何注入路徑。它已經檢測到幾個插件有after目錄,並且在~/.vim/after之前放置它們 - 所以最後一個字永遠是我的。

爲了實現這種病原體需要一雙要麼~/.vim~/.vim/after~/vimfiles~/vimfiles/after甚至~/stuff~/stuff/after的(不知道,雖然最後的情況下)作爲錨注入正確的順序插件的路徑。

如果這對中的任何一個目錄丟失,那麼你會對病原體有一些令人討厭的經歷(就像我之前做的一樣,直到我發現所有上述的東西,並通過病原體源代碼剔除) - 因爲路徑不會能夠正確注入。

現在你可以看到,Prince Goulash提供的答案是完全錯誤的

  1. 的第一個錯誤是,他已經追加到~/.vimrtp他 應該預先考慮它;
  2. 第二個錯誤是他沒有追加~/.vim/after

正確的解決方案如下所示。如果您在不同的平臺,包括Windows,你倒是應該加入到這個工作,你.vimrc(我把這個礦,以及 - 你可以從我rtp例子來推斷):

if has('win32') || has('win64') 
    set runtimepath^=~/.vim 
    set runtimepath+=~/.vim/after 
endif 

這個片段將跨確保一致性平臺。即使在Windows中,您現在也可以使用類似Unix的目錄.vim,並忘記vimfiles廢話 - 這是IMO醜陋可怕的。

之後,你撥打:

call pathogen#infect('plugins') " or wherever your plugins reside 
call pathogen#helptags()  " optional, but really cool 

注:'plugins'表示~/.vim/plugins目錄,所以它是相對的~/.vim

1

我的解決方案是重新下載pathogen.vim,因爲它以某種方式未能遵循重定向未能下載。在tpope的github指定的URL具有以下步驟:

mkdir -p ~/.vim/autoload ~/.vim/bundle && \ 
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim 

你就會知道重定向下載失敗作爲pathogen.vim的內容將是一個302重定向頁面。只需從重定向中包含的URL下載,例如:

wget -N -O ~/.vim/autoload/pathogen.vim https://raw.githubusercontent.com/tpope/vim-pathogen/master/autoload/pathogen.vim