it-swarm-vi.com

Tôi sử dụng IDE (Eclipse) để phát triển phần mềm. Tại sao tôi nên chuyển sang vim hoặc emacs?

Công việc hàng ngày của tôi là Java/nhà phát triển web. Tôi đã sử dụng Eclipse trong khoảng 5 năm. Tôi nghĩ nó tuyệt vời và tôi cũng sử dụng Webstorm cho javascript và html/jsp.

Đôi khi tôi cần phải ssh vào máy chủ và làm rối tung các tập tin cấu hình; Đối với điều này, tôi sử dụng vi và nó làm tôi đau. Tôi phải lập một trang web liệt kê cú pháp/lệnh: nhấn esc, sau đó dấu hoa thị, xoay quanh ba lần và văn bản sẽ được nhập hai dòng phía trên con trỏ của bạn . Thật là không trực quan đối với tôi, và tôi tưởng tượng bất cứ ai lớn lên vào cuối những năm tám mươi.

Dưới đây là những lý do chính mà tôi nghĩ rằng Eclipse là tuyệt vời (và tôi giả sử các IDE khác) và không chuyển sang emacs và/hoặc vim.

  • Lỗi đánh dấu mà không cần biên dịch lại dự án.
  • Mã hỗ trợ.
  • Tái cấu trúc.
  • Mở cuộc gọi hiearchy/Khai báo.
  • Tích hợp đầy đủ với kiểm soát nguồn.
  • Trình gỡ lỗi được bao gồm.
  • sẵn có các plugin của bên thứ 3 - ví dụ: findbugs/checkstyle.

Một trong những đối số tôi nghe được là với emacs/vim, bạn có thể tạo các trình cắm riêng của mình - cũng được, nhưng bạn cũng có thể làm điều đó trong Eclipse. Nhưng bạn không cần vì mọi thứ đã ở đó! Giống như nói mua chiếc xe được chế tạo một nửa này, bạn có thể tự mình xây dựng phần còn lại.

Tại sao mọi người sử dụng emacs/vim? Những người sử dụng nó thực sự làm việc trên các dự án hướng đối tượng phức tạp trong các tổ chức lớn?

Lý do để chuyển sang vim/emacs. Năng suất của tôi sẽ tăng như thế nào nếu tôi chuyển đổi?

31
NimChimpsky

Sử dụng bất cứ công cụ nào phù hợp với nhu cầu của bạn. Biết VIM hoặc Emacs là một điều tốt nếu bạn phải đăng nhập vào máy chủ từ xa và chỉnh sửa tệp cấu hình hoặc một cái gì đó tương tự. Tôi biết VIM khá hợp lý , nhưng tôi sẽ không sử dụng nó để phát triển trong Java. Đó là những gì Eclipse, Netbeans, v.v. được tạo ra.

36
user281377

Emacs và Vi vẫn có một chỗ.

  • Chúng có mặt khắp nơi trong các môi trường giống như Unix và Unix và có thể được cài đặt trên hầu hết các nền tảng phổ biến khác.

  • Chúng phổ biến và ổn định, vì vậy việc học chúng một lần sẽ được đền đáp trong thời gian dài.

  • Chúng chạy trên một thiết bị đầu cuối văn bản, vì vậy bạn có thể sử dụng chúng trong các phiên telnet và ssh.

  • Họ cung cấp các chế độ chỉnh sửa và tô sáng cú pháp cho nhiều ngôn ngữ, bao gồm các ngôn ngữ rất mới và rất hiếm. (Đây là một trong những lợi thế yêu thích của tôi.)

Tuy nhiên, chìa khóa để hiểu các chương trình này là để biết những vấn đề ban đầu chúng có nghĩa là gì để giải quyết. Đối với Vi, việc này là chỉnh sửa các tệp văn bản qua các kết nối đầu cuối chậm tới 300 Baud. Trong môi trường đó, bạn không muốn hiển thị các menu hoặc thay đổi hoàn toàn nội dung màn hình nếu bạn có thể tránh nó.

