Полный список местоположения (LCL), созданный синтастическим, а также основным буфером при использовании: Q ,: Q! или: WQ! в Vim
Вопрос
Я использую синтастический плагин. У меня есть несколько файлов с некоторыми ошибками (предупреждениями), которые я не могу изменить. Когда у меня есть файл, открытый с помощью сообщений об ошибках, и я бросил файл (буфер) нажатие: Q, сообщения об ошибках все еще видны (другой буфер), поэтому я должен нажать: Q дважды, чтобы полностью выйти при редактировании файла.
Итак, как мне нажать: Q только один раз с файлом с буфером, содержащим мой файл, и еще одним буфером (списком местоположения), содержащим синтастические ошибки? Я немного искал, и команда закрыла список местоположения : lcl.
Когда я выхожу из буфера с: Q, если список местоположения для этого буфера активен, я хочу закрыть его со списком местоположения внутри, вызовы: LCL. Я читаю Autocmd BufLeave
и BufWinLeave
И попытка создать картирование для этого, но я не могу знать разницу между ними. Кто-нибудь может мне помочь?
Вспоминая, :w, :q, :q!, :wq
все должны работать так, как предполагалось.
Решение
Поскольку LCL работает, даже если нет окна ошибки, вы можете отобразить Q на LCL и Q
cnoremap q<cr> \|lcl\|q<cr>
Как предполагалось, аббревиатура кажется лучше
cabbrev q lcl\|q
(Обратите внимание на до |, без этого
Другие советы
Я понимаю, что этот вопрос старый, и что ответ был принят некоторое время назад. Я пытался использовать принятый ответ, но он, похоже, больше не работает.
Однако я нашел обходной путь от этот вопрос, если другие бегут к этому.
По сути, используйте скрипт, чтобы проверить, есть ли какие-либо оставшиеся окна открыты и оставшееся окно является списком местоположения, бросьте.
:autocmd WinEnter * if &buftype ==# 'quickfix' && winnr('$') == 1 | quit | endif
Я думаю, что это может быть не идеально, но в то же время работает достаточно хорошо.