È possibile avere l'output di a:! comando in una divisione piuttosto che l'intera finestra?


11

Se ho una sessione vim con due divisioni, quando eseguo un :!comando, il risultato viene mostrato in tutta la finestra. È possibile visualizzare l'output solo sulla divisione attiva?


2
No, non è possibile. L'output if :!è mostrato nella riga di comando, di cui ce n'è solo uno, e può essere solo nella parte inferiore dello schermo. Il meglio che mi viene in mente è la creazione di un nuovo buffer /: diviso sotto quello attuale ...
Martin Tournoij,

@Carpetsmoker, Per me, l'output di :!non va alla riga di comando. Invece la sessione vim scompare e l'intera finestra del terminale mostra l'output del terminale, incluso ciò che è stato stampato prima che vimfosse invocato.
Dott.

1
Forse è dovuto al terminale che usi e / o TERMall'impostazione?
Martin Tournoij,

Questa differenza ha a che fare con altscreen (in screen) o schermo alternativo (in tmux).
Tommaso,

Risposte:


8

Puoi usare questo comando:

:new | 0read ! command

Questo aprirà una nuova suddivisione e inserirà l'output del comando in questa suddivisione ( sebbene non nella suddivisione attualmente attiva come menzionato ).

nuovo : crea una nuova divisione

leggi - per ottenere l'output del comando

comando - comando effettivo


6

Puoi fare un comando per fare proprio questo:

  1. Apri una nuova divisione (o scheda)
  2. Esegui un comando e mostra i risultati in quella divisione (o scheda)

Il comando sarebbe qualcosa del genere:

:Rsplit command

o

:Rtab command

Nel tuo .vimrcpuoi scrivere questo:

" 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>"

Puoi trovare come creare i tuoi comandi con :help :command.


1

Questo non sarà possibile. Dovrai dividere lo schermo con un altro strumento come tmux (IIRC), schermo, ...

Se non hai bisogno di interagire con il programma eseguito, puoi comunque importare i suoi risultati direttamente in qualsiasi finestra (nel senso di vim :h windows) con cui desideri :r!command line.:h :r!

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.