Emacs được dự định sẽ được sử dụng trong một môi trường nhanh hơn. Sức mạnh của nó là nó có thể được tải một lần và không bao giờ thoát ra. Người dùng có thể hoàn thành bất kỳ nhiệm vụ nào khác mà họ cần từ Emacs mà không cần rời đi, và thường theo cách thân thiện hơn so với việc họ phải thực hiện nó từ dòng lệnh. Mọi người không có môi trường máy tính để bàn đồ họa với cửa sổ Emacs mở. Emacs cho phép người dùng hoàn thành hầu hết mọi tác vụ bình thường (và nhiều tác vụ lạ) chỉ bằng một vài nét chính. Bất cứ điều gì không được xây dựng trong có thể được kịch bản.

Rõ ràng nhu cầu của mọi người đã thay đổi rất nhiều kể từ khi các chương trình này được giới thiệu, nhưng chúng vẫn có một số điểm mạnh thực sự. Tôi đã học được những điều cơ bản của cả hai và sử dụng chúng hàng tuần. Tuy nhiên, tôi nghĩ rằng điểm mạnh của họ thường được cường điệu hóa. Họ đã đạt được trạng thái huyền thoại đến mức mọi người không thừa nhận điểm yếu của mình và thay vào đó có xu hướng nghĩ rằng họ đang làm gì đó sai nếu Emacs/Vi không làm cho họ hiệu quả hơn Eclipse hoặc Visual Studio.

Bây giờ đến điểm.

Java là một ngôn ngữ phổ biến với sự hỗ trợ tuyệt vời trong Eclipse và tỷ lệ cược là bạn đang phát triển mã trên một hệ điều hành hiện đại cho phép bạn nhanh chóng hoàn thành các tác vụ và kịch bản thông thường khác mà không cần thực hiện thông qua IDE của mình. Tôi không nghĩ nó sẽ có ý nghĩa đối với bạn để chuyển đổi.

39
PeterAllenWebb

Tôi đã sử dụng emacs trong hơn 5 năm. Tôi không còn có thể nói cho bạn biết các tổ hợp phím tôi đang sử dụng, ngón tay của tôi chỉ cần nhớ chúng và phải nhìn vào bàn phím chỉ để xem tay tôi đang gõ gì.

Vài năm trước tôi đã bắt đầu sử dụng Eclipse và không có cơ hội nào tôi sẽ quay trở lại với emacs một cách tự do. Xin lỗi bộ nhớ cơ, mặc dù bạn đang thiếu bạn C-x r SPC 1, Eclipse làm cho tôi năng suất hơn rất nhiều và đó mới là điều đáng quan tâm.

Không, tôi không nghĩ bạn nên chuyển đổi, nhưng bạn nên dành một vài giờ để tìm hiểu những điều cơ bản về vim để bạn không phải tìm kiếm nó nữa.

16
Martin Wickman

Tại sao tôi nên chuyển sang vim hoặc emacs?

Rất có thể, bạn không nên chuyển đổi . Vim là một trình soạn thảo văn bản mạnh mẽ, tuyệt vời, nhưng nó không phải thay thế cho một IDE và không nên ! Eclipse rất giỏi tập hợp con của nó về những thứ dành riêng cho IDE và vim rất giỏi trong tập hợp con của những thứ cụ thể chỉnh sửa văn bản. Mỗi người có một trọng tâm riêng, khác nhau.

Tôi biết có các plugin mở rộng chức năng của vim để nó có thể thực hiện nhiều điều tương tự với IDE cụ thể là IDE có thể. Nhưng nó vẫn không phải là sức mạnh chính của vim và IDE hầu như sẽ luôn có thể làm điều đó tốt hơn. Bởi vì đó là những gì họ đang tập trung vào.

Những gì tôi làm trong công việc hàng ngày là sử dụng cả Visual Studio và vim để chỉnh sửa C #. Nó hoạt động rất tốt đối với tôi, và tôi sẽ không bao giờ cắt bỏ một trong số chúng để chỉ dựa vào cái kia.

