VIM + Syntastic: Làm thế nào để tắt trình kiểm tra?


119

Tôi đang sử dụng Syntastic được bật cho các tệp HTML của mình. Vì tôi có một tệp rất lớn với trình kiểm tra "trình xác thực w3" được bật, GVIM hoặc VIM trở nên rất chậm khi lưu tệp (: w).

Có thể tạm thời tắt tổng hợp chỉ cho phiên hiện tại không?


3
thửlet g:syntastic_disabled_filetypes=['html']
yakiang

Câu trả lời:


166

Sử dụng, :SyntasticToggleModebạn có thể chuyển Syntastic sang chế độ thụ động, điều này sẽ tắt tính năng tự động kiểm tra. Sau đó, bạn có thể kiểm tra tệp bằng cách chạy :SyntasticCheckthay thế.

Để biết thêm, hãy xem :help syntastic-commands

Một lưu ý khác: nếu Syntastic chậm, bạn nên xem xét thử ale như một giải pháp thay thế. Không giống như Syntastic, nó chạy không đồng bộ, vì vậy ngay cả khi nó chậm, nó cũng không cản trở bạn.


1
Có cách nào để tạo một bí danh duy nhất hoặc ánh xạ một khóa để chuyển đổi điều này không? Tức là :errorhoặc Ctrl + Shift / Alt + e chuyển đổi giữa :SyntasticCheck:SyntasticToggleMode.
yoaquim

2
Bạn có thể tạo một bí danh như thế này trong .vimrc: :command Sd SyntasticToggleMode Sau đó, nhấn vi: Sd và nó sẽ vô hiệu hóa tổng hợp. Thông tin thêm về cách thực hiện điều đó tại đây: stackoverflow.com/questions/3878692/aliasing-a-command-in-vim
Eric Leschinski

2
đẹp. heres một ánh xạ đến F6 nếu ai đó muốn sử dụng nósilent! nmap <F6> :SyntasticToggleMode<CR>
lfender6445

88

Tôi đã tắt tính năng Syntastic theo mặc định và kích hoạt / tắt tính năng kiểm tra lỗi với phần sau trong .vimrc của tôi:

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

Khi tôi cần sử dụng kiểm tra lỗi, tôi chỉ cần nhấn: ctrl-w E


Điều này khá tiện dụng, cảm ơn .. Tôi đã thêm ý tưởng vào cấu hình của mình. +1
jdt

3
Tôi cũng đã thêm cái này vào .vimrc. Tuy nhiên, nếu tôi nhấn Ctrl-w E Tổng hợp sẽ bật lên trong một giây và lại biến mất. Bất kỳ ý tưởng điều gì đang xảy ra và / hoặc làm thế nào để theo dõi điều này?
Anticom

Tôi nghĩ ánh xạ không nên có: SyntasticToggleMode <CR>, việc xóa cái đó sẽ khắc phục sự cố của bạn @Anticom.
Achal Dave

@AchalDave Không sửa được cho tôi.
Anticom

Hừm, không có ý kiến. Đây là cài đặt tổng hợp của tôi trông như thế nào: github.com/achalddave/dotfiles/blob/…
Achal Dave

33

Thay thế cho câu trả lời của Jamie và gospes, người ta có thể tắt hoàn toàn trình kiểm tra bằng cách chỉ định trình kiểm tra như sau:

let g:syntastic_html_checkers=['']

Ngoài ra, hãy đảm bảo rằng giá trị syntastic_check_on_openkhông được đặt thành 1, điều này sẽ phản đối dòng trên:

let g:syntastic_check_on_open = 0

10

Bạn có thể tắt Syntastic trong toàn bộ phiên (như Jamie Schembri đã trả lời ), nhưng nếu đó chỉ là sự cố với một "tệp rất lớn", bạn có thể chỉ muốn vô hiệu hóa một bộ đệm.

