ฉันมีปัญหาในกลุ่มและผมคิดว่ามันอาจจะอยู่ในของฉันvimrc
ไฟล์ (หรือได้รับการบอกว่ามันอาจจะเป็นของฉันvimrc
ไฟล์)
ฉันจะตรวจสอบสิ่งนี้ได้อย่างไร ถ้าเป็นvimrc
ไฟล์ของฉันฉันจะรู้ได้อย่างไรว่าปัญหาอยู่ตรงไหน
ฉันมีปัญหาในกลุ่มและผมคิดว่ามันอาจจะอยู่ในของฉันvimrc
ไฟล์ (หรือได้รับการบอกว่ามันอาจจะเป็นของฉันvimrc
ไฟล์)
ฉันจะตรวจสอบสิ่งนี้ได้อย่างไร ถ้าเป็นvimrc
ไฟล์ของฉันฉันจะรู้ได้อย่างไรว่าปัญหาอยู่ตรงไหน
คำตอบ:
สิ่งแรกที่คุณต้องการทำคือเริ่ม Vim ด้วยการตั้งค่าเริ่มต้น:
vim -u NONE -U NONE -N
การ-u NONE
ป้องกัน Vim จากการโหลด vimrc ของคุณ-U NONE
ป้องกัน Vim จากการโหลด gvimrc ของคุณและ-N
บอกให้ Vim ใช้โหมดที่ไม่เข้ากันได้ (ไม่จำเป็นต้องใช้สิ่งนี้ แต่ผู้ใช้ Vim ส่วนใหญ่ไม่ได้ใช้ในโหมด "Compatible") โปรดทราบว่าNONE
จะต้องอยู่ในตัวพิมพ์ใหญ่ทั้งหมด
ใน Windows คุณสามารถเพิ่มสถานะเหล่านี้โดยการสร้างทางลัดใหม่ 1
หากปัญหายังคงอยู่คุณจะรู้ว่าไม่ใช่สิ่งที่อยู่ใน vimrc ของคุณ
หากปัญหาหายไปคุณก็เกิดจากบางสิ่งในไฟล์ vimrc ของคุณ
เย่! ไปและถามคำถามของคุณ อย่าลืมระบุว่าคุณได้ลองใช้ Vim โดยไม่ใช้ไฟล์ vimrc!
หากคุณยังไม่ได้ทำคุณอาจต้องการบันทึกสำเนาสำรองของไฟล์ vimrc ของคุณก่อน
สิ่งต่อไปที่คุณอาจต้องทำคือปิดการใช้งานปลั๊กอินทั้งหมดก่อน ปลั๊กอินสามารถเปลี่ยนแปลงค่อนข้างเป็นกลุ่มในกลุ่ม หากแก้ไขปัญหานี้แล้วพยายามที่จะหา
ที่ปลั๊กอินโดยการทำให้พวกเขาหนึ่งโดยหนึ่ง หลังจากที่คุณได้พบซึ่งปลั๊กอินว่าเป็นสาเหตุของปัญหาคุณสามารถลองและแก้ไขได้โดยการอ่านเอกสารของปลั๊กอินนี้และ / plugin-<name>
หรือโดยการถามคำถามที่มีแท็ก
หากไม่ใช่ปลั๊กอินและคุณไม่มีความคิดใด ๆที่ทำให้เกิดปัญหาของคุณแสดงว่าเป็นขั้นตอนการลองผิดลองถูก แสดงความคิดเห็นหนึ่งหรือหลายบรรทัดใน vimrc ของคุณเริ่ม Vim ตรวจสอบว่าปัญหาเกิดขึ้นหรือไม่และทำซ้ำขั้นตอนนี้จนกว่าปัญหาจะหยุด วิธีที่เร็วที่สุดในการทำเช่นนี้คือ:
ในที่สุดคุณควรมีตัวเลือกเดียวหรือการรวมกันของตัวเลือกที่ทำให้เกิดปัญหาของคุณ คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกใด ๆ ในกลุ่มโดยใช้:
:help 'option_name'
คำพูดมีความสำคัญที่นี่มันมักจะทำงานโดยไม่มีพวกเขา แต่บางครั้งคุณท้ายผิดหน้าถ้าคุณไม่ใส่พวกเขา
หากคุณยังสับสนหลังจากอ่านหน้าความช่วยเหลือคุณจะรู้ว่าจะถามคำถามได้ที่ไหน ;-)
หากคุณต้องการแยกปลั๊กอินเดี่ยวอาจจะถามคำถามเกี่ยวกับปลั๊กอินนั้นคุณต้องการโหลดให้น้อยที่สุดเท่าที่จะทำได้ แต่ยังคงโหลดปลั๊กอินอยู่ คุณสามารถทำได้โดยใช้คุณสมบัติแพ็คเกจของ Vim สิ่งนี้ต้องการ Vim 8 หรือ Neovim รุ่นล่าสุดอย่างสมเหตุสมผล
สร้างไดเรกทอรีว่างใหม่ เราจะใช้~/plugin
เส้นทางในตัวอย่างนี้ ตอนนี้ใส่ปลั๊กอินในpack/plugins/start/$name
ไดเรกทอรีปกติ ตัวอย่างเช่น:
git clone https://github.com/fatih/vim-go.git ~/plugin/pack/plugins/start/vim-go
สร้างtest-vimrc
ไฟล์ที่มีเนื้อหาดังต่อไปนี้ นี้จะให้แน่ใจว่าเป็นกลุ่มจะโหลดปลั๊กอินจาก~/plugin
ไดเรกทอรีและไม่~/.vim
ไดเรกทอรี:
set nocompatible
set packpath=~/plugin,/usr/share/vim/vimfiles,/usr/share/vim/vim80,/usr/share/vim/vimfiles/after,~/plugin/after
packloadall!
syntax on
filetype plugin indent on
เริ่มเป็นกลุ่มด้วย:
vim -U NONE -u ~/test-vimrc
ตอนนี้คุณมี vimrc น้อยที่สุดด้วยปลั๊กอินตัวเดียวนี้
เชิงอรรถ
1ตัวอย่างเช่น 64 บิตของ Windows "C:\Program Files (x86)\Vim\vim74\vim.exe" -u NONE -U NONE -N
ทางลัดจะมีลักษณะบางอย่างเช่นนี้ หากต้องการสร้างคลิกขวาใน File Explorer ที่คุณต้องการทางลัดจากนั้นเลือกใหม่ -> ทางลัดและวางข้อความทางลัด คุณอาจต้องเปลี่ยนเส้นทาง Vim หากติดตั้ง Vim ของคุณในตำแหน่งอื่น
-U NONE
-u NONE
มี-D
พารามิเตอร์ Vim เป็นพิเศษสำหรับการดีบักซึ่งจะไปที่โหมดการดีบักหลังจากดำเนินการคำสั่งแรกจากสคริปต์
ตัวอย่างเช่นการเรียกใช้กลุ่มในโหมดดีบักโดยไม่มีปลั๊กอินให้เรียกใช้เป็น:
vim --noplugin -D
พิมพ์n
/ next
เพื่อแยกบรรทัดถัดไปแล้วกดEnterต่อไป
และcont
หรือq
กลับไปที่vim
ส่วนต่อประสาน
หากคุณกำลังใช้เวอร์ชัน GUI ให้ใส่gui
คำสั่งใน vimrc ของคุณเพื่อเริ่มการดีบักทันทีหลังจากคำสั่งนั้น
กดCtrl+ dเพื่อดูรายการคำสั่งที่มี
อ่านเพิ่มเติม:
:help debug-scripts
ดังที่ได้กล่าวไปแล้วก่อนอื่นvim -u NONE -U NONE -N
ให้ตรวจสอบว่า vanilla vim ของคุณทำงานได้ดี
จากนั้นเริ่มเป็นกลุ่มตามปกติแล้วตรวจสอบ
:messages
จากภายในเป็นกลุ่มหลังจากปัญหาซึ่งจะแสดงคำเตือนและข้อผิดพลาดทั้งหมด
ในที่สุดก็เริ่มเป็นกลุ่มด้วยคำสั่งดังต่อไปนี้
vim -V9logfile.log
ซึ่งจะสร้าง logfile ที่เรียกว่าlogfile.log
, -V9
เป็นระดับการบันทึกและพยายามที่จะทำให้เกิดปัญหาของคุณ
อีกหนึ่งเคล็ดลับ: ในฐานะมนุษย์ถ้ำตามที่อาจดูเหมือนฉันต้องการเพิ่ม: echom "message" ไปยัง. vimrc ของฉันเพื่อดูว่ามีการดำเนินการอะไรและอะไรที่ไม่
ตัวอย่างเช่น
if executable('ag')
:echom "AG FOUND"
...
endif
สิ่งนี้จะช่วยให้ฉันดูได้อย่างรวดเร็วว่าบล็อกกำลังถูกดำเนินการหรือไม่ ฯลฯ ข้อความจะถูกพิมพ์บนคอนโซลในครั้งต่อไปที่คุณเริ่มเป็นกลุ่ม
echom
คำสั่งอื่นที่น่าสนใจคือ:messages
การได้รับข้อความเต็มของข้อความที่ถูกสะท้อน บางครั้งอาจเป็นประโยชน์ในการดูพวกเขาหลังจากการเริ่มต้น
สิ่งหนึ่งที่ฉันพบว่ามีความช่วยเหลือคือการเก็บรวบรวมตัวแปรที่สลับส่วนของคุณ.vimrc
เพื่อให้คุณสามารถปิดการใช้งานหรือเปิดใช้งานส่วนของมันโดยไม่ต้องแสดงความคิดเห็นออก .vimrc
นอกจากนี้ยังมีผลข้างเคียงที่น่ารื่นรมย์ของบังคับให้คุณคิดเกี่ยวกับองค์กรของคุณ
" feature toggles in vimrc
let g:vimrc_feat_pathogen = 1
let g:vimrc_feat_core_minimal = 1
let g:vimrc_feat_matchit = 1
let g:vimrc_feat_options = 1
let g:vimrc_feat_colors_and_highlight = 1
let g:vimrc_feat_key_rebinding_arpeggio = 1
let g:vimrc_feat_key_rebinding = 1
let g:vimrc_feat_autocommand_group = 1
let g:vimrc_feat_custom_definitions = 1
let g:vimrc_feat_load_opam = 1
นี่คือตัวอย่างของส่วนที่ได้รับการปกป้องโดยif
:
if g:vimrc_feat_core_minimal
set nocompatible
filetype plugin indent on
syntax on
endif
เวลาในการโหลด vimrc ของฉันช้ามากประมาณ 400 มิลลิวินาทีและฉันลดลงเหลือ 20 มิลลิวินาทีโดยการลบบรรทัดนี้:
silent !mkdir ~/.config/nvim/backups > /dev/null 2>&1
ตรวจสอบให้แน่ใจว่าคุณไม่มีการโทรไปยังคำสั่งภายนอกเช่นนั้น
นี่เป็นขั้นตอนง่าย ๆ ที่จะช่วยให้คุณเริ่มต้นได้
:source %
หรือ:so $MYVIMRC