คำตอบสำหรับคำถามโดยตรงของคุณคือ @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
หากมีข้อผิดพลาดเกิดขึ้น
หมายเหตุ: ควรมีความเฉพาะเจาะจงมากขึ้นกับรูปแบบไฟล์นั้นในBufWritePost
autocmd เพื่อให้ไฟล์ที่ไม่เกี่ยวข้องไม่สร้างขึ้น
มีอีกมาก!
นี่ใช้เพียงบางส่วนของคำสั่ง 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