คำตอบสำหรับคำถามโดยตรงของคุณคือ @EvergreenTree ที่โพสต์ อย่างไรก็ตามฉันรู้สึกว่าคุณขาดเครื่องมือ Vim builtin สำหรับการสร้าง / คอมไพล์ / รวบรวมโครงการ ส่วนใหญ่ที่สะดุดตา:makeและรายการแก้ไขด่วน
การใช้อะไร:makeทำให้เราได้?
การใช้:makeช่วยให้คุณสามารถรวบรวมข้อผิดพลาดของคุณในรายการที่เรียกว่ารายการ quickfix การใช้คำสั่งลัดคุณสามารถนำทางระหว่างข้อผิดพลาดในไฟล์ของคุณได้ดังนั้นคุณจะกระโดดไปทางที่คอมไพเลอร์บอกว่าข้อผิดพลาดนั้นคืออะไร (มีประโยชน์ใช่ไหม)
: แต่งหน้า
วิ่งจะทำให้รันโปรแกรมที่:make 'makeprg'จากนั้นแยกวิเคราะห์ผลลัพธ์ด้วย'errorformat'แล้วใส่แต่ละรายการลงในรายการโปรแกรมแก้ไขด่วน
โดยปกติ'makeprg'ค่าเริ่มต้นกับคำสั่งที่ทำงานmake Makefileอย่างไรก็ตามคุณสามารถเปลี่ยน'makeprg'ผ่าน:compilerคำสั่งหรือตั้งค่าโดยตรง
:makeนอกจากนี้คุณยังสามารถส่งผ่านข้อโต้แย้งพิเศษเพื่อ เช่น:make clean
หมายเหตุ: การเรียกใช้:makeมักจะแสดงผลลัพธ์ของคำสั่งที่ด้านล่างของหน้าจอพร้อมรับคำให้กด Enter เพียงกด Enter เนื่องจากเอาต์พุตทั้งหมดจะพร้อมใช้งานในรายการ quickfix คุณสามารถปราบปรามนี้ผ่านทางเช่น:silent:silent make
คำสั่งที่กำหนดเองทั่วไปสำหรับการทำแบบเงียบคือ:
command -nargs=* -bar Smake silent make <args> <bar> cwindow
รายการด่วน
หลังจากที่คุณเรียกใช้:makeรายการ quickfix จะเก็บผลลัพธ์ของคอมไพเลอร์
ใช้คำสั่งต่อไปนี้เพื่อนำทางรายการ quickfix
:copen เพื่อเปิดหน้าต่าง quickfix
:cclose เพื่อปิดหน้าต่างคำสั่งด่วน
:cnext/ :cprevเพื่อเลื่อนไปยังรายการถัดไป / ก่อนหน้า
:ccเพื่อพิมพ์ข้อผิดพลาดปัจจุบันที่ด้านล่างหรือ:cc 3แสดงข้อผิดพลาดเฉพาะในตัวอย่างนี้ 3
ส่วนตัวผมใช้ทิมสมเด็จพระสันตะปาปาไม่บอบช้ำปลั๊กอินที่จะนำทางรายการ QuickFIX
สิ่งที่เกี่ยวกับการทำงาน:makeโดยอัตโนมัติและเงียบ ๆ ?
คุณสามารถทำได้:autocmdเช่นเดียวกับที่คุณอยู่ที่ไหน
augroup auto_make
autocmd!
autocmd BufWritePost * silent make
autocmd QuickFixCmdPost *make* cwindow
augroup END
เป็นโบนัสที่ฉันเพิ่มเข้ามาในการเปิดหน้าต่างคำสั่งด่วนผ่าน:cwindowหากมีข้อผิดพลาดเกิดขึ้น
หมายเหตุ: ควรมีความเฉพาะเจาะจงมากขึ้นกับรูปแบบไฟล์นั้นในBufWritePostautocmd เพื่อให้ไฟล์ที่ไม่เกี่ยวข้องไม่สร้างขึ้น
มีอีกมาก!
นี่ใช้เพียงบางส่วนของคำสั่ง builtin ของ Vim รวมถึง autocmd เพียงไม่กี่ตัวเพื่อโน้มน้าวใจ แน่นอนมีปลั๊กอินและเครื่องมือที่อาจช่วยคุณได้
- Dispatch.vimสามารถใช้เพื่อรัน
:makeงานแบบอะซิงโครนัส
- ไวยากรณ์ของปลั๊กอินSyntasticจะตรวจสอบไฟล์หลังจาก
:writeนั้น
- Ale.vim (Asynchronous Lint Engine) เป็นปลั๊กอินสำหรับจัดทำ linting ใน NeoVim และ Vim 8 ในขณะที่คุณแก้ไขไฟล์ข้อความ
- Unimpaired.vimทำให้การจัดการรายการ quickfix ทำได้ง่าย
- Makefiles เก่าธรรมดา นอกจากคุณ
./script.shจะมีความซับซ้อนมากคุณอาจต้องการตรวจสอบการใช้ สามารถขยายงานได้มากขึ้นในภายหลังและเป็นเครื่องมือสร้างทั่วไป
- คุณสามารถใช้Vim Awesomeเพื่อค้นหาปลั๊กอินเพิ่มเติมที่อาจช่วยได้
ข้อสรุป
ส่วนตัวฉันรวม:makeและ Quickfix ในเวิร์กโฟลว์ของฉันเอง ฉันเชื่อว่าการบันทึกผลลัพธ์ของกระบวนการสร้างของคุณและการจับข้อผิดพลาดเพื่อให้คุ้มค่ากับการลงทุน เป็นโบนัสเพิ่มคุณอาจจะกลายเป็นความสะดวกสบายมากขึ้นกับรายการ QuickFIX และสามารถใช้รายการสำหรับการใช้งานอื่น ๆ :grepเช่น
สำหรับความช่วยเหลือเพิ่มเติมดู:
:h :make
:h quickfix
:h 'makeprg'
:h 'errorformat'
:h :compiler
:h :copen
:h :cwindow
:h :cnext
:h :cc