¿Extraer el resultado de un comando de shell a una variable en un archivo .vimrc?


22

En mi archivo .vimrc, me gustaría almacenar en una variable el resultado de un comando externo, en mi caso:

$ echo $LANG

Para que mi vimrcarchivo tenga:

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

Hasta ahora no pude encontrar cómo hacerlo. Descubrí que en el modo de comando, :read !echo $LANGinsertaría en mi archivo actual el contenido que estoy buscando. Pero no sé cómo escribirlo en un archivo vimrc.

Respuestas:


22

Puedes hacer esto con la systemfunción:

let language = system('echo $LANG')

Punto extra: si su salida es una lista, puede usar en su systemlistlugar para recuperar una lista. p.ej

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

árbitro: :h system


13

Si LANGes una variable de entorno, simplemente puede hacer:

let language = $LANG

O, aún más simple:

if $LANG == 'en'
…
endif

Esto no responde exactamente a mi pregunta demasiado general ... ¡pero es aún mejor! Gracias.
Feffe
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.