Das Ergebnis eines Shell-Befehls in eine Variable in einer .vimrc-Datei extrahieren?


22

In meiner .vimrc-Datei möchte ich das Ergebnis eines externen Befehls in einer Variablen speichern, in meinem Fall:

$ echo $LANG

Damit meine vimrcAkte hätte:

let language = output(!echo $LANG)
if language == 'en'
   nnoremap <somekey> <ohanotherkey!>
end if

Bisher konnte ich nicht finden, wie es geht. Ich habe festgestellt, dass ich im Befehlsmodus den gesuchten :read !echo $LANGInhalt in meine aktuelle Datei einfügen würde. Aber ich weiß nicht, wie ich es in eine vimrc-Datei schreiben soll.

Antworten:


22

Sie können dies mit der systemFunktion tun :

let language = system('echo $LANG')

Bonuspunkt: Wenn Ihre Ausgabe eine Liste ist, können Sie systemliststattdessen die verwenden, um eine Liste zurückzugewinnen. z.B

let files = systemlist('ls')
" ['bin', 'dev', ... ]

ref: :h system


13

Wenn LANGes sich um eine Umgebungsvariable handelt, können Sie Folgendes tun:

let language = $LANG

Oder noch einfacher:

if $LANG == 'en'
…
endif

Dies beantwortet nicht gerade meine zu allgemeine Frage ... aber es ist noch besser! Vielen Dank.
Feffe
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.