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.