Theo như emacs, tôi không phải là chuyên gia, nhưng tôi không nghĩ nó có thể cạnh tranh với các tính năng IDE của Eclipse khi nói đến Java (vui lòng sửa lại) nếu tôi sai). Nếu bạn đang phát triển trong LISP, thì nó chắc chắn có thể được coi là một IDE xuất sắc, nhưng tôi không nghĩ nó có hỗ trợ tương tự cho Java.

Vì vậy, nếu bạn muốn một trình soạn thảo văn bản mạnh hơn để sử dụng cùng với Eclipse, thì tôi chắc chắn sẽ khuyên bạn nên tìm hiểu vim hoặc emacs. Nhưng dưới dạng bổ sung, không phải thay thế . Nó thực sự có thể mang lại kết quả lâu dài, mặc dù cả hai đều không có đường cong học tập đặc biệt dễ dàng :)

Đây là một Nice longish read về những điểm mạnh của vim. Và đây là một danh sách một số thủ thuật hay mà bạn có thể làm.

7
Nick Knowlson

Về cơ bản, hãy đọc this (PDF) để biết tại sao Emacs mạnh mẽ. Khi bạn biết LISP, việc viết các tiện ích mở rộng cho nó rất dễ dàng (Tôi có một số quy trình kiểm soát nguồn và triển khai được viết theo kịch bản thông qua một tiện ích bổ sung mà tôi đã viết cho chính mình có tên là employer-mode). Theo như những gì bạn liệt kê ở trên;

  • Lỗi đánh dấu mà không cần biên dịch lại dự án. Không có ý nghĩa đối với tất cả các ngôn ngữ. Bạn có thể dễ dàng tích hợp REPLs của nhiều ngôn ngữ vào đó. Ngay bây giờ, tôi có Ruby, python, haskell, common LISP, schemeerlang tất cả được nối vào emacs. Ngẫu nhiên, addon JavaScript js2-mode có đầy đủ "biên dịch" để nó làm nổi bật những thứ như lỗi cú pháp cho bạn, vì vậy chắc chắn là có thể, nhưng không phải là chuẩn
  • Mã hỗ trợ. có một addon cho cái gọi là autocomplete.el, Tôi tin rằng, hãy kiểm tra Emacs wiki
  • Tái cấu trúc. Tôi cho rằng bạn có nghĩa là "tái cấu trúc tự động", điều này không có nghĩa trong tất cả các ngôn ngữ. Có thể tồn tại đối với một số người, nhưng tôi không biết.
  • Mở cuộc gọi hiearchy/Khai báo.
  • Tích hợp đầy đủ với kiểm soát nguồn. Nó có git-mode được xây dựng kể từ Emacs 22.3, không chắc chắn về kiểm soát nguồn khác
  • Trình gỡ lỗi được bao gồm. Cơ sở ngôn ngữ theo ngôn ngữ ở đây. Nói chung, nếu nó có tích hợp REPL, thì nó cũng có trình gỡ lỗi Emacs, nhưng nó không phổ biến
  • sẵn có các plugin của bên thứ 3 - ví dụ: findbugs/checkstyle. không biết về những cái cụ thể đó, nhưng có rất nhiều addons cho nó, từ lý do tại sao không phải là cái này trong gói cơ sở-hữu ích, cho đến hoàn toàn phù phiếm

Điều đó nói rằng, nếu bạn không thích LISP và bạn không có ý định tìm hiểu nó, tôi không thể thành thật giới thiệu Emacs. Chiến thắng mà bạn có được từ nó là học về chế tạo công cụ và áp dụng các nguyên tắc đó để tăng năng suất của chính bạn, không phải lấy một loạt các mod ngoài lề và xâu chuỗi chúng lại với nhau.

6
Inaimathi

