Eso sucede, porque generalmente Vim cambia a la pantalla alternativa y trabaja allí. Al salir, Vim volverá a cambiar y, por lo tanto, no verá nada de su sesión de Vim, sino el resultado del comando ejecutado incluso antes de iniciar Vim.
Esta característica se explica en :h xterm-screens
(enlace)
Entonces, básicamente, no desea eso y, por lo tanto, desea deshabilitarlo. Puede hacerlo estableciendo :set t_ti= t_te=
los códigos de terminal que realizan esto para vaciar.
Poniendo todo junto, querrás iniciar Vim así:
vim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!'
Estamos restableciendo la 'more'
opción, para que no vea el indicador hit-enter-prompt.
Christian Brabandt
fuente
less
. Simplemente póngalo en menos asívim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!' | less
. El diseño puede estar arruinado al principio (está en mi terminal), pero después de presionar <CL> todo es agradable y elegante.vim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!'
, solo hay un "flash rápido", el comando sale con el código 0, no hay salida. ¿Me estoy perdiendo de algo?También podemos usar el
:redir
comando para redirigir los resultados de los comandos vim a un archivoPor ejemplo,
Esto redirige la salida
scriptnames
al archivo "vimout"fuente
Aprecio la respuesta proporcionada por Christian Brabandt, pero creo que una mejor respuesta sería separar el comando de salida usando otro comando -c de esta manera:
El uso de este método significa que podría unir varios comandos diferentes y luego usar la 'q!' Final salir de vim.
fuente
Para situaciones en las que necesita que vim se haya cargado completamente como si lo hubiera iniciado manualmente, esto funciona:
Por ejemplo, quería redirigir la salida
:map
a un archivo desde el shell, pero quería capturar el mapeo que vim-airline crea solo después de que se muestre su tabulación (la línea en la parte superior muestra todos los nombres de búfer abiertos). esto de forma asincrónica, simplemente ejecutar una-c
redirección a un archivo no le daba tiempo para hacer las asignaciones. Podría haber una mejor manera, pero esto funciona para mí, especialmente porque ya loupdatetime
configuré en100
(0.1 segundos), lo que afecta el tiempo hastaCursorHold
que se dispara el evento. Por defecto, vim lo establece en 4 segundos.fuente