Wie bekomme ich das Vim-Home-Verzeichnis?


12

Ich wollte die VIMHOMEVariable auf diese Weise einstellen (gemeinsam für Windows und Linux).

let $VIMHOME=expand("%:p")."/..",

Das VIMHOMEist also "~ / .vim" unter Linux oder "path / to / vimfiles" unter Windows.

Ich habe dies in eine var.vimDatei eingefügt und im Plugin-Verzeichnis abgelegt. Es wird ordnungsgemäß geladen, aber VIMHOME ist nur auf "./ .." eingestellt.

Wie erhalte ich den vollständigen Pfad einer Datei mit expand?

Gibt es eine einfache Möglichkeit zum Einstellen VIMHOME?

Bearbeiten: Ich habe den Ausdruck geändert in:

let $VIMHOME=expand("<sfile>:p:h")

Nun VIMHOMEwird auf "~ / .vim / plugin" in Linux.

Meine Anforderung ist, VIMHOME auf "~ / .vim" oder "path / to / vimfiles" zu setzen. Aber,

let $VIMHOME=expand("<sfile>:p:h")
let $VIMHOME=expand("$VIMHOME:p:h")

funktioniert nicht.

Wie kann ich das beheben?


Fügen Sie eine weitere hinzu :h. Ich habe meine Antwort aktualisiert.
Chris Johnsen

oh .. Danke, dass das auch funktioniert ..
asdfg

Antworten:


18

Fügen Sie dies in Ihre var.vimPlugin-Datei ein:

let $VIMHOME=expand('<sfile>:p:h:h')

%in expand bezieht sich auf die zu bearbeitende Datei (dh den in der Befehlszeile angegebenen Pfadnamen). <sfile>bezieht sich auf die Datei, die "bezogen" wird (dh das Plugin oder die Startdatei, die bei der Erweiterung aktiv ist).

Der :pModifikator macht den Pfadnamen absolut und das :hSuffix löscht die letzte Pfadnamenkomponente (in diesem Fall den Dateinamen).


3
Nur ein Kopf hoch, wenn Sie eine Funktion erweitern ('<sfile>'), wird sie wahrscheinlich nicht das zurückgeben, was Sie erwarten. Die Lösung besteht darin, außerhalb der Funktion in Ihrem Skript ('<sfile>') zu erweitern (in ag: sfile variable oder so, verwenden Sie: help instance-variables für weitere Informationen) und diese Variable dann in der Funktion zu verwenden.
Jaymon

Jaymons Rat hat nach vielen frustrierenden Stunden wirklich geholfen. Legen Sie eine globale Variable außerhalb einer Funktion fest.
Dylan

4

Das habe ich gesucht,

if has ('win32') || hat ('win64')
    lass $ VIMHOME = $ VIM. "/ vimfiles"
sonst
    lass $ VIMHOME = $ HOME. "/. vim"
endif

Nicht immer wahr: Einige Leute haben vim installiert (und daher $ VIM auf eingestellt) C:\Program Files\Vimund die Einstellungen in C:\Documents and Settings\%USERNAME%\vimfiles. Ein sicherer Weg ist, eine Datei in vimfiles zu installieren und zu verwenden globpath(&rtp, filename).
Al.

Die akzeptierte Antwort funktioniert ordnungsgemäß. Danke
asdfg

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.