Tôi thấy hai lựa chọn ở đây:

  • Sử dụng Nano thay thế - Điều này giống hệt như Notepad trong Windows cho Linux. Không yêu cầu kết hợp phím nóng, bạn chỉ cần gõ nano somefile.conf và bạn có một trình soạn thảo Nice. Bạn thậm chí có thể thêm tô sáng cú pháp
  • Giữ chương trình cục bộ và đồng bộ hóa qua SCP với máy chủ - Tôi làm điều này khi tôi cần làm việc trên một trang web nhỏ nhưng không có đủ tài nguyên để chạy Apache cục bộ. Tôi chỉ cần khởi động WinSCP, hiển thị các thư mục tôi muốn và sử dụng "Luôn cập nhật các tệp từ xa". Thay đổi thường được phản ánh trong vài giây
  • Sử dụng một plugin trong trình soạn thảo/IDE của bạn để làm việc "trực tiếp" với tệp từ xa - Trước khi tôi quan tâm đến kiểm soát sửa đổi, tôi chỉ cần khởi động Notepad ++ (trình soạn thảo ưa thích của tôi) và sử dụng NppFTP để làm việc trên các tệp. NppFTP nhanh hơn tùy chọn WinSCP vì Npp thông báo ngay lập tức khi tệp được lưu, được tải lên ngay lập tức. Tuy nhiên như tôi đã nói bạn mất kiểm soát sửa đổi. Tôi chắc chắn có một plugin cho Eclipse mà bạn có thể sử dụng

Hi vọng điêu nay co ich

3
TheLQ

Cá nhân tôi thích Vim vì nó rất tốt trong việc chỉnh sửa văn bản, tức là rất tiện lợi (các phím bấm không làm căng tay quá nhiều và tôi không cần sử dụng chuột nhiều) và sử dụng hiệu quả khi bạn sử dụng được nó (tất nhiên sẽ mất thời gian và kiên nhẫn, vì nó không phải là trình soạn thảo trực quan nhất cho người mới bắt đầu).

Tuy nhiên, tôi thích Eclipse hơn cho quy mô lớn Java do có nhiều tính năng có sẵn. Tất nhiên, có một số bổ trợ có thể tạo ra Eclipse một chút dễ chịu hơn.

2
user7908

Tôi hiện đang cố gắng chuyển từ NetBeans sang vim. Học vim cần có thời gian và thực hành, nhưng tôi thấy lợi thế của nó hơn, hãy gọi chúng là "trình soạn thảo GUI" cho một số trường hợp nhất định.

Nhưng, không giống như bạn, tôi mã hóa chủ yếu là Ruby và tôi không cần tất cả phép thuật tạo mã, hoàn thành tự động, tái cấu trúc mã của tôi mà NetBeans và Eclipse cung cấp. Nếu tôi đang mã hóa Java hoặc C # thì tôi chắc chắn sẽ không cố gắng chuyển đổi gì cả.

1
Mladen Jablanović

Là một người sử dụng emacs lâu năm, tôi thấy emacs khá thoải mái như một môi trường chỉnh sửa và phát triển (và ở một mức độ nào đó, nó cũng tích hợp với quy trình xây dựng, kiểm soát phiên bản, tìm kiếm nhanh theo ngữ cảnh và tương tự, vì vậy tôi đoán rằng đủ điều kiện nó như là một "IDE").

Tôi cũng thực sự thoải mái với việc sử dụng các trình soạn thảo vi và vi (tôi bắt đầu sử dụng ed, vì tôi nghĩ emacs quá phức tạp; nhìn lại điều đó là ngược, nhưng nó đã cho tôi một nền tảng vững chắc cho việc học vi trong tương lai). Tôi sử dụng vi chủ yếu cho "chỉnh sửa nhanh nhỏ", chủ yếu trên các máy từ xa không cài đặt emacs.

Đối với trường hợp "Tôi làm đôi khi cần phải ssh vào máy chủ và làm rối tung tập tin cấu hình; đối với kịch bản này tôi sử dụng vi", tôi khuyên bạn nên sử dụng một nhóm lệnh nhỏ và một số suy nghĩ chung về vi:

  • Vi không phải là phương thức, nó có các lệnh "a" (chắp thêm), "A" (nối vào cuối dòng), "i" (chèn) và "I" (chèn ở đầu dòng), lấy văn bản để chèn như một đối số và báo hiệu "kết thúc lệnh" với Esc
  • h, j, k và l là các phím di chuyển. Nó CÓ THỂ hoạt động bằng cách sử dụng các phím mũi tên, nhưng như trình tự "Tôi là phím mũi tên" điển hình của VT bắt đầu bằng Esc, điều này sẽ phá vỡ lệnh chèn văn bản mà bạn không nghĩ tới
  • : linenum chuyển bạn đến dòng linenum , dòng 1 là hàng đầu- hầu hết dòng và dòng $ là phần dưới cùng
  • . là lệnh "lặp lại lệnh cuối" (xem điểm đầu tiên)

