เคล็ดลับในการใช้ Vim เป็น Java IDE? [ปิด]


195

ฉันติด Vim มันเป็นวิธีการแก้ไขไฟล์ข้อความของฉันอย่างแท้จริง

การเป็นตัวแก้ไขข้อความไม่ใช่ IDE เป็นหลักมีใครมีกลอุบายให้ฉันทำให้การพัฒนาแอพ Java ง่ายขึ้นไหม?

ฉันมีคำถามบางอย่าง:

  • ฉันจะเรียกใช้งาน maven ได้อย่างไรโดยไม่ต้องออกจาก vi
  • ฉันจะได้รหัสที่สมบูรณ์ได้ไหม
  • การเน้นไวยากรณ์เป็นอย่างไร

มีอะไรอีกนอกจากที่ไม่ควรทำ! ที่ฉันควรรู้?


1
ฉันใช้ netbeans อย่างกว้างขวางในที่ทำงาน แต่สำหรับเซิร์ฟเวอร์ส่วนตัวที่บ้าน ... การใช้ NetBeans ทำงานได้ไม่ดีเนื่องจากฉันต้องพัฒนาบนคอมพิวเตอร์เครื่องอื่นแล้วจึงปรับใช้ การเดินทางไป - กลับยาวเกินไป
Allain Lalonde

1
@AdamC Inbound จาก Google ที่นี่ ... ในฐานะที่เป็นบรรทัดคำสั่งที่ยอมรับตัวเองมาจากหลามฉันคิดว่าอุปสรรคในการเข้าสู่การตั้งค่าด้วยสภาพแวดล้อมการพัฒนาจาวาถูกยกขึ้นอย่างมากโดยต้องการโปรแกรมดังกล่าว ฉันต้องติดตั้ง JVM แล้ว ... ทำไมเราต้องทำการติดตั้งให้มากขึ้นเพื่อให้โลกสวัสดีเกิดขึ้น มันเป็นเพียงการจัดการทั่วไปที่คนที่มาจากภาษาสคริปต์จะมีเมื่อเรียนรู้จาวาครั้งแรก
DeaconDesperado

2
เมื่อฉันแก้ไขใน VIM หากต้องการกลับไปที่คอนโซลคุณสามารถทำ ctrl + z ซึ่งจะให้เสียงเรียกเข้าเป็นพื้นหลังและนำคุณกลับไปที่คอนโซล จากนั้นคุณสามารถใช้คำสั่ง fg เพื่อนำกลุ่มกลับมาที่พื้นหน้าของคุณ
Matthew Kirkley

คุณไม่ต้อง ctrl =
fuzzyTew

3
คุณไม่ต้อง ctrl + z / fg .. เพียงแค่พิมพ์:! command และ 'command' จะถูกเรียกใช้ หากคุณต้องการเปลือกด่วนพิมพ์:! bash ถ้าคุณออกจากคุณกลับไปเป็นกลุ่มแทนที่จะปล่อยให้งานพื้นหลังห้อยต่องแต่ง คุณสามารถรับเชลล์ในหน้าต่างเป็นกลุ่มพร้อมปลั๊กอิน
fuzzyTew

คำตอบ:


75

เคล็ดลับบางอย่าง:

  • ตรวจสอบให้แน่ใจว่าคุณใช้เสียงเรียกเข้า (ปรับปรุง vi) Linux และ UNIX symlink vi ถึง vim บางเวอร์ชัน
  • คุณสามารถรับโค้ดที่สมบูรณ์ด้วยeclim
  • หรือคุณสามารถรับฟังก์ชันการทำงาน vi ภายใน Eclipse ด้วยviPlugin
  • การเน้นไวยากรณ์ดีมากกับกลุ่ม
  • กลุ่มมีการสนับสนุนที่ดีสำหรับการเขียนแมโครเล็ก ๆ เช่นรัน ant / maven builds

มีความสุข :-)


7
คำสั่งเพื่อรับความช่วยเหลือเกี่ยวกับการเน้นไวยากรณ์ของจาวา : help java.vim
Michael Ekoka

2
อีกวิธีหนึ่งที่จะได้รับการทำงานเป็นกลุ่มที่อยู่ใน Eclipse เป็นVrapper มันมีการผูกคีย์ Vim เป็นส่วนใหญ่และไม่เหมือน viPlugin ฟรี
n1te

1
ดีบักเกอร์ที่รองรับการก้าวข้ามการก้าวผ่าน ฯลฯ เป็นอย่างไร?
Donato

1
Linux ... symlink vi to vimตัวอย่าง: Arch Linux
johnchen902

30

