Extrair o resultado de um comando shell para uma variável em um arquivo .vimrc?

22

No meu arquivo .vimrc, gostaria de armazenar em uma variável o resultado de um comando externo, no meu caso:

$ echo $LANG

Para que meu vimrcarquivo tenha:

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

Até agora não consegui encontrar como fazê-lo. Descobri que, no modo de comando, :read !echo $LANGinseria no meu arquivo atual o conteúdo que estou procurando. Mas não sei como anotá-lo em um arquivo vimrc.

Feffe
fonte

Respostas:

22

Você pode fazer isso com a systemfunção:

let language = system('echo $LANG')

Ponto de bônus: se sua saída for uma lista, você poderá usá-la systemlistpara retornar uma lista. por exemplo

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

ref: :h system

nobe4
fonte
13

Se LANGfor uma variável de ambiente, você pode apenas fazer:

let language = $LANG

Ou, ainda mais simples:

if $LANG == 'en'
…
endif
muru
fonte
Isso não responde exatamente a minha pergunta muito geral ... mas é ainda melhor! Obrigado.
Feffe