Полностью выйти из списка местоположений (lcl), созданного Syntastic, а также основного буфера при использовании: q,: q!или: wq!в VIM - PullRequest
2 голосов
/ 09 ноября 2010

Я использую плагин Syntastic. У меня есть несколько файлов с ошибками (предупреждениями), которые я не могу изменить. Когда у меня открывается файл с сообщениями об ошибках, и я закрываю файл (буфер), нажимая: q, сообщения об ошибках все еще видны (другой буфер), поэтому мне приходится дважды нажимать: q, чтобы полностью выйти при редактировании файла.

Итак, как мне нажать: q один раз с файлом с буфером, содержащим мой файл, и другим буфером (списком расположений), содержащим ошибки Syntastic? Я немного искал, и команда закрыть список местоположений : lcl .

Когда я выхожу из буфера с помощью: q, если список местоположений для этого буфера активен, я хочу закрыть его списком местоположений внутри, вызывая: lcl. Я читаю некоторые autocmd BufLeave и BufWinLeave и пытаюсь создать сопоставление для этого, но я не могу понять разницу между ними. Кто-нибудь может мне помочь?

Помня, :w, :q, :q!, :wq все должно работать как положено.

Ответы [ 2 ]

3 голосов
/ 09 ноября 2010

Поскольку lcl работает, даже если нет окна ошибок, вы можете отобразить q в lcl и q

cnoremap q<cr> \|lcl\|q<cr>

Как и предполагалось, аббревиатура выглядит лучше

cabbrev q lcl\|q

(обратите внимание на \ before|, без этого аббревиатура затем выходит)

1 голос
/ 24 августа 2015

Я понимаю, что этот вопрос старый и что ответ был принят некоторое время назад.Я попытался использовать принятый ответ, но, похоже, он больше не работает.

Однако я нашел обходной путь от этого вопроса , если другие столкнутся с этим.

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

:autocmd WinEnter * if &buftype ==# 'quickfix' && winnr('$') == 1 | quit | endif

Я думаю, что это может быть не идеально, но работает достаточно хорошотем временем.

...