เครื่องมือการเขียนโปรแกรมสำหรับวัตถุประสงค์ทั่วไปที่ดีที่สุดคืออะไร [ปิด]


22

ฉันใช้ Vim เป็นตัวแก้ไขข้อความของฉันอยู่พักหนึ่งและฉันรู้สึกว่าฉันใช้เวลานานในการทำสิ่งใด ฉันใช้ ctags เพื่อแท็กรหัสฐานสำหรับการนำทางและฉันใช้ grep (แม้ว่าไม่มีประสิทธิภาพ) เพื่อค้นหาตำแหน่งที่ใช้วิธีการบางอย่าง แต่ฉันมีความรู้สึกว่ามีเครื่องมือที่มีประโยชน์บางอย่างที่ฉันไม่รู้ซึ่งอาจทำให้ฉันมีประสิทธิผลมากขึ้น

ซอฟต์แวร์กองซ้อนที่ดีที่สุดที่ฉันสามารถใช้สำหรับการเขียนโปรแกรมทั่วไปที่จะเสริม Vim คืออะไร? คุณจะนำทางฐานรหัสเรียกใช้ทำผลักดันการเปลี่ยนแปลงไปยังระบบควบคุมแหล่งที่มาของคุณ ฯลฯ ได้อย่างไร? คุณเปิดคอนโซลที่ 2 ถัดจาก Vim หรือไม่?


2
เป็นกลุ่มเอง บางทีคุณอาจไม่ได้ใช้งานปลั๊กอิน / สคริปต์ที่ถูกต้องสำหรับงาน ขึ้นอยู่กับประเภทของการเขียนโปรแกรมที่คุณกำลังทำภาษาสิ่งที่เครื่องมืออื่น ๆ ที่คุณต้องการและอื่น ๆ
bitek

ฉันไม่ได้ระบุภาษาใด ๆ เพื่อไม่ให้ส่งผลต่อการตอบสนองที่ฉันจะได้รับ ฉันไม่ได้กำลังมองหาปลั๊กอิน Vim จริงๆแม้ว่าจะมีประโยชน์ก็ตาม
Louis Salin

ฉันพบว่างานนำเสนอนี้มีประโยชน์มาก: zmievski.org/2010/06/vim-for-programmers-on-slideshare
gabe

ฉันทำสิ่งนี้เป็นวิกิชุมชน ฉันรู้ว่าไม่มีคำตอบที่ดีที่สุดสำหรับคำถามของฉัน ขอบคุณสำหรับคำตอบของคุณ!
Louis Salin

คำตอบ:


8

คุณสมบัติที่ยอดเยี่ยมของvimคือการรวมเข้ากับคำสั่งเชลล์ที่มีอยู่ เครื่องมือภายนอกที่มีประโยชน์มากที่สุดคือเครื่องมือที่รวมอยู่ในcoreutilsและเครื่องมือการจัดระเบียบข้อความอย่างง่ายอื่น ๆ ตัวอย่างเช่นเราสามารถรับจำนวนบรรทัดในไฟล์ด้วย:

:! wc -l %

หรือจำนวนคำ:

:! wc -w %

คำสั่งใด ๆ ที่ทำงานบนเชลล์จะทำงานที่นี่ สิ่งนี้สามารถรวมพลังกับคำสั่ง:read( :r) เพื่อเอาท์พุทของคำสั่งลงในไฟล์ ตัวอย่างเช่น:

:r !wc -l %

จะวางบรรทัดคำนับลงในไฟล์ที่คุณกำลังแก้ไข

ข้อดีอีกประการของสิ่งนี้คือการแทนที่ข้อความที่คุณกำลังแก้ไขด้วยเอาต์พุตของหนึ่งในคำสั่งเหล่านี้ ตัวอย่างเช่นคุณสามารถจัดรูปแบบไฟล์ทั้งหมดด้วยparการดำเนินการคำสั่ง:

:% !par

5

ฉันพบ NERDtree ที่ขาดไม่ได้สำหรับการนำทางผ่าน codebase ของฉัน นอกจากนั้นการลงทุนสักระยะเพื่อให้มีความเชี่ยวชาญในการเคลื่อนย้ายบัฟเฟอร์ / หน้าต่างของคุณนั้นคุ้มค่าจริงๆ


