Respuestas:
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.
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?
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:
vim -c ':set t_ti= t_te= nomore' -c 'scriptnames' -c 'q!'
El uso de este método significa que podría unir varios comandos diferentes y luego usar la 'q!' Final salir de vim.
Para situaciones en las que necesita que vim se haya cargado completamente como si lo hubiera iniciado manualmente, esto funciona:
vim -c "autocmd! CursorHold * <commands to run>"
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 lo updatetime
configuré en 100
(0.1 segundos), lo que afecta el tiempo hasta CursorHold
que se dispara el evento. Por defecto, vim lo establece en 4 segundos.
vim -c "autocmd! CursorHold * set nomore | redir! > mapNew | map | redir END | q"