Mẹo sử dụng Vim làm Java IDE? [đóng cửa]


195

Tôi nghiện Vim, giờ đây tôi là cách chỉnh sửa tập tin văn bản.

Vì nó chủ yếu là một trình soạn thảo văn bản chứ không phải IDE, có ai có mẹo để tôi làm cho nó dễ dàng hơn khi phát triển ứng dụng Java không?

Một số câu hỏi tôi có:

  • Làm thế nào để tôi gọi một nhiệm vụ maven mà không rời khỏi vi?
  • Tôi có thể hoàn thành mã không?
  • Làm thế nào là cú pháp tô sáng?

Bất cứ điều gì khác (ngoài "Đừng làm điều đó!") Mà tôi nên biết về?


1
Tôi sử dụng netbeans rộng rãi tại nơi làm việc, nhưng đối với máy chủ cá nhân của tôi ở nhà ... sử dụng NetBeans không hoạt động tốt vì tôi phải phát triển trên một máy tính khác và sau đó triển khai. Chuyến đi khứ hồi chỉ là quá dài.
Allain Lalonde

1
@AdamC Chuyển đến từ Google ở ​​đây ... Là một dòng lệnh tự thừa nhận đến từ python, tôi nghĩ rằng rào cản gia nhập trong việc thiết lập với môi trường phát triển java được nâng lên rất nhiều khi cần các chương trình như vậy. Tôi đã phải cài đặt JVM ... tại sao người ta phải cài đặt NHIỀU HƠN chỉ để có một thế giới xin chào? Đó chỉ là khuynh hướng chung mà mọi người đến từ các ngôn ngữ kịch bản sẽ có khi lần đầu tiên học java.
DeaconDesperado

2
Khi tôi đang chỉnh sửa trong VIM. Để quay lại bàn điều khiển, bạn chỉ cần thực hiện ctrl + z, nó sẽ đặt vim dưới nền và đưa bạn trở lại bàn điều khiển. Sau đó, bạn có thể sử dụng lệnh fg để đưa vim trở lại tiền cảnh của bạn
Matthew Kirkley

Bạn không phải ctrl =
fuzzyTew

3
Bạn không cần phải ctrl + z / fg .. chỉ cần gõ :! Lệnh và 'lệnh' sẽ được chạy. Nếu bạn muốn nhanh chóng, hãy gõ :! Bash. sau đó nếu bạn thoát bạn quay trở lại vim thay vì để lại một công việc nền lơ lửng. Bạn có thể lấy shell trong cửa sổ vim với plugin.
fuzzyTew

Câu trả lời:


75

Một số lời khuyên:

  • Hãy chắc chắn rằng bạn sử dụng vim (vi cải thiện). Linux và một số phiên bản của UNIX symlink vi đến vim.
  • Bạn có thể hoàn thành mã với eclim
  • Hoặc bạn có thể có được chức năng vi trong Eclipse với viPlugin
  • Làm nổi bật cú pháp là tuyệt vời với vim
  • Vim hỗ trợ tốt cho việc viết các macro nhỏ như chạy các bản dựng ant / maven

Chúc vui vẻ :-)


7
lệnh để nhận trợ giúp về đánh dấu cú pháp java. : trợ giúp java.vim
Michael Ekoka

2
Một cách khác để có được chức năng Vim trong Eclipse là Vrapper . Nó có hầu hết các ràng buộc khóa Vim và không giống như viPlugin, nó miễn phí.
n1te

1
Làm thế nào về một trình gỡ lỗi hỗ trợ từng bước, từng bước, vv?
Donato

1
Linux ... symlink vi to vim Counterexample: Arch Linux
johnchen902

30

Tôi đã là người dùng Vim trong nhiều năm. Thỉnh thoảng tôi bắt đầu thấy mình khởi động Eclipse (sử dụng plugin vi, mà tôi phải nói là có nhiều vấn đề khác nhau). Lý do chính là các bản dựng Java mất khá nhiều thời gian ... và chúng ngày càng chậm hơn với việc bổ sung các khung xây dựng được thành phần hóa cao như maven. Vì vậy, việc xác thực các thay đổi của bạn có xu hướng mất nhiều thời gian, điều này đối với tôi dường như thường dẫn đến việc xử lý một loạt các vấn đề biên dịch mà tôi phải giải quyết sau đó và việc lọc qua các thông điệp cam kết mất một thời gian.

Khi tôi nhận được quá nhiều vấn đề biên dịch, tôi kích hoạt Eclipse. Nó cho phép tôi thực hiện công việc làm bánh của những thay đổi. Nó chậm, tàn bạo khi sử dụng và gần như không phải là trình soạn thảo tốt như Vim (Tôi đã sử dụng Vim trong gần một thập kỷ, vì vậy đó là bản chất thứ hai đối với tôi). Tôi thấy để chỉnh sửa chính xác, tôi cần sửa một lỗi cụ thể, cần cấu trúc lại một chút logic cụ thể hoặc một cái gì đó khác ... Tôi chỉ đơn giản là không thể hiệu quả trong việc chỉnh sửa trong Eclipse như tôi có thể trong Vim.

Cũng là một mẹo:

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

Điều này làm cho ^wfmột tên lớp là một tính năng rất hay để điều hướng một dự án lớn.