+1 สำหรับการอ้างอิงถึงปลั๊กอินที่ยอดเยี่ยมนี้ ( github.com/scrooloose/nerdtree )
ประกาศ

4

ไม่ว่าภาษาของคุณจะเป็นอะไรคุณจะต้องใช้คุณสมบัติที่เรียกว่าctagsซึ่งช่วยให้สามารถเรียกดูคำจำกัดความของแหล่งข้อมูลได้ สิ่งนี้ต้องการเครื่องมือภายนอกในการสร้างไฟล์ TAGS ที่ VIM ใช้เพื่อค้นหาตำแหน่งของคำจำกัดความของรหัสต่างๆภายในโครงการ

รับเครื่องมือctags ที่อุดมสมบูรณ์ใช้ได้กับหลายภาษาและใช้งานง่าย

จาก VIM :help ctags

ctagsจะสร้างดัชนีของตัวระบุทั้งหมดในแผนผังต้นไม้ จากนั้นคุณสามารถใช้คำสั่งแท็กเพื่อนำทางไปรอบ ๆ ต้นกำเนิดของคุณ เห็น:help tag-commandsไหม ที่ง่ายที่สุดคือการวางเคอร์เซอร์ไปที่คำหลักและกด-CTRL ]วิธีกลับไปยังจุดที่คุณมาจากสื่อCTRL-T

นอกเหนือจากนี้คุณอาจต้องการดูเคล็ดลับและการปรับปรุง VIM ที่กล่าวถึงในที่นี้มันเป็นการอภิปรายที่ครอบคลุมมากของบางสิ่งที่สามารถทำได้เพื่อปรับปรุงประสบการณ์ของผู้ใช้


ฉันพูดถึงในคำถามของฉันฉันใช้ ctags แต่ขอบคุณสำหรับคำตอบต่อไป! :)
Louis Salin

4

เสียงเรียกเข้าเป็นเครื่องมือที่ทรงพลังมากฉันแน่ใจว่าพวกคุณทุกคนรู้ดีอยู่แล้ว คุณจะเริ่มได้รับการเพิ่มประสิทธิภาพโดยใช้เสียงเรียกเข้าภายในสองสามสัปดาห์ แต่คุณจะไม่มีวันหมดความรู้เรื่อง Vim ดังนั้นฉันมักจะมองหาวิธีใหม่และมีประสิทธิภาพในการทำสิ่งต่าง ๆ ใน Vim มีผู้ชายคนหนึ่งชื่อดีเรกไวแอตที่ทำscreencasts ที่ยอดเยี่ยมเกี่ยวกับการใช้งานของ Vim และปลั๊กอินที่เขาใช้

ปลั๊กอินบางตัวที่ฉันใช้

  1. คำสั่ง-Tนี้จะทำให้การเรียกดูไฟล์สายลมและมันก็ฉลาดมาก

    ปลั๊กอิน Command-T จัดเตรียมกลไกที่รวดเร็วและใช้งานง่ายอย่างยิ่งสำหรับการเปิดไฟล์ที่มีการกดแป้นจำนวนน้อยที่สุด มันชื่อ "Command-T" เพราะเป็นแรงบันดาลใจจากหน้าต่าง "ไปที่ไฟล์" ที่ถูกผูกไว้กับ Command-T ใน TextMate

  2. fuzzyfinderฉันใช้สิ่งนี้เป็นส่วนใหญ่เพื่อ broswer บัฟเฟอร์และเปลี่ยนไดเรกทอรีปัจจุบัน

    FuzzyFinder ให้วิธีที่สะดวกในการเข้าถึงบัฟเฟอร์ / ไฟล์ / คำสั่ง / คั่นหน้า / แท็กที่คุณต้องการอย่างรวดเร็ว FuzzyFinder ค้นหาด้วยรูปแบบฟัซซี / บางส่วนที่แปลงรูปแบบที่ป้อน

  3. NERDTreeนี่เป็นปลั๊กอินไฟล์เบราว์เซอร์ที่ดีที่สุดสำหรับกลุ่ม

    แผนผัง NERD ช่วยให้คุณสำรวจระบบไฟล์ของคุณและเปิดไฟล์และไดเรกทอรี มันนำเสนอระบบไฟล์ให้กับคุณในรูปแบบของต้นไม้ที่คุณจัดการกับแป้นพิมพ์และ / หรือเมาส์ นอกจากนี้ยังช่วยให้คุณสามารถดำเนินการระบบแฟ้มอย่างง่าย

  4. XPTemplateปลั๊กอินเทมเพลตที่ดีที่สุดในโลก

    เอ็นจิ้นโค้ดขนาดสั้นสำหรับ Vim พร้อมกับไลบรารี่ส่วนย่อย XPTemplate ให้คุณเขียนโค้ดได้อย่างราบรื่นรวดเร็วและสะดวกสบาย

  5. rails.vimหากคุณทำสิ่งต่าง ๆ กับทางรถไฟสิ่งนี้เป็นสิ่งที่ขาดไม่ได้

    TextMate อาจเป็นความนิยมล่าสุดสำหรับการพัฒนาแอพพลิเคชั่น Ruby on Rails แต่ Vim นั้นคงอยู่ตลอดไป ปลั๊กอินนี้มีคุณสมบัติดังต่อไปนี้สำหรับการพัฒนาแอพพลิเคชั่น Ruby on Rails

  6. NerdCommenterทำให้การคอมเมนต์ในโค้ดง่าย ๆ