ฉันเป็นสมาชิกกลุ่มมาหลายปีแล้ว ฉันเริ่มพบว่าตัวเองเริ่มต้น Eclipse เป็นครั้งคราว (โดยใช้ปลั๊กอิน vi ซึ่งต้องบอกว่ามีปัญหาหลายอย่าง) เหตุผลหลักคือ Java builds ใช้เวลาสักครู่ ... และพวกมันก็เริ่มช้าลงและช้าลงด้วยการเพิ่มเฟรมเวิร์ก builds ที่มีองค์ประกอบสูงเช่น maven ดังนั้นการตรวจสอบความถูกต้องของการเปลี่ยนแปลงของคุณจึงใช้เวลาสักครู่ซึ่งสำหรับฉันมักจะนำไปสู่การรวบรวมปัญหาการคอมไพล์จำนวนมากที่ฉันต้องแก้ไขในภายหลังและการกรองผ่านข้อความยืนยันใช้เวลาสักครู่

เมื่อฉันได้รับปัญหาการรวบรวมจำนวนมากเกินไปฉันจะทำให้เกิด Eclipse ขึ้นมา มันช่วยให้ฉันทำเค้กของการเปลี่ยนแปลง มันช้าโหดร้ายที่จะใช้งานและไม่ได้เป็นบรรณาธิการที่ยอดเยี่ยมเท่าที่ Vim คือ (ฉันใช้ Vim มาเกือบทศวรรษแล้วดังนั้นมันจึงเป็นเรื่องที่สองสำหรับฉัน) ฉันค้นหาการแก้ไขที่แม่นยำ - ต้องแก้ไขข้อผิดพลาดที่เฉพาะเจาะจงจำเป็นต้อง refactor บิตเฉพาะบางอย่างของตรรกะหรืออย่างอื่น ... ฉันไม่สามารถมีประสิทธิภาพในการแก้ไขใน Eclipse อย่างที่ฉันสามารถทำได้ใน Vim

เคล็ดลับ:

:set path=**
:chdir your/project/root

สิ่งนี้ทำให้^wfclassname เป็นคุณสมบัติที่ดีมากสำหรับการนำทางโครงการขนาดใหญ่

ดังนั้นสิ่งที่ผอมก็คือเมื่อฉันต้องการเพิ่มรหัสใหม่จำนวนมากกลุ่มที่ดูเหมือนว่าจะทำให้ฉันช้าลงเพียงเพราะเวลาที่ใช้ไล่ปัญหาการรวบรวมและสิ่งที่คล้ายกัน เมื่อฉันต้องการค้นหาและแก้ไขแหล่งที่มาที่เฉพาะเจาะจง Eclipse รู้สึกเหมือนค้อนเลื่อน ฉันยังคงรอ IDE วิเศษสำหรับ Vim อยู่ มีสามความพยายามที่สำคัญที่ฉันรู้ มีปลั๊กอิน viml IDE แบบบริสุทธิ์ซึ่งเพิ่มคุณสมบัติมากมาย แต่ดูเหมือนว่าจะใช้ไม่ได้ มีอาการเพ้อเจ้อซึ่งฉันมีปัญหามากมาย และมีปลั๊กอินสำหรับ Eclipse ที่ฝัง Vim คนสุดท้ายดูเหมือนจะมีแนวโน้มมากที่สุดสำหรับงาน Java EE ที่จริงจัง แต่ดูเหมือนว่าจะทำงานได้ไม่ดีนักหรือรวมคุณสมบัติทั้งหมดของ Eclipse เข้ากับ Vim ในตัว

สิ่งต่าง ๆ เช่นการเพิ่มการนำเข้าที่ขาดหายไปพร้อมกับการกดแป้นพิมพ์รหัส hilight ที่มีปัญหาการพิมพ์ ฯลฯ ดูเหมือนว่าล้ำค่าจาก IDE ของคุณเมื่อทำงานกับโครงการ Java ขนาดใหญ่


5
ออกเสียงลงคะแนนขึ้นสำหรับ "^ WF" ผมไม่ทราบว่ามีสิ่งดังกล่าวในกลุ่ม :)
ซีส Krason

4
คุณช่วยอธิบายเพิ่มเติมเกี่ยวกับ ^ wf ได้ไหม? มันทำอะไร
user2427

1
มันเปิดไฟล์จาวา / คลาส ( .javaไม่จำเป็นต้องมีนามสกุลไฟล์) ภายใต้เคอร์เซอร์ในหน้าต่างแยกใหม่ถ้ามันสามารถค้นหาไฟล์ นั่นเป็นเหตุผลที่:set path=**มีประโยชน์
exic

** เครื่องหมายดอกจันสองตัวคืออะไร?
taco

1
@lijat :help ^wf- เหมือนกับความช่วยเหลือเป็นกลุ่มอื่น ๆ
JESii

