Когда я пытаюсь запустить некоторые команды, такие как :make
или :!ls
, он показывает вывод в совершенно другом экране / представлении, и файл, который я редактирую, не виден во время этого процесса.
Есть ли в любом случае, я все еще могу видеть мой файл и редактировать, в то время как команда, которую я выполнил, может быть выполнена в окне внизу, возможно, в окне быстрого исправления?
6 ответов
Если вы используете vim 8 или neovim, возможно, вы хотели бы попробовать:
http://github.com/skywind3000/asyncrun.vim ,
Хорошая замена vim-dispatch с гораздо лучшим пользовательским интерфейсом.
Простая в использовании, просто запустите вашу фоновую команду:AsyncRun (как старый)!"CMD).
Команда выполняется в фоновом режиме, не нужно ждать завершения всего процесса.
Выходные данные отображаются в окне быстрого исправления, ошибки соответствуют формату ошибки.
Вы можете сразу же просмотреть вывод ошибок или продолжить работу в vim во время выполнения.
- Позвоните в звонок или подайте звуковой сигнал, чтобы уведомить вас о завершении работы, пока вы сосредоточены на редактировании.
- Обеспечьте соответствующий пользовательский опыт в vim, neovim, gvim и macvim.
Вы можете использовать плагин vim-dispatch для асинхронной сборки (make).
или, если вы просто хотите, чтобы результат команды оболочки был в окне быстрого исправления, которое вы можете использовать в ex-режиме:
:cexpr system('ls -alh') | copen
еще лучше, добавить это к вам .vimrc
command -nargs=+ Run :cexpr system('<args>') | copen
и запустить в бывшем режиме:
:Run ls -alh
Такое поведение абсолютно нормально. CLI Vim не поставляется с эмулятором терминала и никогда не будет. GUI Vim поставляется с тупым эмулятором терминала, и я думаю, что это то, что вы "давно помните".
Вам нужен плагин для запуска команд в отдельном окне Vim. ConqueTerm - единственное имя, которое я помню на данный момент, но я думаю, что есть одно или два других.
Как сказал Роменль, это нормальное поведение. Vim не хранит вывод, действуя как пейджер, он отображается только во время выполнения внешней команды. Вы можете записать вывод команды в пустой буфер Vim (:r !ls
), используйте плагин, подобный упомянутому Conque, или разделите окно оболочки вне Vim с помощью терминального мультиплексора, такого как screen или tmux.
Будет ли разделение окон vim работать на вас?
- :split - разбивает окно по горизонтали
- :vsplit - разбивает окно по вертикали
Затем вы можете использовать окна только для редактирования файла, а второе - для выполнения через :make.
Возможно, вы ищете ex-mode
. Если вы введете Q
в обычном режиме, вы получите буфер стиля командной строки внизу окна.
Более подробная информация здесь: http://vimdoc.sourceforge.net/htmldoc/intro.html#Ex-mode