และนี่เป็นเพียงส่วนหนึ่งของปลั๊กอินที่ฉันใช้ในการดาวน์โหลดปลั๊กอินทั้งหมดด้วย vimrc ของฉันให้ชำระเงินdotfilesของฉัน


3

มีปลั๊กอินที่ดีสำหรับการเป็นกลุ่มที่ไม่ตรวจสอบไวยากรณ์เป็นSyntastic มีเครื่องมืออื่น ๆ มากมายเช่นกันสำหรับการจัดการไฟล์การสร้าง ฯลฯ ไปที่ IRC #vim บน freenode.net มีคนที่เป็นประโยชน์มากมาย


3

สิ่งที่ฉันชอบคือ cscope หากคุณได้รวบรวม vim ด้วยการสนับสนุน cscope คุณสามารถใช้คำสั่ง cscope โดยตรงจาก VIM เช่นการค้นหาไฟล์รวมฟังก์ชั่นที่เรียกโดยฟังก์ชั่น xyz ฯลฯ ฉันได้ลองกับแหล่งเก็บข้อมูลรหัสขนาดใหญ่มาก มันช่วยได้มาก

http://cscope.sourceforge.net/cscope_vim_tutorial.html


1

หากคุณกำลังเขียนโปรแกรมในภาษาที่รองรับโดย GCC (C, C ++, Java, Fortran) Clewnเป็นปลั๊กอินที่ยอดเยี่ยมที่รวม GDB debugger ไว้ใน VIM ฉันพบว่ามันเป็นอินเทอร์เฟซที่ดีที่สุดสำหรับ GDB ที่มีอยู่


0

ฉันมักจะตั้งค่าscreenเซสชันสำหรับแต่ละโครงการ เสียงเรียกเข้าอยู่ในหน้าต่าง 0 และฉันใช้หน้าต่าง 1 สำหรับเซสชันของเชลล์ หากฉันเขียนโค้ดในภาษาที่มี REPL ที่เหมาะสมฉันมักจะเรียกใช้ในหน้าต่าง 2 แน่นอนคุณไม่จำเป็นต้องscreenทำสิ่งนี้ คุณสามารถทำได้ด้วยหน้าต่างเทอร์มินัลที่แตกต่างกันหรือด้วยแท็บในเทอร์มินัลหลายแท็บ ฉันพบว่าscreenมีเสถียรภาพมากกว่าตัวเลือกอื่น ๆ : หากแอปเครื่องปลายทางของคุณล้มเหลวคุณสามารถเริ่มต้นเทอร์มินัลอื่นและเชื่อมต่อกับscreenเซสชันที่ยังทำงานอยู่ screenนอกจากนี้ยังรวดเร็วมากในการนำทางเมื่อคุณเรียนรู้มัน (เหมือนเป็นกลุ่มตัวเอง)

ฉันมักจะจบลงด้วยการใช้เชลล์เซสชันสำหรับกิจกรรมการควบคุมเวอร์ชันที่ซับซ้อนเช่นการรีบูทหรือรวม: สิ่งที่ง่ายกว่าสามารถทำได้จากบรรทัดคำสั่งของ vim (เช่น:!git commit % -m 'Added info aboutหน้าจอ.') หรือโดยใช้addon ผู้ลี้ภัย ฉันพบผู้ลี้ภัย:Gmove(เปลี่ยนชื่อบัฟเฟอร์ปัจจุบันทั้งในกลุ่มและในดัชนี git) และ:Gdiff(เรียก vimdiff บนบัฟเฟอร์ปัจจุบันด้วยจุดก่อนหน้าในประวัติศาสตร์) มีประโยชน์อย่างยิ่ง นอกจากนี้คุณยังสามารถทำสิ่งต่าง ๆ เช่นการสร้างข้อความคอมมิชชันในบัฟเฟอร์การคัดลอกการคัดลอกข้อความจากส่วนต่าง ๆ ของรหัสของคุณแล้วทำการคอมมิชชันด้วย:%!git commit -F /dev/stdin

ฉันจะใช้เชลล์เซสชันสำหรับการทดสอบการใช้งาน / การผสานรวมหากใช้กับสิ่งที่ฉันกำลังทำอยู่เช่นถ้าฉันกำลังเขียนโปรแกรมอรรถประโยชน์บรรทัดคำสั่ง

ฟังก์ชั่น QuickFIX เป็นกลุ่มเป็นประโยชน์สำหรับการแก้จุดบกพร่องแม้ว่าจะมีน่าจะเป็น addon ที่แตกต่างกันที่จำเป็นสำหรับแต่ละภาษาที่คุณอาจต้องการที่จะทำงานใน. พวกเขายังดูเหมือนจะใช้ความหลากหลายของเทคนิคการภาวนาทำแผนที่เพื่อปุ่มฟังก์ชันหรือคีย์ลำดับที่เริ่มต้นด้วย\หรือ,, หรือคำสั่งที่กำหนดเองหรือโดยการเรียกใช้โดยอัตโนมัติเมื่อบันทึกบัฟเฟอร์ :r !python -m doctest whatever.pyดังนั้นไกลฉันไม่ได้ใส่ใจจริงๆที่จะรู้ทันเหตุการณ์นี้และเพียงแค่อ่านหน่วยทดสอบหรือผ้าสำลีผลการเข้าไปในรอยขีดข่วนบัฟเฟอร์ที่ใช้เช่น ปรับเปลี่ยนรหัสสลับกลับไปที่บัฟเฟอร์เริ่มต้นuเพื่อเลิกทำจากนั้นกด:rและลูกศรขึ้น (ส่วนใหญ่) เพื่อให้ได้รับคำสั่งนั้นกลับมา แต่มันอาจจะคุ้มค่าที่คุณจะต้องหาแอดออนสำหรับสิ่งนี้ทั้งนี้ขึ้นอยู่กับภาษาที่คุณใช้

สำหรับภาษาที่คอมไพล์แล้วที่นิยมเช่น C, java เป็นต้น:makeจะทำการ build และการสนับสนุนสำหรับรายการ quickfix นั้นได้รับการยอมรับอย่างดี ดังนั้นคุณสามารถทำ:copenเพื่อแสดงบัฟเฟอร์การแก้ไขด่วน มันจะแสดงรายการข้อผิดพลาดหนึ่งรายการต่อบรรทัด การกดปุ่มEnterหนึ่งบรรทัดจะข้ามหน้าต่างอื่นของคุณไปยังจุดนั้นในไฟล์นั้น

หากคุณกำลังทำงานกับหลายโครงการในแต่ละครั้งคุณสามารถ:lmakeจัดเรียงรายการข้อผิดพลาดที่จะเก็บไว้ในรายการตำแหน่งที่ตั้ง : นี่เป็นรายการ quickfix แต่เชื่อมโยงกับหน้าต่างเดียวแทนที่จะเป็น singleton ภายในของคุณ เป็นกลุ่มตัวอย่าง :lopenจะเปิดรายการตำแหน่งสำหรับหน้าต่างปัจจุบัน

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