Синтаксическая ошибка закрытия окна и исходного файла
Я установил 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.
Согласно справке Syntastic, команда закрыть окно Syntastic error:
:SyntasticReset