Чи можливо мати вихід:! команда в розділі, а не в усьому вікні?


11

Якщо у мене сеанс vim з двома розщепленнями, коли я виконую :!команду, результат відображається у всьому вікні. Чи можливий показ виводу тільки на активному розділі?


2
Ні, це неможливо. Вихід, якщо :!показаний у командному рядку, якого є лише один, і може бути лише внизу екрана. Найкраще, що я можу придумати, - це створити новий буфер /: розділити під поточним ...
Martin Tournoij

@Carpetsmoker, Для мене висновок :!не переходить до командного рядка. Натомість сеанс vim зникає, і все вікно терміналу показує висновок терміналу, включаючи те, що було надруковано раніше vim.
пр.

1
Можливо, це пов'язано з терміналом, який ви використовуєте та / або TERMналаштуванням?
Мартін Турной

Ця різниця стосується альтскрінаscreen) або альтернативного екранаtmux).
tommcdo

Відповіді:


8

Ви можете використовувати цю команду:

:new | 0read ! command

Це відкриє новий розкол і поставить вихід команди в цей розкол ( хоча не в поточний активний розкол, як ви згадували ).

новий - створює новий розкол

read - щоб отримати командний вихід

command - фактична команда


6

Ви можете зробити команду зробити саме це:

  1. Відкрити новий розділ (або вкладку)
  2. Виконайте команду і покажіть результати в цьому розділі (або на вкладці)

Команда буде приблизно такою:

:Rsplit command

або

:Rtab command

У ваших .vimrcви можете написати це:

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

Ви можете знайти, як скласти власні команди за допомогою :help :command.


1

Це неможливо. Вам доведеться розділити екран на інший інструмент, наприклад tmux (IIRC), екран, ...

Якщо вам не потрібно взаємодіяти з виконаною програмою, проте ви можете імпортувати її результати безпосередньо в будь-яке вікно (у сенсі vim :h windows), яке ви бажаєте :r!command line.:h :r!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.