5

Когда я пытаюсь запустить некоторые команды, такие как :make или :!ls , он показывает вывод в совершенно другом экране / представлении, и файл, который я редактирую, не виден во время этого процесса. Есть ли в любом случае, я все еще могу видеть мой файл и редактировать, в то время как команда, которую я выполнил, может быть выполнена в окне внизу, возможно, в окне быстрого исправления?

6 ответов6

3

Если вы используете vim 8 или neovim, возможно, вы хотели бы попробовать:

http://github.com/skywind3000/asyncrun.vim ,

Хорошая замена vim-dispatch с гораздо лучшим пользовательским интерфейсом.

  • Простая в использовании, просто запустите вашу фоновую команду:AsyncRun (как старый)!"CMD).

  • Команда выполняется в фоновом режиме, не нужно ждать завершения всего процесса.

  • Выходные данные отображаются в окне быстрого исправления, ошибки соответствуют формату ошибки.

  • Вы можете сразу же просмотреть вывод ошибок или продолжить работу в vim во время выполнения.

  • Позвоните в звонок или подайте звуковой сигнал, чтобы уведомить вас о завершении работы, пока вы сосредоточены на редактировании.
  • Обеспечьте соответствующий пользовательский опыт в vim, neovim, gvim и macvim.
3

Вы можете использовать плагин vim-dispatch для асинхронной сборки (make).

или, если вы просто хотите, чтобы результат команды оболочки был в окне быстрого исправления, которое вы можете использовать в ex-режиме:

:cexpr system('ls -alh') | copen

еще лучше, добавить это к вам .vimrc

command -nargs=+ Run :cexpr system('<args>') | copen

и запустить в бывшем режиме:

:Run ls -alh
1

Такое поведение абсолютно нормально. CLI Vim не поставляется с эмулятором терминала и никогда не будет. GUI Vim поставляется с тупым эмулятором терминала, и я думаю, что это то, что вы "давно помните".

Вам нужен плагин для запуска команд в отдельном окне Vim. ConqueTerm - единственное имя, которое я помню на данный момент, но я думаю, что есть одно или два других.

1

Как сказал Роменль, это нормальное поведение. Vim не хранит вывод, действуя как пейджер, он отображается только во время выполнения внешней команды. Вы можете записать вывод команды в пустой буфер Vim (:r !ls), используйте плагин, подобный упомянутому Conque, или разделите окно оболочки вне Vim с помощью терминального мультиплексора, такого как screen или tmux.

0

Будет ли разделение окон vim работать на вас?

  • :split - разбивает окно по горизонтали
  • :vsplit - разбивает окно по вертикали

Затем вы можете использовать окна только для редактирования файла, а второе - для выполнения через :make.

0

Возможно, вы ищете ex-mode . Если вы введете Q в обычном режиме, вы получите буфер стиля командной строки внизу окна.

Более подробная информация здесь: http://vimdoc.sourceforge.net/htmldoc/intro.html#Ex-mode

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .