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.

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


13

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

let language = $LANG

Ou, ainda mais simples:

if $LANG == 'en'
…
endif

Isso não responde exatamente a minha pergunta muito geral ... mas é ainda melhor! Obrigado.
Feffe
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.