Синтаксическая ошибка закрытия окна и исходного файла

Я установил Syntastic из GitHub и пытаюсь использовать Syntastic для проверки синтаксических ошибок Perl (и планирую использовать для Python в ближайшее время). Когда я использую ':quit' или ':q', закрывается только окно оригинального файла. Окно ошибок не закрывается. Ниже приведен фрагмент из моего файла.vimrc:

execute pathogen#infect()  
set statusline+=%#warningmsg#  
set statusline+=%{SyntasticStatuslineFlag()}  
set statusline+=%*  
let g:syntastic_perl_checkers = ['perl']  
let g:syntastic_python_checkers = ['pylint']  
let g:syntastic_enable_perl_checker = 1  
let g:syntastic_always_populate_loc_list = 1  
let g:syntastic_auto_loc_list = 1  
let g:syntastic_check_on_open = 1

Поскольку я очень плохо знаком с сценариями vim, я хотел бы знать, как закрыть оба окна, окно ошибок и окно исходного файла, когда я использую ':quit' или ':q', когда окно исходного файла активно.

3 ответа

Решение

Это нормальное поведение Vim; это не имеет ничего общего с Syntastic. Окна быстрого списка или списка местоположений могут содержать ссылки на другие файлы, поэтому нет уверенности, что вы хотите полностью покинуть Vim при выходе из исходного окна.

Самое простое решение - это использование :qa (бросить все) вместо :q, Так как окно ошибок не содержит не внесенных изменений, это безопасно и не требует подтверждения.

Если вас раздражает необходимость думать об этом, вы можете использовать возможности сценариев Vim для изменения его поведения:

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

При каждом изменении окна проверяется, осталось ли только одно окно, и если оно является списком быстрого исправления / местоположения, оно выходит из Vim.

Попробуйте следующую команду:

:lclose

Согласно справке Syntastic, команда закрыть окно Syntastic error:

:SyntasticReset
Другие вопросы по тегам