Không nên mất hơn một hoặc hai giờ để chơi với vi tại "Tôi có thể tự tin chỉnh sửa tệp văn bản, nhưng tôi có thể không hiệu quả với nó" và điều đó tốt như bạn có thể cần . Không, rằng bất kỳ trình soạn thảo nào không ảnh hưởng đến việc tự động chuyển đổi giữa các tab và không gian sẽ là "đủ tốt" cho mục đích của bạn. Nếu Eclipse được cài đặt trên tất cả các máy chủ từ xa của bạn, tôi thực sự không thấy việc sử dụng đó là một vấn đề lớn.

1
Vatine

Nếu bạn hài lòng với Eclipse, thì đừng chuyển đổi.

Nếu bạn có thể sử dụng Eclipse ở mọi nơi bạn cần, đừng chuyển đổi.

Nếu dự án/công ty của bạn sử dụng Eclipse khá nhiều, đừng chuyển đổi.

Nếu bạn hiếm khi cần thứ gì khác, hãy in ra cheat-sheet cho một trong các trình soạn thảo và kéo nó ra khỏi ngăn kéo khi bạn cần, sau đó quay lại sử dụng Eclipse.

Xem câu hỏi (tương tự) tại SO: https://stackoverflow.com/questions/1346820/what-are-the-efficiencies-afforded-by-emacs-or-vim-vs-Eclipse

Theo như trả lời, "Những người sử dụng nó có thực sự làm việc trên các dự án hướng đối tượng phức tạp trong các tổ chức lớn không?" - Giữ chặt mũ của bạn, nhưng câu trả lời là "có". Tôi đã làm việc trên các dự án với hàng chục triệu dòng mã được sử dụng trong con đường quan trọng là thiết kế CPU chạy máy tính mà bạn đang sử dụng để đặt câu hỏi này. Và mọi người đã dùng thử Eclipse nhưng thấy nó quá chậm và lộn xộn (mặc dù, phải thừa nhận rằng chúng tôi không sử dụng Java).

1
Trey Jackson

Tôi rất là một anh chàng Emacs. Tôi sử dụng nó cho tất cả các chương trình của mình và tích cực khuyến khích đồng nghiệp của tôi cũng sử dụng nó (và họ chủ động bỏ qua tôi). Tôi thấy nó hiệu quả hơn nhiều so với bất kỳ IDE nào và tôi sẽ không bao giờ thay đổi.

Trừ khi tôi đang viết Java hoặc C # (và tôi tưởng tượng có các ngôn ngữ khác trong danh mục này). Họ có các thư viện lớn như vậy thứ với tên dài, rằng mức tăng - I nhận được từ việc sử dụng Emacs hoàn toàn bị mất khi cố gắng ghi nhớ mọi thứ.

Tôi chắc chắn khuyến khích bạn thử vim và/hoặc Emacs. Nhưng có khả năng bạn sẽ kết thúc trở lại trong Eclipse cho Java.

1
MattBelanger

Cả emacs và vim đều là các trình soạn thảo rất cấu hình và mạnh mẽ, và cả hai đều cung cấp chiến thắng năng suất lớn một khi các khái niệm cơ bản được nắm bắt.

Vi chiến thắng với những gì cơ bản là hoạt động dựa trên thiết lập. Ví dụ: thay đổi tất cả các trường hợp "foo" thành "bar" trong định nghĩa lớp là một lớp lót.

Emacs cũng mạnh mẽ không kém, nhưng bạn phải học Emacs LISP để sử dụng hết tiềm năng của nó.

Trong cả hai trường hợp, nó chỉ đáng để chuyển đổi nếu bạn định sử dụng emacs hoặc vi cho mọi thứ.

1
Larry Coleman

Công cụ tốt nhất (trong ngắn hạn) là công cụ bạn rất thành thạo.

