Estrarre il risultato di un comando shell in una variabile in un file .vimrc?


22

Nel mio file .vimrc, vorrei archiviare in una variabile il risultato di un comando esterno, nel mio caso:

$ echo $LANG

In modo che il mio vimrcfile avrebbe:

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

Finora non sono riuscito a trovare il modo di farlo. Ho scoperto che in modalità di comando, :read !echo $LANGinserire nel mio file corrente il contenuto che sto cercando. Ma non so come scriverlo in un file vimrc.

Risposte:


22

Puoi farlo con la systemfunzione:

let language = system('echo $LANG')

Punto bonus: se l'output è un elenco, è possibile utilizzare systemlistinvece per recuperare un elenco. per esempio

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

ref: :h system


13

Se LANGè una variabile d'ambiente, puoi semplicemente fare:

let language = $LANG

O ancora più semplice:

if $LANG == 'en'
…
endif

Questo non risponde esattamente alla mia domanda troppo generale ... ma è ancora meglio! Grazie.
Feffe,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.