2012-12-17 5 views
6

Ich weiß, es gibt mehrere Beiträge zu dieser Frage, aber ich habe versucht, ohne Erfolg, um diesen einfachen Teil von Vim zu arbeiten. Ich würde gerne das Pathogen-Plugin mit Vim arbeiten lassen. Als ein paar Punkte arbeite ich an einem Windows-System. Ich habe den Erreger über github heruntergeladen und die Verzeichnisse .vim und die Unterverzeichnisse autoload und bundle erstellt. Mein .vimrc ist die Standardeinstellung mit mkvimrc mit erstellt:Pathogen kann nicht in Vim

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

zum Boden gegeben. Addressing andere Nachrichten Ich habe gesehen:

:set cp? = nocompatible 

Ein Bereich, ich vermute, bin ein Teil des Problems ist, nachdem ich :scriptnames laufe ich nicht das .vim Verzeichnis. Ich bekomme nur die Vim\.vimrc und vim73 Verzeichnisse. Wie adressiere ich das? Ich war schon lange hier und entschuldige mich, wenn dies für andere hier offensichtlich ist.

+0

BTW, Ihre ': set'-Syntax ist falsch. Es darf keine Leerzeichen um das '=' geben und das '?' Fallen lassen; Es zeigt den aktuellen Wert an. –

Antwort

9

Unter Windows ist der Standardspeicherort der lokalen Benutzerkonfiguration $HOME/vimfiles. Wenn Sie Ihre Dateien sind in $HOME/.vim dann entweder Sie müssen sie vimfiles bewegen oder .vim zu Ihrem runtimepath in Ihrem .vimrc hinzufügen:

set runtimepath+=~/.vim 

Auch wenn Pathogen in einem Unterverzeichnis von bundle ist, müssen Sie es explizit laufen von dort aus, da Vim standardmäßig nur in ~/.vim/ suchen wird. Setzen Sie diese in Ihrem .vimrc vor dem pathogen#infect Aufruf:

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

Das war genau das, ich habe das .vim-Verzeichnis in vimfiles verschoben und alles scheint zu funktionieren. Danke, das hat mich verrückt gemacht. – Liam

+0

Kein Problem. Dies verwirrt mich oft beim Verschieben von Dateien zwischen verschiedenen Plattformen. Ich wünschte, Vims Vorgaben wären konsistent! –

0

öffnen Vim mit deaktiviert Plugins und geben :set rtp - feststellen, dass:

  • , wenn Sie auf Unix, dann standardmäßig: die erste geht ~/.vim und der letzte geht ~/.vim/after;
  • Wenn Sie unter Windows sind, dann standardmäßig: der erste geht ~/vimfiles und der letzte geht ~/vimfiles/after.

Dies ist eine Art Vim-Konvention. after Verzeichnisse werden verwendet, um Vims Standardeinstellungen oder Plugins-Einstellungen zwangsweise zu überschreiben, was manchmal wichtig ist. Deshalb sind sie die letzten in der rtp.

Pathogen tatsächlich analysiert die Struktur Ihrer aktuellen rtp Variable und verwendet es, um Pfade von Plugins in die rtp richtig injizieren. Zum Beispiel sehen Sie sich meine 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 

Beachten Sie, wie Erreger Wege injiziert. Es hat festgestellt, dass mehrere Plugins after Verzeichnis haben und setze sie direkt vor ~/.vim/after - damit das letzte Wort immer mir gehört.

diese Erreger zu erreichen, muss ein Paar entweder ~/.vim und ~/.vim/after oder ~/vimfiles und ~/vimfiles/after oder sogar ~/stuff und ~/stuff/after (nicht sicher über den letzten Fall aber) als Anker Plugins' Pfade in der richtigen Reihenfolge zu injizieren.

Wenn irgendein Verzeichnis von diesem Paar fehlt, dann haben Sie einige unangenehme Erfahrungen mit Krankheitserregern (wie ich es vor einiger Zeit getan habe, bis ich all die oben genannten Sachen herausgefunden habe und den Erregerquellcode überflogen habe) - weil Wege nicht sein werden kann richtig injiziert werden.

Jetzt können Sie sehen, dass die Antwort von Prince Goulash vorgesehen ist vollständig falsch:

  1. der erste Fehler ist, dass er ~/.vim zu rtp während angehängt hat er vorangestellt haben sollte; Der zweite Fehler ist, dass er ~/.vim/after nicht angehängt hat.

Die richtige Lösung sieht wie folgt aus. Wenn Sie auf verschiedenen Plattformen, einschließlich Windows arbeiten müssen, sollten Sie eher fügen Sie diese in Ihre .vimrc (Ich halte dies in Mine als auch - Sie es von meinem rtp Beispiel entnehmen kann):

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

Dieser Code-Schnipsel Konsistenz gewährleisten über Plattformen. Sie können jetzt Unix-ähnliches Verzeichnis .vim sogar in Windows und vergessen Sie die vimfiles Mist - die IMO hässlich und schrecklich ist.

Danach rufen Sie:

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

HINWEIS:'plugins' das ~/.vim/plugins Verzeichnis bezeichnet, so ist es relativ von ~/.vim.

1

Die Lösung für mich war das erneute Herunterladen der pathogen.vim, da es irgendwie fehlgeschlagen hatte, herunterzuladen, indem man einer Umleitung nicht folgen konnte. Die URL auf tpope des angegebenen github hat folgenden Schritt:

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

Sie die Umleitung wissen fehlgeschlagen, da die Inhalte von pathogen.vim zum Download wird eine 302-Umleitung Seite sein. Einfach von der URL herunterladen, die in der Weiterleitung enthalten ist. Beispiel:

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