Vì vậy, dù sao đi nữa, khi tôi cần thêm rất nhiều mã mới, Vim dường như làm tôi chậm lại chỉ đơn giản là do thời gian theo đuổi các vấn đề biên dịch và các công cụ tương tự. Tuy nhiên, khi tôi cần tìm và chỉnh sửa các nguồn cụ thể, Eclipse cảm thấy giống như một cái búa tạ. Tôi vẫn đang chờ đợi IDE huyền diệu cho Vim. Có ba nỗ lực lớn mà tôi biết. Có một plugin kiểu viml IDE thuần túy có thêm nhiều tính năng nhưng dường như không thể sử dụng. Có eclim, mà tôi đã có rất nhiều rắc rối với. Và có một plugin cho Eclipse thực sự nhúng Vim. Cái cuối cùng có vẻ hứa hẹn nhất cho công việc Java EE thực sự nghiêm túc, nhưng dường như nó không hoạt động tốt hoặc thực sự tích hợp tất cả các tính năng của Eclipse với Vim nhúng.

Những thứ như thêm một lần nhập bị thiếu với tổ hợp phím, mã hilight với các vấn đề gõ, v.v., dường như là vô giá từ IDE của bạn khi làm việc trên một dự án Java lớn.


5
bỏ phiếu cho "^ wf" Tôi không biết rằng có một thứ như vậy trong vim :)
Krzysztof Krasnoyń

4
Bạn có thể giải thích thêm về ^ wf? Những gì nó làm?
user2427

1
Nó mở tệp / lớp java ( .javakhông cần mở rộng tên tệp ) dưới con trỏ trong cửa sổ chia mới nếu có thể tìm thấy tệp. Đó là lý do tại sao :set path=**hữu ích.
exic

Vì vậy, ** nghĩa đen là hai dấu sao?
taco

1
@lijat :help ^wf- giống như các trợ giúp vim khác
JESii

22
  • Làm thế nào để tôi gọi một nhiệm vụ maven mà không rời khỏi vi?

    Maven không khác gì bất kỳ lệnh shell nào khác:

    :!mvn

    Bạn có thể :set makeprg=mvnnếu bạn đã có một ánh xạ khóa yêu thích cho :make.

  • Tôi có thể hoàn thành mã không?

    Đúng, eclim là tuyệt vời, một cầu nối giữa hiệu quả chỉnh sửa của vim và nhận thức cụ thể về ngôn ngữ Java của Eclipse.

    <C-n><C-p>không phải là quá tuyệt vời, nhưng hữu ích đáng kinh ngạc.

  • Làm thế nào là cú pháp tô sáng?

    Quá đủ tốt cho một highligher dựa trên regex.

Bạn có thể muốn xem xét các công cụ cho các mục đích vim + java khác, như các mẫu mã ( snippetEmu Miếngdefault, nhưng có thể tùy chỉnh tỏa sáng), tìm kiếm cách sử dụng và đi đến khai báo (eclim, grep, ctags), tạo getters và setters ( java_getset , hoặc eclim), nhập khẩu tự động (eclim). Bạn cũng có thể cần một vỏ java để thử nghiệm nhanh ( BeanShell , aka bsh).


1
cảm ơn về mẹo BeanShell, tôi đã không biết về công cụ đó
Đi vào



8

Tôi biết điều này là khá nhiều năm sau nhưng đây là một số bổ sung thú vị. Tôi chưa thử một trong hai cái này nên YMMV.

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

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

EDIT: Ồ, một BTW, tôi đã thử bật và tắt, nhưng lý do tôi thích vim là sự nhẹ nhàng của nó. Thực hiện nhật thực ngay cả trên chế độ không đầu chỉ là quá sức đối với tôi.

EDIT2: Gần đây tôi đã sử dụng playframework và điều này có thể cũng sẽ hoạt động với các bản dựng maven:

  • Để biên dịch, bạn có thể định cấu hình make của VIM để chạy maven hoặc trong trường hợp của tôi, chạy tập lệnh xây dựng, phát nó thành tập tin.

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

"Play_compile" chỉ là một tập lệnh biên dịch. Nó sử dụng SBT vì vậy Maven sẽ hoạt động tốt ở đây. Ngay cả javac trực tiếp sẽ làm việc. Bằng cách này, bạn có thể sử dụng bộ đệm quickfix của VIM (: cnext ,: clist: cprev, v.v.).

  • Để nhảy xung quanh các lớp, tôi sử dụng ctrl-p . Nó thật đẹp. Sử dụng nó. Nhanh hơn nhật thực trong việc nhảy xung quanh các tập tin.

  • Để nhảy xung quanh các phương thức, tôi sử dụng thẻ tìm kiếm với các thẻ c quá mức. Nhảy vào khai báo phương thức bằng cách sử dụng ctrl-]. Quay trở lại bằng cách sử dụng Ctrl-o. Không hoạt động tốt như nhật thực, nhưng nó hoạt động đủ tốt.

  • Tôi sử dụng supertab để hoàn thành mã. Javacomplete khá chậm, vì vậy tôi gắn bó với omni-Complete. Một lần nữa, không chính xác như nhật thực, nhưng nó nhanh và hoạt động đủ tốt với tôi.


5

Sử dụng vim. ^ - ^ (gVim, chính xác là vậy)

Bạn sẽ có tất cả (với một số bổ sung).

Btw, snippetsEmu là một công cụ hay để mã hóa với các đoạn hữu ích (như trong TextMate). Bạn có thể sử dụng (hoặc sửa đổi) một gói được tạo sẵn hoặc làm cho riêng bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.