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.

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


13

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

let language = $LANG

Lub jeszcze prościej:

if $LANG == 'en'
…
endif

To nie odpowiada dokładnie na moje zbyt ogólne pytanie ... ale jest jeszcze lepsze! Dzięki.
Feffe,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.