VIM + Syntastic:チェッカーを無効にする方法は?


118

HTMLファイルで有効になっているSyntasticを使用しています。「validator w3」チェッカーが有効になっている非常に大きなファイルがあるため、ファイル(:w)の保存中にGVIMまたはVIMが非常に遅くなりました。

現在のセッションのためだけにSyntasticを一時的にオフに切り替えることは可能ですか?


3
試してみるlet g:syntastic_disabled_filetypes=['html']
yakiang 2013年

回答:


166

使用:SyntasticToggleModeあなたは、自動チェックを無効にしますパッシブモードへSyntasticを切り替えることができます。その後、:SyntasticCheck代わりにを実行してファイルを確認できます。

詳細については、 :help syntastic-commands

別のメモ:Syntasticが遅い場合は、代わりにエールを試すことを検討してください。Syntasticとは異なり、非同期で実行されるため、遅くても邪魔になりません。


1
これを切り替えるために単一のエイリアスを作成するか、キーをマップする方法はありますか?すなわち、:errorまたはCtrl + Shiftキー/ Altキー+ Eトグルの間:SyntasticCheck:SyntasticToggleMode
ヨアキム2015

2
このようなエイリアスを.vimrcで作成できます。:command Sd SyntasticToggleMode 次に、viで:Sdを押すと、syntasticが無効になります。その方法の詳細については、こちら:stackoverflow.com/questions/3878692/aliasing-a-command-in-vim
Eric Leschinski

2
いいね。誰かが使用したい場合のF6へのマッピングをここに示しますsilent! nmap <F6> :SyntasticToggleMode<CR>
lfender6445 '26

87

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が1秒間ポップアップし、再び消えます。何が問題になっているのか、および/またはこれを追跡する方法はありますか?
Anticom、2015年

マッピングに:SyntasticToggleMode <CR>があってはいけないと思います。これを削除すると、問題@Anticomが修正されます。
Achal Dave 2016

@AchalDave修正しませんでした。
Anticom 2016

うーん、わからない。ここに私のsyntasticの設定はどのように見えるかです:github.com/achalddave/dotfiles/blob/...
Achalデイブ

33

Jamieとgospesの答えの代わりに、次のようにチェッカーを指定することにより、チェッカーを完全に無効にすることができます。

let g:syntastic_html_checkers=['']

またsyntastic_check_on_open、1に設定されていないことを確認してください。これにより、上記の行が無効になります。

let g:syntastic_check_on_open = 0

10

セッション全体でSyntasticをオフにすることもできますが(Jamie Schembriの回答)、1つの「非常に大きなファイル」の問題だけの場合は、1つのバッファだけを無効にすることをお勧めします。

私の仕事で取り組んでいるファイルのいくつかは、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 2016年

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

私は主にRust Aleのサポートがあまり良くないので、AleとSyntasticを使用しています。私の場合、私はvim-plugパッケージマネージャを使用していますが、これらが自動的に有効にならないように設定しています。代わりにトグル方式を使用します。

私の場合、私はデフォルトでエールが必要で、RustにはSyntasticが必要です

vimrcのプラグイン部分でこれを行いました

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

その後、バインドを設定してリンターを有効にします(リンターのニーモニックとして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.