Extraire le résultat d'une commande shell dans une variable d'un fichier .vimrc?

22

Dans mon fichier .vimrc, je voudrais stocker dans une variable le résultat d'une commande externe, dans mon cas:

$ echo $LANG

Pour que mon vimrcdossier ait:

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

Jusqu'à présent, je n'ai pas trouvé comment le faire. J'ai trouvé qu'en mode commande, :read !echo $LANGinsérer dans mon fichier actuel le contenu que je recherche. Mais je ne sais pas comment l'écrire dans un fichier vimrc.

Feffe
la source

Réponses:

22

Vous pouvez le faire avec la systemfonction:

let language = system('echo $LANG')

Point bonus: si votre sortie est une liste, vous pouvez utiliser à la systemlistplace pour récupérer une liste. par exemple

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

réf: :h system

nobe4
la source
13

Si LANGest une variable d'environnement, vous pouvez simplement faire:

let language = $LANG

Ou, encore plus simple:

if $LANG == 'en'
…
endif
muru
la source
Cela ne répond pas exactement à ma question trop générale ... mais c'est encore mieux! Merci.
Feffe