Відкрийте вихід команди оболонки на розділеній панелі


23

Розглянемо будь-яку інтерпретовану мову програмування.

Я можу запустити поточно відкритий скрипт ! interpreter %, використовуючи ключ повернення, щоб повернутися до vim після завершення виконання.

Чи можна якось не замінювати поточне вікно на висновок виконаної команди оболонки, а відкривати натомість вихід у новій роздільній панелі? Я хотів би все одно бачити свій вихідний код під час виконання мого сценарію.

Я спробував :split ! interpreter %, але не вийшло.

Чи є спосіб? Я використовую vim 7.3.

Відповіді:


29

З :!, зовнішня команда виконується в оболонці, і швидкоплинний вихід не захоплюється всередині Vim; ви просто бачите, що надрукується на терміналі, а потім керування повертається до Vim після завершення зовнішньої команди.

Щоб зберегти вихід, вам потрібно прочитати його в буфері Vim . Для цього є :read!команда. Щоб відкрити новий буфер нуля , комбінуйте це з :new:

:new | 0read ! <command>

Якщо ви хочете передати ім'я поточного буфера ( %) зовнішній команді, вам доведеться використовувати :executeтак, щоб воно вже було оцінено в поточному буфері:

:execute 'new | 0read ! interpreter' expand('%')

Або ви використовуєте той факт, що з новим буфером попередній стає альтернативним , а ви використовуєте #замість %:

:new | 0read ! interpreter #

Позбавтеся від буфера подряпин за допомогою :bdelete!.

Якщо ви хочете бачити вихід асинхронно під час його виконання, вам потрібен зовнішній мультиплексор або плагін, як згадується у відповіді @chaos.


Наведена вище команда ": Execute ..." працює для мене, але коли я намагаюся прив'язати її до натискання клавіші F9, використовуючи цей запис .vimrc [nnoremap <buffer> <F9>: Execute 'new | 0read! / Usr / bin / env python3 'expand ('% ')], я отримую таку помилку: [/ bin / bash: -c: рядок 0: несподіваний EOF під час пошуку відповідності ``' розширити ('%' )]. Я спробував кілька послідовностей втечі, але, мабуть, не правильний. = :). Будь-які ідеї? Дякую.
NYCeyes

2

Наскільки я знаю, ви не можете цього зробити vim. Але використовуйте термінальний мультиплексор, як screenдля цього. Перед відкриттям vim запустіть мультиплексор:

screen

Потім натисніть ctrl- a Sдля горизонтального екрану та ctrl- a |для вертикального розлитого екрана.

Тепер відкрийте файл vimна одному з розділених екранів. І перейти на інший екран за допомогою ctrl- a tab. Зауважте, що на другому екрані спочатку потрібно відкрити новий екран ( ctrl- a c) перед тим, як використовувати його.

На екрані з vim ви можете редагувати файл, а на іншому - виконувати його та постійно бачити повідомлення та код.

Ось короткий довідник для screen.


Крім того, ви можете використовувати tmuxмультиплексор і vim-dispatchплагін для автоматизації розбиття та переходів між панелями.
taketwo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.