Apakah mungkin untuk mendapatkan output dari:! perintah secara terpisah daripada seluruh jendela?

11

Jika saya memiliki sesi vim dengan dua split, ketika saya menjalankan :!perintah, hasilnya ditampilkan di seluruh jendela. Apakah mungkin untuk menampilkan output hanya pada split aktif?

drs
sumber
2
Tidak, ini tidak mungkin. Outputnya jika :!ditampilkan di baris perintah, yang hanya ada satu, dan hanya bisa di bagian bawah layar. Yang terbaik yang bisa saya pikirkan adalah membuat buffer baru /: split di bawah yang sekarang ...
Martin Tournoij
@Carpetsmoker, Bagi saya, output dari :!tidak pergi ke baris perintah. Sebaliknya sesi vim menghilang dan seluruh jendela terminal menunjukkan output terminal, termasuk apa yang dicetak sebelum vimdipanggil.
drs
1
Mungkin itu karena terminal yang Anda gunakan dan / atau TERMpengaturan?
Martin Tournoij
Perbedaan ini berkaitan dengan layar alts (dalam screen) atau layar alternatif (dalam tmux).
tommcdo

Jawaban:

8

Anda dapat menggunakan perintah ini:

:new | 0read ! command

Ini akan membuka pemisahan baru dan menempatkan output dari perintah dalam pemisahan ini ( meskipun tidak dalam pemisahan aktif saat ini seperti yang Anda sebutkan ).

baru - membuat perpecahan baru

baca - untuk mendapatkan output perintah

perintah - perintah aktual

Meain
sumber
6

Anda dapat membuat perintah untuk melakukan ini:

  1. Buka pemisahan baru (atau tab)
  2. Jalankan perintah dan tunjukkan hasil di split itu (atau tab)

Perintahnya akan seperti ini:

:Rsplit command

atau

:Rtab command

Di Anda, .vimrcAnda dapat menulis ini:

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

Anda dapat menemukan cara membuat perintah sendiri :help :command.

Lucas Gabriel Sánchez
sumber
1

Itu tidak mungkin. Anda harus membagi layar Anda dengan alat lain seperti tmux (IIRC), layar, ...

Jika Anda tidak perlu berinteraksi dengan program yang dijalankan, Anda dapat mengimpor hasilnya secara langsung di jendela apa pun (dalam arti vim :h windows) yang Anda inginkan :r!command line.:h :r!

Luc Hermitte
sumber