Mọi người sử dụng công nghệ trên 30 năm tuổi vì họ rất thành thạo với nó. Họ xây dựng quy trình làm việc và thói quen của họ xung quanh các công cụ này. Nếu bạn quen thuộc hơn với hiện đại IDE như Eclipse, thì không có nhiều lý do để chuyển đổi. Học cách sử dụng Eclipse hiệu quả hơn là đầu tư tốt hơn cho thời gian của bạn (ví dụ: sử dụng - Mylyn ).

1
dbkk

Cá nhân cả hai chương trình đưa tôi lên tường. Vấn đề với Eclipse là nó chậm như snot khi bạn đang làm việc trong một dự án lớn và đó là khi nó không thực hiện 'Lập chỉ mục DGLP' hoặc bất cứ điều gì. muốn làm mới kho lưu trữ của bạn? Có 15 phút? Ồ và làm thế nào về thủ thuật tiện lợi đó khi bạn Ctrl-C một số văn bản sau đó Ctrl-P nó ở đâu đó nhưng thay vì nó đi đến nơi bạn muốn nó sẽ mở một tệp hoàn toàn khác và kéo dài qua một thứ khác và bạn sẽ tự hỏi wtf đang ở đó ở nơi đầu tiên Ồ và tôi đã đề cập đến việc làm việc với Eclipse trong một dự án lớn trên vpn chưa? thực tế là không thể.

Đối với vim, nó tốt và nhanh chóng giả sử bạn biết vô số tổ hợp phím hoàn toàn vô nghĩa để khiến nó làm điều gì đó và may mắn nếu bạn vô tình gặp phải một chế độ không xác định. Ngoài ra với vim, bạn phải biết toàn bộ cấu trúc thư mục dự án trong đầu để mở các tệp chính xác. Ưu điểm chính của Vim là về lý thuyết bạn có thể tạo mã nhanh hơn vì tất cả các khóa, nhưng thực tế tôi không quan tâm tôi viết bao nhiêu văn bản, nó không phải là khối lượng văn bản quan trọng đến chất lượng của mã và thường là chất lượng mã yêu cầu nhìn chằm chằm vào hàng tá tệp trong nhiều giờ cho đến khi bạn tìm ra thứ chính xác để gõ (thường rất ngắn).

Điều tôi muốn là ai đó sẽ viết một chương trình dòng lệnh, như vim, thực sự có cấu trúc thư mục như Eclipse ở bên cạnh hoặc thứ gì đó mà bạn có thể mở rộng/thu gọn và mở tệp từ đó. Có ai biết bất cứ điều gì như thế này?

0
Dallas Caley

Tôi không có vấn đề với các trình soạn thảo UNIX khác nhau có sẵn, nhưng tôi chỉ sử dụng chúng dưới sự phản đối. Không, như tôi nói, bởi vì tôi có vấn đề với họ nhưng vì nếu tôi phải sử dụng chúng, điều đó có nghĩa là quá trình triển khai của chúng tôi thiếu một cách nào đó.

Điều này có lẽ xứng đáng hơn một chút bối cảnh: Tôi làm việc trên các giải pháp thương mại điện tử quy mô lớn, mọi thứ chi phối hoạt động của hệ thống của chúng tôi đều được tạo ra bởi quá trình xây dựng/triển khai chỉ bằng một cú nhấp chuột. Chúng tôi có một loạt các môi trường thử nghiệm vì vậy tại bất kỳ thời điểm nào tôi cũng có thể thực hiện thay đổi thông qua Eclipse, kiểm tra nó thành cvs và kích hoạt bản dựng/triển khai để chứng minh rằng bản sửa lỗi của tôi đã hoạt động. Vì vậy, nếu tôi hack xung quanh trong 'vi' thì đó là vì chúng tôi không thể chờ đến vòng quay 1 giờ triển khai hoặc vì việc triển khai không bao gồm các tệp tôi đang chỉnh sửa và cần được mở rộng để thực hiện vì vậy (nếu không tôi sẽ hack vi vào lần tiếp theo khi tệp cần thay đổi).

0
DanW