ฉันใช้ Syntastic ซึ่งเปิดใช้งานสำหรับไฟล์ HTML ของฉัน เนื่องจากฉันมีไฟล์ขนาดใหญ่มากที่เปิดใช้งานตัวตรวจสอบ "validator w3" GVIM หรือ VIM จึงทำงานช้ามากขณะบันทึกไฟล์ (: w)
เป็นไปได้ไหมที่จะสลับ syntastic ออกชั่วคราวสำหรับเซสชันปัจจุบัน
ฉันใช้ Syntastic ซึ่งเปิดใช้งานสำหรับไฟล์ HTML ของฉัน เนื่องจากฉันมีไฟล์ขนาดใหญ่มากที่เปิดใช้งานตัวตรวจสอบ "validator w3" GVIM หรือ VIM จึงทำงานช้ามากขณะบันทึกไฟล์ (: w)
เป็นไปได้ไหมที่จะสลับ syntastic ออกชั่วคราวสำหรับเซสชันปัจจุบัน
คำตอบ:
การใช้:SyntasticToggleMode
คุณสามารถสลับ Syntastic เป็นโหมดพาสซีฟซึ่งจะปิดใช้งานการตรวจสอบอัตโนมัติ จากนั้นคุณสามารถตรวจสอบไฟล์โดยเรียกใช้:SyntasticCheck
แทน
สำหรับข้อมูลเพิ่มเติมโปรดดู :help syntastic-commands
ในหมายเหตุอื่น: หาก Syntastic ช้าให้คุณลองใช้aleเป็นทางเลือกอื่น ไม่เหมือนกับ Syntastic ที่ทำงานแบบอะซิงโครนัสดังนั้นแม้ว่าจะช้า แต่ก็ไม่ควรขัดขวางคุณ
:error
หรือ Ctrl + Shift / Alt + E สลับระหว่างและ:SyntasticCheck
:SyntasticToggleMode
:command Sd SyntasticToggleMode
จากนั้นใน vi กด: Sd และจะปิดการใช้งาน syntastic ข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำที่นี่: stackoverflow.com/questions/3878692/aliasing-a-command-in-vim
silent! nmap <F6> :SyntasticToggleMode<CR>
ฉันได้ปิดใช้งาน Syntastic โดยค่าเริ่มต้นและเปิด / ปิดการตรวจสอบข้อผิดพลาดด้วยสิ่งต่อไปนี้ใน. vimrc ของฉัน:
let g:syntastic_mode_map = { 'mode': 'passive', 'active_filetypes': [],'passive_filetypes': [] }
nnoremap <C-w>E :SyntasticCheck<CR>
เมื่อฉันต้องการใช้การตรวจสอบข้อผิดพลาดฉันเพียงแค่กด: ctrl-w E
.vimrc
เช่นกัน อย่างไรก็ตามถ้าฉันกดCtrl-w E Syntastic จะปรากฏขึ้นเป็นวินาทีและหายไปอีกครั้ง มีความคิดเห็นว่าเกิดอะไรขึ้นและ / หรือจะติดตามสิ่งนี้อย่างไร
ทางเลือกอื่นสำหรับคำตอบของเจมี่และพระกิตติคุณเราสามารถปิดการใช้งานตัวตรวจสอบได้อย่างสมบูรณ์โดยระบุตัวตรวจสอบดังนี้:
let g:syntastic_html_checkers=['']
ตรวจสอบให้แน่ใจsyntastic_check_on_open
ว่าไม่ได้ตั้งค่าเป็น 1 ซึ่งจะสวนทางกับบรรทัดด้านบน:
let g:syntastic_check_on_open = 0
คุณสามารถปิด 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()
เนื่องจากสิ่งนี้ไม่ส่งผลกระทบต่อบัฟเฟอร์อื่น ๆ ฉันสามารถใช้ปลั๊กอินที่ยอดเยี่ยมนี้ต่อไปกับไฟล์อื่น ๆ (บางส่วน) ที่เข้ากันได้ที่ฉันเปิดไว้
สิ่งนี้ไม่ได้ตอบคำถามโดยตรง แต่สามารถช่วยได้นอกเหนือจากเซสชันปัจจุบัน หากคุณมีไฟล์ที่คุณต้องแก้ไขบ่อยครั้ง แต่คุณรู้ว่าคุณมักจะต้องการปิดใช้งาน Syntastic (เช่นมีข้อผิดพลาดหลายพันข้อและคุณตั้งใจที่จะไม่แก้ไขและปล่อยทิ้งไว้ซึ่งส่งผลให้ UI ช้าลง) จากนั้นอย่างถาวร การขึ้นบัญชีดำสะดวกมาก
ในการดำเนินการนี้ให้ใช้syntastic_ignore_files
ตัวเลือก มันซ่อนอยู่ในความช่วยเหลือ แต่คุณสามารถใช้ regexes กับคุณสมบัตินี้กับไฟล์บัญชีดำได้
'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$']
การตั้งค่าต่อไปนี้ใช้ได้ผลสำหรับฉัน
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'}
อีกตัวเลือกหนึ่งที่จะปิดการตรวจสอบการบัฟเฟอร์เดียว (โดยไม่คำนึงถึง filetype) :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
กับบัฟเฟอร์แบบเปิดจำนวนมาก
เช่นเดียวกับที่กล่าวถึงโดยคนอื่น ๆ บางส่วนนี่คือส่วน vimrc ที่จะปิด Syntastic ตามค่าเริ่มต้น แต่จะแมปปุ่ม (ที่นี่คือ 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>
ขอบคุณสำหรับSteven Lu ตอนนี้ฉันสามารถเพิกเฉยต่อไฟล์ของAnsible Rolesได้
" ignore files of Ansible Roles.
let g:syntastic_ignore_files = ['\m^roles/']
ฉันใช้ Ale และ Syntastic เป็นหลักเนื่องจากการรองรับ Rust Ale ยังไม่ค่อยดีนัก ในกรณีของฉันฉันใช้ vim-plug package manager ฉันตั้งค่าเพื่อไม่ให้เปิดใช้งานสิ่งเหล่านี้โดยอัตโนมัติ ฉันใช้กลยุทธ์การสลับแทน
ในกรณีของฉันฉันต้องการ Ale โดยค่าเริ่มต้นและ Syntastic สำหรับ Rust
ในส่วนปลั๊กอินของ vimrc ฉันทำสิ่งนี้
Plug 'w0rp/ale', { 'on': 'ALEToggle' }
Plug 'vim-syntastic/syntastic', { 'on': 'SyntasticToggleMode' }
หลังจากนั้นฉันตั้งค่าการผูกเพื่อเปิดใช้งาน linter (ฉันใช้ l เป็น mnemoic สำหรับ linter)
nnoremap <leader>l :ALEToggle<CR>
สำหรับ Rust ฉันจะแทนที่การผูกเดียวกัน
au FileType rust noremap <buffer> <leader>l :SyntasticToggleMode<CR>
นอกจากนี้ฉันต้องลบข้อมูล statusline ออกจาก 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
ความนับถือ
let g:syntastic_disabled_filetypes=['html']