22
  • ฉันจะเรียกใช้งาน maven ได้อย่างไรโดยไม่ต้องออกจาก vi

    Maven ไม่แตกต่างจากคำสั่งเชลล์อื่น ๆ :

    :!mvn

    คุณสามารถถ้าคุณมีการทำแผนที่ที่สำคัญที่ชื่นชอบสำหรับ:set makeprg=mvn:make

  • ฉันจะได้รหัสที่สมบูรณ์ได้ไหม

    ใช่eclimนั้นยอดเยี่ยมซึ่งเป็นสะพานเชื่อมระหว่างประสิทธิภาพในการแก้ไขของ vim และการรับรู้เฉพาะภาษาจาวาของ Eclipse

    <C-n>และ<C-p>ไม่ค่อยดี แต่มีประโยชน์อย่างน่าอัศจรรย์

  • การเน้นไวยากรณ์เป็นอย่างไร

    ดีเกินพอสำหรับ highligher-based regex

คุณอาจต้องการที่จะต้องพิจารณาเครื่องมือสำหรับวัตถุประสงค์ในการเป็นกลุ่ม + Java อื่น ๆ เช่นรหัสแม่แบบ ( snippetEmu -default ตัวอย่างดูด แต่ customizability ส่อง), การค้นหาสำหรับประเพณีและจะประกาศ (eclim, grep, ctags) สร้าง getters และ setters ( java_getset , หรือ eclim) การนำเข้าอัตโนมัติ (eclim) คุณอาจต้องใช้จาวาเชลล์สำหรับการทดสอบอย่างรวดเร็ว ( BeanShell , aka bsh)


1
ขอบคุณสำหรับเคล็ดลับ BeanShell ฉันไม่ทราบเกี่ยวกับเครื่องมือนั้น
GoingTharn


8

ผมพบว่าสรุปต่อไปนี้มีประโยชน์มาก: http://www.techrepublic.com/article/configure-vi-for-java-application-development/5054618 คำอธิบายของ: make สำหรับ ant ไม่ใช่ maven แต่เป็นบทสรุปที่ดี


8

ฉันรู้ว่านี่เป็นอีกไม่กี่ปีต่อมา แต่นี่เป็นปลั๊กอินที่น่าสนใจ ฉันยังไม่ได้ลอง YMMV เหล่านี้เลย

https://github.com/mikelue/vim-maven-plugin

https://github.com/vim-scripts/maven-ide

แก้ไข: โอ้ BTW ฉันได้ลอง eclim ปิดและเปิด แต่เหตุผลที่ฉันชอบเป็นกลุ่มคือความสว่าง การดำเนินการคราสแม้ในโหมดหัวขาดเป็นการยกจิตให้ฉันมากเกินไป

แก้ไข 2: ฉันได้ใช้ playframework เมื่อเร็ว ๆ นี้และอาจจะทำงานกับ maven builds เกินไป:

  • สำหรับการคอมไพล์คุณสามารถกำหนดค่า make ของ VIM ให้รัน maven หรือในกรณีของฉันรันสคริปต์ build โดยทีไปที่ไฟล์

    autocmd Filetype java setl makeprg=play_compile
    autocmd Filetype java setl efm=%A\ %#[error]\ %f:%l:\ %m,%-Z\ %#[error]\ %p^,%-C%.%#

"play_compile" เป็นเพียงสคริปต์รวบรวม มันใช้ SBT ดังนั้น Maven ควรทำงานได้ดีที่นี่ แม้แต่ javac โดยตรงก็ยังใช้งานได้ ด้วยวิธีนี้คุณสามารถใช้บัฟเฟอร์ด่วนของ VIM (: cnext,: clist: cprev และอื่น ๆ )

  • สำหรับกระโดดไปรอบ ๆ ชั้นเรียนผมใช้Ctrl-P มันสวย. ใช้มัน. เร็วกว่าคราสในการกระโดดไปรอบ ๆ ไฟล์

  • สำหรับวิธีการกระโดดฉันใช้ tagsearch กับ c-tags ที่อุดมสมบูรณ์ ข้ามไปที่การประกาศเมธอดโดยใช้ ctrl-] กลับไปโดยใช้ Ctrl-o ใช้งานไม่ได้กับคราส แต่ทำงานได้ดีพอ

  • ฉันใช้supertabเพื่อทำให้โค้ดสมบูรณ์ Javacomplete ค่อนข้างช้าดังนั้นฉันจึงติด omni-complete อีกครั้งไม่ถูกต้องเท่าคราส แต่มันเร็วและทำงานได้ดีพอสำหรับฉัน


5

ใช้เป็นกลุ่ม ^ - ^ (gVim ต้องแม่นยำ)

คุณมีทุกอย่าง (พร้อมปลั๊กอิน)

Btw, snippetsEmuเป็นเครื่องมือที่ดีสำหรับการเขียนโค้ดที่มีประโยชน์ (เช่นใน TextMate) คุณสามารถใช้ (หรือแก้ไข) แพ็คเกจสำเร็จรูปหรือทำเองได้

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