Một số tệp tôi đang làm trong công việc của mình không tuân thủ PSR một cách vô vọng. Hầu hết hoạt động tốt. Tôi đang tìm kiếm chức năng để tắt Syntastic chỉ cho những tệp có vấn đề đó. Một dạng đơn giản hơn của giải pháp ' SyntasticDisableToggle ' do cộng tác viên chính phác thảo phù hợp với tôi:

"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()

Bởi vì điều này không ảnh hưởng đến các bộ đệm khác, tôi có thể tiếp tục sử dụng plugin tuyệt vời này cho bất kỳ tệp tuân thủ (một phần) nào khác mà tôi đang mở.


6

Điều này không trực tiếp giải quyết câu hỏi, nhưng có thể giúp ích cho phiên hiện tại. Nếu bạn có một tệp mà bạn phải chỉnh sửa thường xuyên nhưng bạn biết rằng bạn sẽ luôn muốn tắt Syntastic trên (ví dụ: nó có hàng nghìn lỗi và bạn không định sửa chúng và để nó dẫn đến giao diện người dùng chậm lại), thì vĩnh viễn danh sách đen nó rất thuận tiện.

Để làm điều này, hãy sử dụng syntastic_ignore_filestùy chọn. Nó được giấu trong sự trợ giúp, nhưng bạn có thể sử dụng regexes với tính năng này để đưa các tệp vào danh sách đen.

                                                    '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
Hoạt động tuyệt vời! Không phải những gì câu hỏi được yêu cầu mặc dù. Đây là +1 cho sự hữu ích.
bschlueter

5

Các cài đặt sau đây phù hợp với tôi.

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

Một tùy chọn khác để tắt kiểm tra một bộ đệm (bất kể loại tệp) là sử dụng :let b:syntastic_mode="passive". Vì nó không phải là một chuyển đổi, nó sẽ hoạt động ngay cả khi bộ đệm hiện đang ở chế độ thụ động.

Nếu bạn muốn tạm thời tắt kiểm tra tất cả các loại tệp trong tất cả các bộ đệm, bạn có thể sử dụng :bufdo let b:syntastic_mode="passive". Tôi đã thiết lập ánh xạ để tắt / bật kiểm tra tất cả các bộ đệm:

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

Điều này đặc biệt hữu ích khi thực hiện :wqavới nhiều vùng đệm mở.


4

Tương tự với những thứ được một số người khác đề cập, đây là đoạn vimrc sẽ tắt Syntastic theo mặc định, nhưng ánh xạ một nút (ở đây, F10) để kiểm tra tệp hiện tại và sử dụng nút tương tự như một nút chuyển đổi để tắt kiểm tra. Nó hơi chậm, nhưng hoạt động.

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

Cảm ơn Steven Lu , bây giờ tôi có thể bỏ qua các tệp của Ansible Roles .

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

0

Tôi đang sử dụng Ale và Syntastic chủ yếu vì hỗ trợ của Rust Ale vẫn chưa tốt lắm. Trong trường hợp của tôi, tôi đang sử dụng trình quản lý gói vim-plug, tôi thiết lập để nó không tự động bật bất kỳ thứ nào trong số này. Thay vào đó, tôi sử dụng chiến lược chuyển đổi.

Trong trường hợp của tôi, tôi muốn Ale theo mặc định và Syntastic cho Rust

Trong phần plugin của vimrc, tôi đã làm điều này

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

Sau đó, tôi đặt một liên kết để bật linter, (tôi sử dụng l làm mnemoic cho linter)

nnoremap <leader>l :ALEToggle<CR>

Đối với Rust, tôi ghi đè cùng một ràng buộc

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

Ngoài ra, tôi phải xóa nội dung dòng trạng thái khỏi vimrc của mình nếu không tôi sẽ gặp lỗi khi tải nó với tính năng Syntastic bị vô hiệu hóa

" 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

Trân trọng

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.