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.

Feffe
quelle

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

nobe4
quelle
13

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

let language = $LANG

Oder noch einfacher:

if $LANG == 'en'
…
endif
muru
quelle
Dies beantwortet nicht gerade meine zu allgemeine Frage ... aber es ist noch besser! Vielen Dank.
Feffe