มี“ vim runtime log” หรือไม่?


130

บางครั้งฉันลองปรับแต่ง / คำสั่งใน vimrc ของฉัน ทุกอย่างดูเหมือนจะถูกต้อง แต่ก็ไม่ได้ผล

เป็นการยากที่จะรู้ว่าเกิดอะไรขึ้นเมื่อ vim เริ่มต้นและรู้ว่าคำสั่งใดล้มเหลวหรือไม่ดังนั้นจึงเป็นเรื่องยากที่จะดีบักสิ่งที่ทำให้เกิดปัญหาใน vimrc ของฉัน เป็นวิธีการลองผิดลองถูกซึ่งใช้เวลานานและเป็น PITA จริงๆ ตัวอย่างเช่นฉันมีปัญหากับปลั๊กอิน snipmate ในบางไฟล์และไม่มีเงื่อนงำในการค้นหาปัญหา

มี "บันทึกรันไทม์" หรือไม่เมื่อกลุ่มเริ่มต้นโดยบอกว่าคำสั่งใดที่เรียกใช้คำสั่งใดล้มเหลวและเช่นนั้น สิ่งนี้จะช่วยฉันได้มาก

คำตอบ:


164

การรัน vim ด้วยอ็อพชัน -V [N] จะสร้างบันทึกรันไทม์ที่ค่อนข้างหนักที่นี่ N คือระดับการดีบัก

vim -V9myVim.log

จะสร้างบันทึกการดีบักระดับ 9 ในไดเร็กทอรีปัจจุบันที่มีชื่อไฟล์ myVim.log


ฉันชอบทั้งสองวิธีจาก Zyx และคุณ แต่แนวทางของคุณดีกว่าในความคิดของฉันเพราะง่ายกว่าเฉพาะใน cmd และฉันสามารถกำหนดเส้นทางไปยังบันทึกทุกครั้งที่เรียกใช้และฉันไม่จำเป็นต้อง "ขยาย "vimrc ของฉัน และยินดีต้อนรับสู่ SO!
ยังมีใครใช้ MS-DOS คุณใน

2
ดูเพิ่มเติมและ:h 'verbose' :h :verbose
Palec

MacVimดูเหมือนจะไม่รองรับ-Vตัวเลือกหรือตัวเลือกบรรทัดคำสั่งใด ๆ
emallove

สิ่งนี้จะเปิดบัฟเฟอร์กลุ่มที่ว่างเปล่าโดยไม่มีชื่อไฟล์ อะไรต่อไป?
Geoff Langenderfer

104

:messages แสดงคำเตือนข้อผิดพลาดและข้อความให้ข้อมูลทั้งหมดที่ปรากฏ (อาจเป็นเวลาสั้น ๆ ) ในกลุ่มสถานะ

:echo errmsg พิมพ์ข้อความแสดงข้อผิดพลาดล่าสุด

g<เป็นอีกหนึ่งคุณสมบัติที่คนไม่กี่คนรู้จัก จาก:help g<:

g<คำสั่งที่สามารถใช้เพื่อดูหน้าสุดท้ายของการส่งออกคำสั่งก่อนหน้า สิ่งนี้มีประโยชน์อย่างยิ่งหากคุณพิมพ์โดยไม่ได้ตั้งใจ<Space>ที่พร้อมท์กดเข้า

ตัวอย่างเช่นลองแล้วยกเลิกพรอมต์แล้วตี:!lsg<


15

ใส่ฟังก์ชันนี้ลงใน. vimrc:

function! ToggleVerbose()
    if !&verbose
        set verbosefile=~/.log/vim/verbose.log
        set verbose=15
    else
        set verbose=0
        set verbosefile=
    endif
endfunction

แล้วสร้างไดเรกทอรี~/.log/vimและเรียกจะได้รับการบันทึกของคุณในToggleVerbose() ~/.log/vim/verbose.logโปรดทราบว่าคุณอาจตรวจพบ«ตัวแปรที่ซ้อนกันลึกเกินไปสำหรับการแสดงข้อผิดพลาด»ซึ่งโดยปกติจะไม่ปรากฏขึ้นเพียงเพราะคุณได้ยกระดับ verbose ขึ้น


2

ฉันไม่คิดว่าจะมีการบันทึกรันไทม์ต่อ seแต่คุณสามารถเรียกใช้งานในโหมดการแก้ปัญหา
http://web.archive.org/web/20090323034339/http://www.troubleshootingwiki.org/Debugging_Vim_Scripts


2
ไซต์นี้ดูเหมือนจะถูกแฮ็กหรืออะไรบางอย่าง จนกว่าจะมีการแก้ไขให้ดูเวอร์ชันแคชที่web.archive.org/web/20090323034339/http://...
Mu Mind

ฉันได้รับ 403 สิ่งต้องห้าม
Frank Fang


1

สิ่งนี้อาจขัดกับทุกสิ่งที่ SO ย่อมาจาก แต่นี่คือสิ่งที่ฉันทำ: ฉันเพิ่งกดหน้าจอพิมพ์ทันทีที่คำเตือนปรากฏขึ้นและดูภาพ


ปุ่มหยุดชั่วคราวจะไม่ให้ผลเหมือนกันลบกระดาษที่สิ้นเปลืองหรือไม่?
Rook

จนถึงตอนนี้ฉันไม่เคยรู้เลยว่าปุ่มหยุดชั่วคราวทำอะไร ไม่ว่าในกรณีใดฉันไม่คิดว่ามันจะทำอะไรใน Linux stackoverflow.com/questions/92802/…
puk

2
FWIW เทอร์มินัล * nix จะหยุดเอาต์พุตชั่วคราวบน Ctrl-S และดำเนินการต่อบน Ctrl-Q
joeytwiddle

1

ฉันต้องเพิ่ม "set nocp" เพื่อใช้ฟังก์ชัน "ToggleVerbose ()" เมื่อรันในรูทเนื่องจาก & verbose

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.