VIM + Syntastic : 검사기를 비활성화하는 방법은 무엇입니까?


119

내 HTML 파일에 대해 활성화 된 Syntastic을 사용하고 있습니다. "validator w3"검사기가 활성화 된 매우 큰 파일이 있기 때문에 파일 (: w)을 저장하는 동안 GVIM 또는 VIM이 매우 느려졌습니다.

현재 세션에 대해서만 일시적으로 syntastic을 토글 할 수 있습니까?


3
시도let g:syntastic_disabled_filetypes=['html']
yakiang nov.

답변:


166

를 사용 :SyntasticToggleMode하면 Syntastic을 수동 모드로 전환 하여 자동 검사를 비활성화 할 수 있습니다. 그런 다음 :SyntasticCheck대신 실행하여 파일을 확인할 수 있습니다 .

자세한 내용은 :help syntastic-commands

또 다른 참고 사항 : Syntastic이 느리다면 대안으로 에일 을 사용해보십시오 . Syntastic과 달리 비동기식으로 실행되므로 속도가 느려도 방해가되지 않습니다.


1
단일 별칭을 만들거나 키를 매핑하여이를 토글하는 방법이 있습니까? 즉, :error또는 Ctrl + Shift 키 / Alt + E를 전환 사이 :SyntasticCheck:SyntasticToggleMode.
yoaquim

2
.vimrc :command Sd SyntasticToggleMode 에서 다음 과 같은 별칭을 만들 수 있습니다. 그런 다음 vi에서 : Sd를 누르면 구문이 비활성화됩니다. 이를 수행하는 방법에 대한 추가 정보 : stackoverflow.com/questions/3878692/aliasing-a-command-in-vim
Eric Leschinski

2
좋은. 누군가 그것을 사용하고 싶다면 여기에 F6에 대한 매핑이 있습니다silent! nmap <F6> :SyntasticToggleMode<CR>
lfender6445

88

기본적으로 Syntastic을 비활성화하고 .vimrc에서 다음을 사용하여 오류 검사를 활성화 / 비활성화했습니다.

let g:syntastic_mode_map = { 'mode': 'passive', 'active_filetypes': [],'passive_filetypes': [] }
nnoremap <C-w>E :SyntasticCheck<CR>

오류 검사를 사용해야 할 때 다음을 누르십시오. ctrl-w E


이것은 매우 편리합니다. 감사합니다. .. 내 설정에 아이디어를 추가했습니다. +1
jdt 2014

3
나는 이것을 내 .vimrc뿐만 아니라 추가했습니다 . 그러나 Ctrl-w를 누르면 E Syntastic이 잠시 팝업되고 다시 사라집니다. 무엇이 잘못되었는지 및 / 또는이를 추적하는 방법에 대한 아이디어가 있습니까?
Anticom 2015

매핑에 : SyntasticToggleMode <CR>이 없어야한다고 생각합니다. 제거하면 @Anticom 문제가 해결됩니다.
Achal Dave

@AchalDave 나를 위해 그것을 고치지 않았습니다.
Anticom

흠, 모르겠어요. 내 syntastic 설정은 다음과 같습니다. github.com/achalddave/dotfiles/blob/…
Achal Dave

33

Jamie 및 gospes 답변 대신 다음과 같이 검사기 를 지정하여 검사기를 완전히 비활성화 할 수 있습니다 .

let g:syntastic_html_checkers=['']

또한 syntastic_check_on_open위의 줄에 대응하는 1로 설정되지 않았 는지 확인하십시오 .

let g:syntastic_check_on_open = 0

10

전체 세션에 대해 Syntastic을 끌 수 있지만 ( Jamie Schembri 가 답변 한대로 ), 하나의 "매우 큰 파일"에만 문제가있는 경우 하나의 버퍼 만 비활성화 할 수 있습니다.

직장에서 작업하는 파일 중 일부는 PSR을 준수하지 않을 수 있습니다. 대부분은 잘 작동합니다. 문제 파일에 대해서만 Syntastic을 비활성화하는 기능을 찾고있었습니다. 주요 기여자가 설명한 ' SyntasticDisableToggle '솔루션 의 더 간단한 형태가 저에게 효과적입니다.

"disable syntastic on a per buffer basis (some work files blow it up)
function! SyntasticDisableBuffer()
    let b:syntastic_skip_checks = 1
    SyntasticReset
    echo 'Syntastic disabled for this buffer'
endfunction

command! SyntasticDisableBuffer call SyntasticDisableBuffer()

이것은 다른 버퍼에 영향을 미치지 않기 때문에 내가 열어 놓은 다른 (부분적으로) 호환되는 파일에 대해이 멋진 플러그인을 계속 사용할 수 있습니다.


