Wie kann ich .vimrc dazu bringen, aus einer externen Datei zu lesen?

Wie kann ich .vimrc dazu bringen, aus einer externen Datei zu lesen?

Ich möchte mein System so ändern, .vimrcdass der Wert einer Variablen aus einer externen Datei gelesen wird. Wie mache ich das?

Genauer gesagt: Ein Freund und ich teilen uns ein Git-Repository mit unseren .vimDateien, aber es gibt ein paar kleine Unterschiede in dem, was wir in unseren Konfigurationen haben wollen. Der Großteil der Datei ist also gleich, aber wir verwenden if-Anweisungen, um zu bestimmen, ob benutzerspezifische Abschnitte geladen werden sollen, wie folgt:

let whoami = "user2"
if whoami == "user1"
...

Nachdem wir unsere gemeinsame .vimrcVersion der Quellcodeverwaltung überprüft haben, muss jeder von uns die let whoamiZuweisung ändern, damit sein eigener Abschnitt geladen wird. Stattdessen möchte ich eine separate Datei behalten, die für jeden von uns unterschiedlich sein kann und aus der vim diesen Variablenwert lädt.

Ein anderer Blickwinkel hierzu könnte sein:Liest vim automatisch alle Dateien in meinem .vimVerzeichnis?Wenn ja, könnte jeder von uns dort einen symbolischen Link mit dem Namen „Benutzername.vim“ einfügen und diesen mit einer externen Datei verknüpfen, die für jeden von uns unterschiedlich wäre.

Antwort1

in Ihrer Haupt-.vimrc-Datei:

source otherVimScriptFilePath.vim

dann fügen Sie Ihre Variablenanweisung einfach in diese Datei ein:

" otherVimScriptFilePath.vim
let whoami = "user1"

Antwort2

Verwenden eines Try/Catch-Befehls

Seit ich diese Frage gestellt habe, ist mir ein weiterer Anwendungsfall für das Laden einer externen Datei eingefallen: maschinenspezifische Optimierungen.

Da ich an einem bestimmten Computer möglicherweise Optimierungen vornehmen muss, verwende ich try/catchzum Laden der externen Datei. Wenn keine solche Datei vorhanden ist, lasse ich den Vorgang stillschweigend abbrechen.

" If there are any machine-specific tweaks for Vim, load them from the following file.
try 
  source ~/.vimrc_machine_specific
catch
  " No such file? No problem; just ignore it.
endtry 

Antwort3

Um die letzte Frage zu beantworten: Die Dateien in ~/.vimwerden nicht automatisch geladen, aber alle Dateien in ~/.vim/pluginwerden geladen.

Antwort4

Der Name des angemeldeten Benutzers ist in der Umgebungsvariable $USER verfügbar. Sie können einfach auf diese Variable zugreifen:

:echo $USER

also, benutze einfach

execute "silent! source vimrc." . $USER

in Ihrer vimrc und fügen Sie Ihre benutzerspezifischen Einstellungen ein in

vimrc.joe

oder wie auch immer Ihr Login-Name lautet

verwandte Informationen