Ich versuche, meine .viminfo
Datei in meinen .vim/
Ordner zu verschieben, um die Synchronisierung auf mehreren Computern zu vereinfachen. (Ich habe meine .vim
auf Dropbox gespeichert und erstelle dann aus meinem Home-Verzeichnis Symlinks dazu.)
Also habe ich heute Morgen diese Antwort gefunden , wie man genau das macht. Großartig! Leider benutze ich Windows bei der Arbeit und Mac zu Hause, so ~/.vim
ist es eigentlich manchmal ~/vimfiles
. Als Ergebnis eine einzeilige Lösung
set viminfo+=n~/.vim/viminfo
ist jetzt eine 5-Zeilen-Lösung geworden
if has('unix')
set viminfo+=n~/.vim/viminfo
elseif has('win32')
set viminfo+=n~/vimfiles/viminfo
endif
das fühlt sich für mich einfach ungeschickt an.
Gibt es eine Standardumgebungsvariable, mit der ich auf den benutzerspezifischen Laufzeitpfad zugreifen kann, à la $VIMRUNTIME
oder $MYVIMRC
? Oder muss ich nur herumtanzen?
Angenommen, Sie haben es nicht geändert, ist das erste Element in
&runtimepath
standardmäßig Ihr Laufzeitverzeichnis:Mit diesem Wert können Sie Vim mitteilen, wo Ihre
viminfo
Datei mit diesem plattformunabhängigen Einzeiler abgelegt werden soll:Ressourcen:
quelle
&runtimepath
Wird von Plugin-Managern manipuliert, gibt es absolut keinen Grund, mit$HOME/.vim
oder mit zu beginnen$HOME\vimfiles
.&runtimepath
immer mit dem Standard-Laufzeitverzeichnis auf Benutzerebene für die aktuelle Plattform. Jetzt ist es offensichtlich möglich, dass der Benutzer seine'rtp'
Unkenntlichkeit schlachtet, aber AFAIK-Erreger, Vundle, Plug, VAM und Neobundle verlassen alle~/.vim
(oder ähnliche) am Anfang.pathogen#infect("$VIM/local/bundle/{}")
Um (1) Bundles für alle Benutzer verfügbar zu machen, (2) sie von der Hauptlaufzeit von Vim getrennt zu halten und (3) sie automatisch zu aktualisieren.~/.vim
landet mit diesem Setup in der Mitte des Bündels.Der erste Fehler, den ich in Bezug auf Windows immer wieder sehe, ist immer der Versuch, das Problem mit zu lösen
$HOME
, nicht wahr?Die Verwendung
$HOME
führt möglicherweise zu Problemen, insbesondere wenn Sie Unix-ähnliche Umgebungen verwenden (Cygwin, Git Bash usw.). Verwenden Sie es nicht in Skripten, sondern legen Sie es nicht als Umgebungsvariable fest. Tatsächlich führt die Einstellung$HOME
dazu, dass Cygwin nicht mehr richtig funktioniert und git bash ähnliche Aktionen ausführt. Je mehr Sie spielen, desto$HOME
schlimmer werden die Fehler, und es wird schwieriger, sie aufzuspüren. Benutze es einfach nicht.Windows baut das
$HOME
on the fly und hinter den Kulissen mit%HOMEDRIVE%%HOMEPATH%
. Verwenden Sie dies einfach in Ihrem_vimrc
odervimrc
(ohne Punkt):Dies sollte das Problem lösen. Wenn Sie geändert haben
vimfiles
,.vim
um entsprechend anzupassen.quelle
Ich habe den viminfo-Ordner von Windows in .vim umbenannt (oder den Inhalt des ersteren in den letzteren kopiert und dann den ersteren gelöscht) und sie dann mit verknüpft
mklink /d viminfo .vim
. (Beachten Sie, dass mklink seine Argumente in der entgegengesetzten Reihenfolge vom Unix 'ln-Befehl übernimmt.)quelle