Как я могу запретить командам vim bash использовать весь экран? - PullRequest
0 голосов
/ 10 января 2019

Когда я выполняю команду bash из окна vim, результаты команды занимают весь экран, и код исчезает. Я бы хотел, чтобы результаты команды занимали только необходимое ему место на экране. Это возможно? Для уточнения я использую команду

:!echo "my command"

Я знаком с несколькими терминальными окнами, tmux и iterm. Я действительно просто хочу сделать это в окне vim без дополнительных плагинов, если это возможно.

1 Ответ

0 голосов
/ 10 января 2019

Vim переключает терминал обратно на исходный экран (откуда вы его запустили); Сам Vim использует альтернативный экран для отображения своего пользовательского интерфейса без полосы прокрутки терминала и без влияния на исходное содержимое. Нет никакой возможности обойти эту деталь реализации.

Вы можете использовать GVIM; так как он не работает в терминале, он поставляется с собственной (сырой) эмуляцией терминала, и тот просто добавляет вывод в расположение командной строки; исходное содержимое окна просто прокручивается из вида, чтобы освободить место для вывода команды оболочки. Даже с этим, вы не можете делать никаких взаимодействий, пока отображается вывод; как только вы подтвердите запрос, вывод исчезнет.

В терминале вы уже упомянули возможные альтернативы. Простым решением было бы разделить окно терминала с помощью screen или tmux, а затем запустить Vim в одном и команды оболочки в другом окне. Большим преимуществом здесь является то, что вы можете работать как параллельно, так и переключаться назад и вперед.

Начиная с Vim 8.1, Vim имеет встроенное базовое мультиплексирование терминала; то есть вы можете запустить терминал в окне Vim с помощью :terminal, а затем переключиться в Vim с помощью оконных команд по умолчанию.

Для Vim 7, без использования внешних терминальных мультиплексоров, все, что вы можете сделать, это захватить выходные данные команды оболочки в чистом буфере:

:new | 0read !{bash-command}

Это основной рецепт; Вы можете расширить это с помощью нумерации буферов, автоматического удаления буферов при закрытии и так далее. Подробнее см. на этой вики-странице Vim Tips .

Это хорошо работает для неинтерактивных команд, выполнение которых не занимает много времени; вы не видите вывод в реальном времени, ни то, что вы вводите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...