การนำทางรหัสโครงการโดยไม่ต้องใช้คำสั่งภายนอก


9

ฉันพยายามรวบรวมกล่องเครื่องมือของคำสั่ง / แบบสอบถาม Vim, ในคำสั่งหรือโหมดการค้นหา, สำหรับการนำทางรหัสฐานโดยไม่ต้องใช้ Ctags หรือเครื่องมือภายนอกอื่น ๆ Ctags นั้นยอดเยี่ยม แต่การสนับสนุนอาจแตกต่างกันไปตามสภาพแวดล้อมการพัฒนาที่คุณติดอยู่ ฉันต้องการเพียงแค่พึ่งพาความรู้ Vim


4
บางทีคุณควรพูดว่า "เครื่องมือภายนอก" แทนที่จะเป็น "ctags" เพราะคำแนะนำแรกของฉันคือ cscope
muru

1
gdสิ่งหนึ่งที่ผมใช้เป็นคำสั่ง สิ่งนี้ใช้เคอร์เซอร์ไปที่การประกาศโลคัลของตัวแปรภายใต้เคอร์เซอร์
nitishch

@muru ฉันไม่ต้องการใช้เครื่องมือภายนอกใด ๆ สิ่งที่ฉันพยายามเรียนรู้คือเทคนิคสำหรับการนำทางรหัสฐานอย่างมีประสิทธิภาพโดยใช้คำสั่ง Vim ฉันรู้ว่ามันสามารถทำได้ แต่เห็นได้ชัดว่าต้องมีความรู้ Vim ที่ลึกกว่าที่ฉันมี อาจจะไม่ใช่คำถาม SE ที่ดีเนื่องจากมันเปิดกว้างมาก แต่ฉันไม่รู้ว่าจะดูที่ไหนดี
1332148

คำตอบ:


11

"รวมการค้นหา" เป็นหนึ่งในเครื่องมือดังกล่าว:

[I and ]I      " search current buffer and included files for
               " the word under the cursor, skipping comments
:ilist foo     " same as above but for 'foo'
:ilist /foo    " same as above but for a word containing 'foo'

ที่เกี่ยวข้องกับ "รวมการค้นหา", "การค้นหาคำจำกัดความ" ก็น่าสนใจเช่นกัน:

[D and ]D      " search current buffer and included files for
               " the definition of the symbol under the cursor
:dlist foo     " same as above but for definition of 'foo'
:dlist /foo    " same as above but for a definition containing 'foo'

:dlist /       " list all definitions from the current buffer
               " and included files

เครื่องมือทั้งสองขึ้นอยู่กับความหลากหลายของตัวเลือกที่อาจมีหรือไม่มีการตั้งค่าโดยปลั๊กอินชนิดไฟล์ของคุณ

:help include-searchดู


นอกจากนี้คุณยังสามารถใช้gdและgDรุ่นน้ำหนักเบาของและ[D]D

:help gdดู


ในบัฟเฟอร์ปัจจุบันคำสั่งด้านล่างจะแสดงคำจำกัดความของฟังก์ชันทั้งหมดและหมายเลขบรรทัดของมัน:

:g/func/#

:help :gดู


:grepและ:vimgrepยังมีประโยชน์ถ้าเพียงเพราะผลลัพธ์ของพวกเขาจะถูกป้อนเข้าสู่รายการ quickfix ที่สามารถสำรวจด้วย:cn, :cp... และแสดงในหน้าต่าง quickfix ที่มีประโยชน์มาก

ดู:help :grep, และ:help :vimgrep:help quickfix


การพูดของรายการ QuickFIX / หน้าต่างผมเขียนฟังก์ชั่นนี้ (ขึ้นอยู่กับการทำงานของคนอื่น ๆ ) เพื่อแสดงผลการ[I, ]I, :ilist, [D, ]Dและ:dlistในรายการ QuickFIX / การหน้าต่าง แน่นอน YMMV


ในขณะที่ไม่ใช่เครื่องมือนำทางอย่างเคร่งครัดฉันพบว่าหน้าต่างแสดงตัวอย่างมีประโยชน์มากสำหรับการตรวจสอบลายเซ็นของฟังก์ชันที่ฉันใช้ด้วย

:help preview-windowดู


ที่กล่าวว่า ...

Vim ไม่ทราบอะไรเกี่ยวกับรหัสของคุณนอกเหนือจากรูปแบบ regex สองสามรูปแบบที่อาจหรือไม่เหมาะกับรูปแบบการเข้ารหัสของคุณหรืออะไรก็ตาม ซึ่งหมายความว่าการนำทางรหัสทำได้ดีขึ้นด้วยความช่วยเหลือของเครื่องมือภายนอกเช่น ctags, cscope หรือ GNU GLOBAL


5

มีหลายวิธีในการสำรวจรหัส (รวมอยู่ในเสียงเรียกเข้าและภายนอก) ฉันยังคงค้นพบมัน สิ่งที่ฉันใช้ในการทำงานประจำวันคือ:

  • พิมพ์ข้อความในไฟล์โครงการและไปยังหน้าต่าง Quickfix (ฉันใช้ตัวค้นหา silver เพื่อทำการ greping)
  • ใช้ปลั๊กอินที่เกี่ยวข้องกับภาษาฉันรู้ว่ามีอยู่สำหรับ javascript, ruby, go ที่อนุญาตให้ข้ามระหว่างโมดูลของโปรแกรม (ในปลั๊กอิน javascript คือgf- คำสั่ง
  • Ctrl+O, Ctrl+I- ย้อนกลับหรือไปข้างหน้าใน "ประวัติ" ของการนำทาง
  • g; - ข้ามไปยังตำแหน่งที่แก้ไขล่าสุดในไฟล์
  • ใช้เครื่องหมายสำหรับวาง "บุ๊คมาร์ค" ในสถานที่เฉพาะ คุณสามารถวางเครื่องหมายด้วย'[some_letter]คำสั่งถ้าตัวอักษรเป็นตัวพิมพ์ใหญ่แล้วคุณจะได้รับเครื่องหมายซึ่งจะสามารถเข้าถึงได้จากไฟล์ใด ๆ (บัฟเฟอร์)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.