Извлечь результат команды оболочки в переменную в файле .vimrc?

22

В моем файле .vimrc я хотел бы сохранить в переменной результат внешней команды, в моем случае:

$ echo $LANG

Чтобы мой vimrcфайл имел:

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

До сих пор я не мог найти, как это сделать. Я обнаружил, что в командном режиме :read !echo $LANGвставляет в текущий файл содержимое, которое я ищу. Но я не знаю, как записать это в файл vimrc.

Feffe
источник

Ответы:

22

Вы можете сделать это с помощью systemфункции:

let language = system('echo $LANG')

Бонус: если вы выводите список, вы можете использовать его, systemlistчтобы получить список. например

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

ссылка: :h system

nobe4
источник
13

Если LANGэто переменная окружения, вы можете просто сделать:

let language = $LANG

Или еще проще:

if $LANG == 'en'
…
endif
Мур
источник
Это не совсем отвечает на мой слишком общий вопрос ... но даже лучше! Благодарю.
Feffe