Czy wyodrębnić wynik polecenia powłoki do zmiennej w pliku .vimrc?

22

W moim pliku .vimrc chciałbym zapisać w zmiennej wynik polecenia zewnętrznego, w moim przypadku:

$ echo $LANG

Aby mój vimrcplik miał:

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

Do tej pory nie mogłem znaleźć, jak to zrobić. Zauważyłem, że w trybie poleceń :read !echo $LANGwstawi do mojego bieżącego pliku zawartość, której szukam. Ale nie wiem, jak to zapisać w pliku vimrc.

Feffe
źródło

Odpowiedzi:

22

Możesz to zrobić za pomocą systemfunkcji:

let language = system('echo $LANG')

Punkt bonusowy: jeśli twoją odpowiedzią jest lista, możesz systemlistzamiast niej użyć, aby odzyskać listę. na przykład

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

ref: :h system

nobe4
źródło
13

Jeśli LANGjest zmienną środowiskową, możesz po prostu:

let language = $LANG

Lub jeszcze prościej:

if $LANG == 'en'
…
endif
muru
źródło
To nie odpowiada dokładnie na moje zbyt ogólne pytanie ... ale jest jeszcze lepsze! Dzięki.
Feffe,