¿Es posible tener la salida de un:! comando en una división en lugar de toda la ventana?


11

Si tengo una sesión vim con dos divisiones, cuando ejecuto un :!comando, el resultado se muestra en toda la ventana. ¿Es posible mostrar la salida solo en la división activa?


2
No, esto no es posible. La salida if :!se muestra en la línea de comando, de la cual solo hay una, y solo puede estar en la parte inferior de la pantalla. Lo mejor que se me ocurre es crear un nuevo búfer /: dividido debajo del actual ...
Martin Tournoij

@Carpetsmoker, para mí, la salida de :!no va a la línea de comando. En cambio, la sesión vim desaparece y toda la ventana del terminal muestra la salida del terminal, incluido lo que se imprimió antes de que vimse invocara.
drs

1
¿Tal vez eso se deba al terminal que usa y / o la TERMconfiguración?
Martin Tournoij

Esta diferencia tiene que ver con altscreen (in screen) o pantalla alternativa (in tmux).
tommcdo

Respuestas:


8

Puedes usar este comando:

:new | 0read ! command

Esto abrirá una nueva división y colocará la salida del comando en esta división ( aunque no en la división actualmente activa como mencionó ).

nuevo : crea una nueva división

leer : para obtener la salida del comando

comando - comando real


6

Puede hacer un comando para hacer esto:

  1. Abrir una nueva división (o pestaña)
  2. Ejecute un comando y muestre los resultados en esa división (o pestaña)

El comando sería algo como esto:

:Rsplit command

o

:Rtab command

En tu .vimrcpuedes escribir esto:

" execute a command and show its output in a split window
command! -nargs=* -complete=shellcmd Rsplit execute "new | r! <args>"

" execute a command and show its output in a new tab
command! -nargs=* -complete=shellcmd Rtab execute "tabnew | r! <args>"

Puede encontrar cómo hacer sus propios comandos con :help :command.


1

Eso no será posible. Tendrás que dividir tu pantalla con otra herramienta como tmux (IIRC), pantalla, ...

Si no necesita interactuar con el programa ejecutado, puede importar sus resultados directamente en cualquier ventana (en el sentido vim :h windows) que desee :r!command line.:h :r!

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.