6

이것은 질문을 직접적으로 다루지는 않지만 현재 세션 이후에 도움이 될 수 있습니다. 자주 편집해야하지만 항상 Syntastic을 사용하지 않도록 설정하려는 파일이있는 경우 (예 : 수천 개의 오류가 있고이를 수정하지 않고 그대로두면 UI 속도가 저하됨) 영구적으로 블랙리스트는 매우 편리합니다.

이렇게하려면 syntastic_ignore_files옵션을 사용하십시오 . 도움말에 숨겨져 있지만이 기능과 함께 정규식을 사용하여 파일을 블랙리스트에 올릴 수 있습니다.

                                                    'syntastic_ignore_files'
Default: []
Use this option to specify files that syntastic should never check.  It's a
list of regular-expression patterns.  The full paths of files (see ::p) are
matched against these patterns, and the matches are case sensitive. Use \c
to specify case insensitive patterns.  Example:
    let g:syntastic_ignore_files = ['\m^/usr/include/', '\m\c\.h$']

1
잘 작동합니다! 그래도 질문이 요구하는 것이 아닙니다. 유용함을위한 +1이 있습니다.
bschlueter

5

다음 설정이 저에게 효과적이었습니다.

let g:syntastic_mode_map = { 'mode': 'passive', 'active_filetypes':   [],'passive_filetypes': [] }
noremap <C-w>e :SyntasticCheck<CR>
noremap <C-w>f :SyntasticToggleMode<CR>

Ctrl-w + e shall enable checking
Ctrl-w + f shall disable checking 

To disable warnings use: 
let g:syntastic_quiet_messages={'level':'warnings'}

4

파일 유형에 관계없이 단일 버퍼 검사를 끄는 또 다른 옵션은 :let b:syntastic_mode="passive". 토글이 아니기 때문에 버퍼가 현재 패시브 모드 인 경우에도 작동합니다.

모든 버퍼의 모든 파일 유형 검사를 일시적으로 끄려면 :bufdo let b:syntastic_mode="passive". 모든 버퍼의 검사를 끄거나 켜는 설정 매핑이 있습니다.

nnoremap <leader>sN :bufdo let b:syntastic_mode="passive"<cr>
nnoremap <leader>sY :bufdo unlet b:syntastic_mode<cr>

이것은 :wqa많은 오픈 버퍼로 작업 할 때 특히 유용 합니다.


4

몇몇 다른 사람들이 언급 한 것과 유사하게, 여기에 기본적으로 Syntastic을 끄는 vimrc 세그먼트가 있지만 현재 파일을 확인하기 위해 버튼 (여기서는 F10)을 매핑하고, 체크를 해제하기 위해 토글과 동일한 버튼을 사용합니다. 조금 느리지 만 작동합니다.

let g:syntastic_check_on_open = 0                                                                                 
let g:syntastic_check_on_wq = 0
let g:syntastic_mode_map = {'mode':'passive'}
nnoremap <F10> :SyntasticCheck<CR> :SyntasticToggleMode<CR> :w<CR>

0

Steven Lu 에게 감사드립니다 . 이제 Ansible Roles 파일을 무시할 수 있습니다 .

" ignore files of Ansible Roles.
let g:syntastic_ignore_files = ['\m^roles/']

0

나는 주로 Rust Ale 지원이 아직 좋지 않기 때문에 Ale과 Syntastic을 사용하고 있습니다. 제 경우에는 vim-plug 패키지 관리자를 사용하고 있는데 자동으로 활성화되지 않도록 설정했습니다. 대신 토글 전략을 사용합니다.

제 경우에는 기본적으로 Ale을 원하고 Rust에는 Syntastic을 원합니다.

vimrc의 플러그인 부분에서이 작업을 수행했습니다.

Plug 'w0rp/ale', { 'on': 'ALEToggle' }
Plug 'vim-syntastic/syntastic', { 'on': 'SyntasticToggleMode' }

나중에 linter를 활성화하기 위해 bind를 설정했습니다. (linter의 mnemoic으로 l을 사용합니다)

nnoremap <leader>l :ALEToggle<CR>

Rust의 경우 동일한 바인딩을 재정의합니다.

au FileType rust noremap <buffer> <leader>l :SyntasticToggleMode<CR>

또한 내 vimrc에서 상태 표시 줄 항목을 제거해야했습니다. 그렇지 않으면 Syntastic이 비활성화 된 상태에서로드 할 때 오류가 발생합니다.

" Syntastic stuff
"set statusline+=%#warningmsg#
"set statusline+=%{SyntasticStatuslineFlag()}
"set statusline+=%*

let g:rustfmt_autosave = 1
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
" Syntastic stuff

문안 인사

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.