Những ưu và nhược điểm của Vim và Emacs là gì?


372

Làm thế nào bạn sẽ so sánh các biên tập viên? Những ưu và nhược điểm của mỗi là gì?

[ lưu ý ] Điều này không có nghĩa là được trả lời bởi những người "ghét người này và yêu người khác" hoặc những người chưa sử dụng cả hai.


1
M-! emacs RETNó giống như tìm kiếm google cho "google"
Seamus


27
Tôi ngạc nhiên không ai nhắc đến XKCD 378 .
tedder42

9
Lưu ý rằng những câu hỏi này không bao giờ bận tâm đến việc so sánh với Ed, một biên tập viên WYGIWYG thực sự!
Mark K Cowan

4
@ tedder42 Sau đó, bạn cũng có thể nói "Mel" ...
Tobias Kienzler

Câu trả lời:


420

Tôi sử dụng cả hai, mặc dù nếu tôi phải chọn một, tôi biết tôi sẽ chọn cái nào. Tuy nhiên, tôi sẽ cố gắng so sánh khách quan về một vài vấn đề.

  • Có sẵn ở khắp mọi nơi? Nếu bạn là quản trị viên hệ thống chuyên nghiệp làm việc với các hệ thống Unix hoặc người dùng cấp điện trên các thiết bị nhúng (bộ định tuyến, điện thoại thông minh có Busybox, thì), bạn cần biết vi (không phải Vim), vì nó có sẵn trên tất cả các hệ thống Unix và hầu hết Các hệ thống giống như Unix, cho dù máy tính để bàn, máy chủ hoặc nhúng. Đối với người dùng thông thường, đối số này không liên quan: Emacs dễ dàng có sẵn cho mọi HĐH máy tính để bàn / máy chủ và vì nó hỗ trợ chỉnh sửa từ xa, dù sao cũng đủ để có nó trên máy tính để bàn của bạn.

  • Bồng bềnh? Emacs từng đứng một cách hài hước cho Mười Tám Megabyte và liên tục hoán đổi. Ngay bây giờ, trên máy của tôi, Google Chrome cần khoảng RAM trên mỗi tab như Emacs làm cho 100 tệp đang mở và tôi thậm chí sẽ không đề cập đến Firefox. Trong thế kỷ 21, sự phình to của Emacs chỉ là một huyền thoại.

    Tính năng phình to cũng không phải là vấn đề. Nếu bạn không sử dụng nó, bạn không cần phải biết nó ở đó. Các tính năng của Emacs tránh xa khi bạn không sử dụng chúng và tài liệu được tổ chức rất tốt.

  • Thời gian khởi động : Những người đề xướng Vi (m) phàn nàn về thời gian khởi động của Emacs. Có, Emacs khởi động chậm, nhưng đây không phải là vấn đề lớn: bạn khởi động Emacs một lần mỗi phiên, sau đó kết nối với quy trình đang chạy emacsclient. Vì vậy, khởi động chậm của Emacs chủ yếu là một huyền thoại.

    Có một ngoại lệ, đó là khi bạn đăng nhập vào một máy từ xa và muốn chỉnh sửa một tập tin ở đó. Bắt đầu một Emacs từ xa (thường) chậm hơn so với khởi động Vim từ xa. Trong một số trường hợp, bạn có thể giữ một Emacs chạy bên trong Màn hình. Bạn cũng có thể chỉnh sửa các tệp từ xa trong Emacs, nhưng nó sẽ phá vỡ luồng nếu bạn đang ở trong một phiên ssh trong một thiết bị đầu cuối. (Vì XEmacs 21 hoặc GNU Emacs 23, bạn có thể mở cửa sổ Emacs từ phiên bản X đang chạy bên trong thiết bị đầu cuối.)

    Xoay các bảng, tôi đã quan sát thấy Vim mất thời gian tải đáng chú ý hơn Emacs ( vim -u /dev/nullso với emacs -q). Phải thừa nhận rằng đây là trên một nền tảng kỳ lạ (Cygwin).

  • Đường cong học tập ban đầu: Điều này thay đổi từ người này sang người khác. Đồ thị của Michael Mrozek làm tôi cười thầm. Nghiêm túc mà nói, tôi đồng ý rằng đường cong học tập của Vim bắt đầu dốc hơn, dốc hơn bất kỳ trình soạn thảo nào khác, mặc dù điều này có thể được giảm bớt bằng cách sử dụng gvim.

    Vì tôi đã xua tan một vài huyền thoại Emacs, hãy để tôi xua tan một huyền thoại vi: một trình soạn thảo phương thức không khó để sử dụng. Nó có một chút thói quen, nhưng sau một thời gian nó cảm thấy rất tự nhiên. Nếu tôi thiết kế lại vi (m), tôi chắc chắn sẽ giữ các chế độ.

  • Đường cong học tập không triệu chứng: Cả Vim và Emacs đều có rất nhiều tính năng, và bạn sẽ tiếp tục khám phá những cái mới sau nhiều năm sử dụng.

  • Năng suất : Đây là một chủ đề cực kỳ khó khăn. Những người ủng hộ vi (m) cho rằng bạn có thể làm khá nhiều thứ mà không cần rời khỏi nhà, và điều đó giúp bạn hiệu quả hơn khi bạn cần nó nhất. Những người đề xuất Emacs vặn lại rằng Emacs có rất nhiều lệnh không được sử dụng thường xuyên, vì vậy đừng đảm bảo ràng buộc chính, nhưng rất tiện lợi khi bạn cần chúng ( tham chiếu xkcd bắt buộc ).
    Ý kiến ​​cá nhân của tôi là Emacs cuối cùng sẽ thắng trừ khi bạn bị khuyết tật gõ (và thậm chí sau đó bạn có thể định cấu hình Emacs để chỉ yêu cầu các chuỗi chính và không kết hợp như Ctrl+ chữ cái). Các phím hàng trong nhà rất đẹp, nhưng chúng thường không thắng nhiều vì bạn phải chuyển chế độ. Tôi không nghĩ Vim có thể làm gì đáng kể hiệu quả hơn Emacs, trong khi điều ngược lại là đúng.

  • Khả năng tùy biến : Cả hai trình soạn thảo đều có thể lập trình được và có rất nhiều gói có sẵn cho cả hai. Tuy nhiên, Vim là một biên tập viên với ngôn ngữ macro; Emacs là một biên tập viên được viết bằng Lisp với một số nguyên thủy đặc biệt. Emacs chiến thắng một cách ngoạn mục khi bạn cố gắng làm điều gì đó mà các tác giả không nghĩ tới. Điều này không xảy ra mỗi ngày, nhưng nó tích lũy qua nhiều năm.

  • Hơn cả một biên tập viên : Vim là một biên tập viên. Emacs không chỉ là một trình soạn thảo: nó còn là IDE, trình quản lý tệp, trình giả lập thiết bị đầu cuối, trình duyệt web, ứng dụng thư, ứng dụng tin tức, ... Dù đó là điều tốt hay điều xấu là vấn đề cần bàn cãi. Nhưng bạn có thể sử dụng Emacs như một trình soạn thảo đơn thuần (xem tính năng của bloat trên ở trên).

  • Là một IDE : Cả Vim và Emac đều hỗ trợ rất nhiều ngôn ngữ lập trình và các định dạng văn bản khác. Ngoài những điều cơ bản như tô màu cú pháp và thụt lề tự động, cả hai đều có các tính năng IDE nâng cao như tra cứu tham chiếu chéo mã và tài liệu, chèn và hỗ trợ tái cấu trúc, kiểm soát phiên bản tích hợp và khả năng bắt đầu biên dịch và chuyển sang lỗi đầu tiên.

    Một miền mà Emacs đơn giản hơn Vim là tương tác với các quy trình con không đồng bộ . Đó là khi bạn bắt đầu một quá trình biên dịch dài và muốn làm một cái gì đó khác trong cùng một trình soạn thảo trong khi trình biên dịch đang hoạt động. Hoặc khi bạn muốn tương tác với vòng lặp Read-eval-print - Emacs thực sự tỏa sáng về điều này, Vim chỉ có những bản hack vụng về để cung cấp. Tuy nhiên, một nhánh mới của vim, Neovim đã chứng minh là đã sửa lỗi này và thực hiện các sửa lỗi khác nhau không được thực hiện trong stock vim.


34
Tôi không thể đồng ý với quan điểm "Hơn cả một biên tập viên". Vim cũng có nhiều plugin, bao gồm cả các plugin biến nó thành trình quản lý tệp hoặc IDE (như vim-latex).
rozcietrzewiacz

7
Điều này khiến tôi cảm thấy nhỏ bé ...
gnometorule

10
@rozcietrzewiacz: Vâng, nhưng bạn có thể duyệt web trong Vim không? Đọc mail? Kiểm tra nguồn cấp dữ liệu RSS của bạn? Tôi không nghĩ bạn có thể phủ nhận rằng Emacs chỉ mạnh hơn đơn giản, mặc dù tính hữu dụng của sức mạnh đó phụ thuộc vào những gì bạn đang tìm kiếm.
Musicfreak

3
@Bananguin Emacs tốt hơn ở bất cứ điều gì liên quan đến tương tác với REPL . Ví dụ Proof general rất hay (dĩ nhiên đó là miền ứng dụng rất hẹp). Emacs rất giỏi làm những việc mà trước đây không ai nghĩ tới: Emacs Lisp đẹp hơn ngôn ngữ macro của Vim rất nhiều. Emacs có xu hướng hỗ trợ tốt hơn cho việc mã nguồn thụt lề nhưng tôi không nghĩ rằng đó là một lỗ hổng của Vim vì thiếu thư viện (hỗ trợ Vim có xu hướng bị giới hạn trong việc làm nổi bật cú pháp).
Gilles

5
@MichaelHampton Bạn phải trẻ rồi. Năm 1985, nó là Tám Megabyte . Đến bây giờ tôi cho rằng nó phải là Tám nghìn Megabyte, ngoại trừ việc không ai chú ý đến việc sử dụng bộ nhớ của Emacs vì nó ít hơn một tab trình duyệt.
Gilles

267

Tôi sẽ đăng những gì tôi nghĩ là lợi ích chính của mỗi:


Emacs có nhiều tiện ích mở rộng hơn đáng kể để cho phép bạn thực hiện các tác vụ chỉ liên quan đến trình soạn thảo văn bản mơ hồ, như duyệt hệ thống tệp hoặc làm rối với kiểm soát phiên bản và các tiện ích mở rộng không liên quan đến trình soạn thảo văn bản, như đọc nguồn cấp RSS. Nếu bạn muốn có một môi trường thay vì chỉ là một trình soạn thảo văn bản, Emacs sẽ tốt hơn Vim. Tôi cũng nghĩ rằng Emacs dễ học hơn nhiều, bất chấp những gì bạn có thể tin:

Biên tập học truyện tranh

Cụ thể, tôi nghĩ người dùng Emacs mới làm quen sẽ nhanh hơn người dùng Vim mới làm quen


Mặt khác, Vim nhanh hơn không thể phủ nhận. Có vẻ như đây là một phần cốt lõi của cuộc tranh luận, nhưng theo tôi không có cuộc thi nào cả; Tôi tự coi mình là người dùng Emacs thông thạo và tôi không hợp với cặp vợ chồng mà tôi biết có kiến ​​thức tương đương về Vim. Vấn đề là, số người đủ thành thạo Vim nhanh đến mức đó là vô cùng nhỏ (trong số ~ 30 người tôi nói chuyện thường xuyên sử dụng Vim, tôi nghĩ chỉ có một người đặc biệt giỏi về nó). Có một khoảng cách lớn giữa mức tăng tốc độ có thể và mức tăng tốc độ thực tế bạn đạt được; Người dùng Emacs sẽ nhanh như 99% người dùng Vim và (như tôi đã nói trong phần Emacs) bắt đầu Người dùng Emacs có thể sẽ nhanh hơn người dùng Vim bắt đầu


8
umm ... tôi biết vim có nhiều hơn một plugin kiểm soát phiên bản. và một trong những plugin đó hỗ trợ tất cả các hệ thống phổ biến .... nếu emacs có nhiều hơn ... bạn cần bao nhiêu trong số chúng để làm điều tương tự?
xenoterracide

13
@xeno Tôi không biết plugin vim có gì, vì vậy có lẽ VCS là một ví dụ tồi, nhưng tôi rất tự tin Emacs có nhiều plugin hơn vim, vì vim không đăng ký triết lý "một chương trình làm mọi thứ"
Michael Mrozek

4
Ai đó vui lòng giải thích biểu đồ emacs, được đưa ra ở trên, có nghĩa là gì? Làm thế nào để giải thích nó?
Andrew-Dufresne

27
Đó là một trò đùa "xuống hố thỏ" ... Đó là bởi vì khi bạn học emacs, cuối cùng bạn cũng bắt đầu tạo ra emacs. (vì Emacs thực sự chỉ là một tập hợp rất lớn các macro / thói quen chỉnh sửa được viết bằng trình thông dịch Lisp.)
ocodo

15
+1 tốc độ của bạn so với trải nghiệm là tốt, nhưng có thể 99% là một chút cực đoan. Ý tôi là vim không phải là "cái đó" khó để thành thạo, nó chỉ mất vài năm;)
Johan

81

visẵn trên mọi hệ thống unix (hoặc gần như), tuy nhiên bạn không thể nói điều này về bất kỳ trình soạn thảo nào khác. Đây là lý do số 1, imo, để tìm hiểu và làm quen với chính mình vi(xin lưu ý 'vi' chứ không phải 'vim'). Tôi chưa bao giờ thấy Emacs có sẵn trong một cài đặt mặc định.

Tôi không nói không sử dụng Emacs hoặc đây là lý do duy nhất để sử dụng Vim, nhưng khi bạn muốn có thể sử dụng các hệ thống Unix không phải của bạn ... vilà một phần của ngôn ngữ phổ quát.


1
Tôi khá là vimngười dùng, nhưng tôi thường cảm thấy khó sử dụng vi, rất có thể là do phím END (vim hỗ trợ nó, nhưng vi không, hoặc ít nhất là không theo mặc định)
phunehehe

25
@phunehehe nếu tôi thử sử dụng thì nanocuối cùng tôi cũng có cả đống ijkloOah trong tập tin của mình ... cho đến khi tôi nhận ra rằng tôi không thể sử dụng chúng để điều hướng. Tôi không sử dụng các phím mũi tên để điều hướng.
xenoterracide

5
Điều này tăng gấp đôi để kết nối với các máy chủ chậm qua các kết nối tinh ranh: trình soạn thảo mà họ đảm bảo có (đó là trong thông số Unix, tôi nghĩ vậy?) Là vi và chế độ lệnh của vi giúp việc chỉnh sửa tệp dễ dàng hơn với ít lần nhấn phím hơn khi mỗi lần nhấn phím mất vài giây để xuất hiện trên màn hình của bạn. Tất nhiên, bước # 1 thường được cài đặt vim:)
Gaurav

12
@phunehehe Tôi không dùng esc. Tôi sử dụng ctrl + [nó cũng làm điều tương tự;)
xenoterracide

8
+1 cho nhận xét của Gaurav. Vi hoạt động tuyệt vời để chỉnh sửa khẩn cấp các tệp cấu hình qua kết nối 3G xảo quyệt trên điện thoại di động chậm.
LawrenceC

23

Tôi nghĩ rằng cả hai đều tuyệt vời. Tôi nghĩ rằng bất kỳ ai cũng có thể làm bất cứ điều gì bạn có thể tưởng tượng, và cả hai đều có thể tùy chỉnh, đến khi bạn hoàn thành việc tùy chỉnh chúng, cả hai đều chính xác như những gì bạn muốn, không hơn không kém.

Emacs nổi bật với tôi khi gần hơn một chút (mặc dù vẫn không đáp ứng) với các tiêu chuẩn về tính khả dụng và tính nhất quán của ISO / IEC đối với giao diện người dùng, và do đó không chơi nhiều trò lừa đảo với bản năng của bạn về vim đó. Thời gian tồn tại của bản năng mà bạn đã phát triển khi làm việc với các chương trình khác sẽ không chống lại bạn.

Vim là một mô hình hoàn toàn khác, và theo nhiều cách, nó tự nó vượt trội hơn rất nhiều so với các chuỗi Cntrl / Alt, và thay vào đó chỉ dựa trên các chế độ của nó, cho phép bạn giữ cứng trên hàng ghế nhà và gõ nhanh hơn Nhưng vim hầu như là duy nhất và trừ khi bạn cài đặt một số phần mềm đi kèm rất khác thường (ví dụ: Vimperator, Jumanji / Zathura, v.v.), bản năng bạn phát triển khi làm việc với vim sẽ không chuyển sang các chương trình khác và ngược lại. Điều đó nói rằng, tôi đã giải quyết trên vim mình. Bạn phải giải quyết sớm hay muộn, tốt hơn hoặc tồi tệ hơn, vì khó có thể làm chủ cả hai.


1
Một nhận xét về dòng "bản năng bạn phát triển khi làm việc với vim sẽ không chuyển sang các chương trình khác": Dòng "đặt chế độ chỉnh sửa vi" có thể được thêm vào tệp ~ / .inputrc (trên hệ thống Linux hỗ trợ nó) . Điều này cho phép cú pháp kiểu vi để nhập văn bản trong các chương trình bằng cách sử dụng đường dẫn cho stdin, chẳng hạn như chính bash shell. Có thể (đôi khi đáng ngạc nhiên) một lượng lớn khả năng ứng dụng rộng hơn vào bản năng chỉnh sửa mà người ta phát triển bằng cách sử dụng vim.
Christian Abbott

May mắn thay, có nhiều người gặp vấn đề đó và họ đã xây dựng các tiện ích mở rộng cho nhiều chương trình để làm cho chúng giống vim hơn .
DarkWiiPlayer

21

Tôi sử dụng cả hai một cách thường xuyên. Tôi xem Emacs như một trình soạn thảo "trực tiếp", trong khi tôi sử dụng Vim cho các tác vụ nhanh, một lần. Nhìn bề ngoài, Emacs bồng bềnh hơn nhiều so với Vim, và vì vậy nó thực sự không thuận tiện để "Cháy lên" như Vim, nhưng tôi cũng thấy rằng các triết lý về giao diện người dùng từ mô hình này sang mô hình khác hỗ trợ cho mô hình này. Emacs được xây dựng nhiều hơn để giữ bạn bên trong, làm cho mọi thứ tốt đẹp và thoải mái để bạn không phải rời đi, trong khi vim thì "Unixy" hơn nhiều và tự coi nó là một phần của vành đai công cụ lớn hơn.

Nhiều người chạy trốn khỏi Emacs do sự phụ thuộc quá lớn vào các bit bucky , nhưng đây là một lý do khá ngớ ngẩn với tôi. Sức mạnh thực sự mà Emacs có trên Vim là khả năng tùy biến và với sức mạnh của Viper, v.v., đây thực sự không phải là vấn đề. Chắc chắn Vim-Script cung cấp mức độ tùy chỉnh của riêng nó và nếu nói, ngôn ngữ lập trình yêu thích của bạn không được cung cấp một cú pháp tô sáng thích hợp, bạn chắc chắn có thể nấu một cái, nhưng Emacs cuối cùng là một máy tự lưu trữ, và trong kết thúc bạn có thể làm nhiều, nhiều hơn với nó. Không có công cụ nào như gnus hoặc org-mode trong Vim, để đặt tên cho một số. Tóm lại, Emacs không chỉ là một biên tập viên, mà thực tế nó là một hệ điều hành chết tiệt.

Để thao tác với văn bản, tôi muốn nói rằng chúng chính xác ngang tầm.


30
"Emacs sẽ tạo ra một hệ điều hành tuyệt vời, nếu chỉ có nó có một trình soạn thảo văn bản đáng giá." - Tôi đã được nhắc nhở về trích dẫn này.
amphetamachine

@amphetamachine Tôi không nhận được báo giá. Liệu nó có nghĩa là demean emacs-the-text-Editor?
tshepang

Nó có nghĩa là, mặc dù tôi thường nghe thấy nó cắn lưỡi nhiều hơn.
Thăm dò ý kiến ​​Cody

Đối với các biên tập viên, tôi thấy vim dễ dàng hơn để chỉnh sửa văn bản, nhưng tôi phải trao khả năng tùy biến cho emacs. Vimscript chỉ không thể đứng lên một lisp.
Thăm dò ý kiến ​​Cody

19

Tôi sẽ đặt số tiền trị giá 0,02 đô la của mình, vì tôi đã dành khá nhiều năm để sử dụng emacs và XEmacs và sau đó chuyển sang vim. Công bằng mà nói, tôi thực sự đã sử dụng vi khá nhiều vào khoảng năm 1990-1992 nên tôi đã quen với giao diện người dùng của nó.

Emacs

  • Emacs đã được mô tả như một hệ thống không thể sử dụng để viết một trình soạn thảo, và có một sự thật trong đó. Bạn có thể thực hiện khá nhiều thứ bạn muốn trong elisp nếu bạn quan tâm dành thời gian để hiểu môi trường. Tôi không thể nói rằng tôi đã từng biết điều đó rõ ràng, nhưng tôi đã làm những thứ linh tinh. Emacs và Xemacs không hoàn toàn tương thích ở cấp độ này, vì vậy các tập lệnh của bên thứ ba có thể chạy trên một nhưng không phải là khác.

  • Nó đã được quan sát thấy rằng RMS và một số tin tặc Emacs nổi bật khác đã phải rút lui khỏi chương trình do các vấn đề với OOS, nơi Bill Joy, Bram Moolenaar và nhiều nhà phát sáng vi khác vẫn đang ở đó. Emacs là cứng trên ngón tay hồng hào của bạn.

  • Emacs là một hệ thống công giáo nhiều hơn vi, và được xem như một ví dụ điển hình về sự bao bọc phần mềm . Cùng với Netscape, đây là một trong những đóng góp của jwz trong việc chứng minh luật này.

Một điều duy nhất tôi đã làm với xemacs một lần là cho nó chạy trên máy và mở một phiên x trên xterminal (thực ra là Sun 3/60 đã được sửa lại cũ) trong một phòng khác với cùng một bộ đệm trên cùng một ví dụ đang chạy.

Ưu điểm: Có thể mở rộng, mạnh mẽ hơn bất kỳ trình soạn thảo nào mà con người biết đến, tích hợp hoàn hảo với hầu hết mọi công cụ lập trình phần mềm miễn phí chính.

Nhược điểm: Công thái học nghi vấn, elisp không dễ học.

Vim

Disclamer - Tôi đã chuyển từ sử dụng emacs sang vim khoảng 10 năm trước và tôi thường xuyên sử dụng vim trên các hệ thống dựa trên Windows và Unix / Linux.

  • Vi và hậu duệ của nó có một cơ sở macro bàn phím rất tốt để tự động hóa các tác vụ chỉnh sửa. Tiện ích kịch bản trong vim không phức tạp như elisp, nhưng bạn có thể xây dựng nó với sự hỗ trợ cho Python, Tcl, Perl và có thể một số hệ thống khác. Thỉnh thoảng tôi chỉ viết các tập lệnh (bên ngoài tệp .vimrc) cho vim.

  • Vim có dấu chân nhỏ hơn emacs, nhưng điều này không phải là vấn đề lớn trong những ngày này.

  • Tài liệu và trợ giúp trực tuyến của Vim khá tốt. Emacs có tài liệu trực tuyến khá tốt, nhưng tôi không nghĩ nó toàn diện như vim.

  • Vim thừa hưởng giao diện người dùng phương thức kỳ quặc của vi, nhưng có khả năng hoạt động rất giống một trình soạn thảo không có chế độ, vì bạn có thể điều hướng trong chế độ chèn. Trên Windows, nó có thể hoạt động khá giống với ứng dụng Windows.

Ưu điểm: Tiện ích macro bàn phím tốt, khả năng mở rộng và kịch bản tốt, nhưng không tốt như emacs. Các trình soạn thảo có nguồn gốc từ Vim hoặc vi là tiêu chuẩn trên hầu hết nếu không phải tất cả các bản phân phối linux unix hoặc mục đích chung. Công thái học tốt hơn.

Nhược điểm: Giao diện người dùng phương thức cảm thấy lạ đối với những người đã sử dụng giao diện người dùng Windows. Ít vấn đề với vim những ngày này.


Tôi rất thích đọc câu trả lời của bạn, nhưng tôi bỏ lỡ yếu tố quyết định. Điều gì khiến bạn chuyển từ emacs sang vim?
Erik B

Nó chỉ là hữu cơ - cộng với các macro bàn phím của vim hoạt động rất tốt.
Mối quan tâmOfTunbridgeWells

1
Chết tiệt, là một lập trình viên trẻ tuổi, lập luận công thái học rất hấp dẫn. Điều này có thể đã giải quyết sự lựa chọn của tôi để đi và học VI và VIm thay vì Emacs.
Didier A.

15

Tôi thường sử dụng Vim, nhưng cả hai đều là những biên tập viên tuyệt vời.

Học cách sử dụng vi là khó chịu, nhưng tôi đã vượt qua nó và học cách thích nó. Khoảnh khắc bực bội nhất của tôi là khi phím khóa mũ được bật. Bạn có thể thử với gVim, nhưng một trong những lợi thế lớn nhất với vi và Emacs là khả năng làm công cụ gọn gàng trong khi vẫn giữ tay trên bàn phím và gVim có khả năng giữ bạn sử dụng chuột. (Việc học chơi các trò chơi roguelike cùng một lúc đã cho tôi luyện tập với các phím di chuyển con trỏ, nhưng đôi khi khiến tôi cố gắng di chuyển theo đường chéo trong tài liệu.)

Emacs có lẽ dễ tiếp cận hơn. Điều đó là vô nghĩa, và bạn sẽ không tự làm phiền mình bằng cách nhấn phím khóa mũ. Ý tưởng kiểm soát trình chỉnh sửa thông qua việc gõ các chữ cái với phím điều khiển xuống không quá xa lạ với người dùng quyền lực hiện đại, mặc dù các phím thực tế để làm mọi thứ sẽ có vẻ hoang dã và tùy tiện với người dùng Windows / Mac OS X điển hình. Một lần nữa, các phiên bản cho phép bạn sử dụng chuột sẽ giúp bạn có một số ưu đãi trong thời gian dài.

Cả hai đều yêu cầu một số mức độ chuyên môn để sử dụng hiệu quả. Không giống như, Notepad, bạn không thể ngồi xuống và chỉnh sửa.

Cả hai đều có thể định cấu hình được, mặc dù đối với phần mở rộng viết tiền của tôi trong cùng một Lisp, trình soạn thảo được viết sẽ tạo ra trải nghiệm mượt mà hơn. (Emacs, như được phân phối bình thường, không thực sự là một trình soạn thảo. Đó là môi trường Lisp được thiết kế để xử lý văn bản, với rất nhiều phần mềm được viết sẵn, bao gồm cả trình soạn thảo. Do đó, trò đùa "Emacs tạo ra một vỏ tốt, nhưng nó có thể sử dụng một biên tập viên tốt hơn. ")

Tôi thường sử dụng Vim bởi vì, sau khi đào tạo mở rộng, nó cảm thấy dễ dàng hơn. Điều này có thể là do các ưu điểm trong hệ thống chế độ, trong đó số lượng lệnh khổng lồ có sẵn bằng một ngón tay gần các hàng nhà hoặc "hội chứng vịt con", áp dụng rất nhiều cho các biên tập viên: một khi bạn học được một thứ tốt, bạn thường gắn bó với nó

Bạn sẽ không sử dụng sai.


9

Lý do chính tôi không sử dụng vi / vim là vì nó là phương thức. Lý do chính tôi sử dụng vi là nó có sẵn ở hầu hết mọi nơi.


12
Lý do chính tôi sử dụng vim là vì nó là phương thức. Đường cong học tập cao hơn, nhưng dễ sử dụng hơn nhiều khi bạn đã quen với nó.
Kris Jenkins

1
Điều đáng chú ý là nếu bạn thích chỉnh sửa phương thức, Emacs hỗ trợ tốt cho nó thông qua chế độ tà ác - emacswiki.org/emacs/Evil
Charles Stewart

9

Tôi tình cờ nghĩ rằng bình luận "vim là phương thức" ở trên là không chính xác. Vim có lệnh. Bạn có thể làm "11aNow là thời gian dành cho tất cả những người đàn ông tốt .." và kết thúc với 11 dòng văn bản mới giống hệt nhau trong tệp của bạn. Đó là một lệnh, không phải là một chế độ. Nhưng thực sự có một sự khác biệt rất cơ bản trong các lệnh Vim so với các lệnh Emacs. Tôi không hoàn toàn chắc chắn rằng tôi có thể mô tả nó, nhưng Eric Fischer đã kết hợp chỉnh sửa dòng kiểu Emacs trong trình điều khiển TTY hơn 10 năm trước và đã có một bài báo được xuất bản về nó:

http://www.usenix.org/event/usenix99/full_ con / fischer / fischer.pdf

Ông thấy rằng chỉnh sửa dòng phong cách Emacs về cơ bản khác với phong cách vi.

Vì vậy, Emacs có một lợi thế là rất nhiều thứ khác (bash, gnuplot, zsh, ksh một số thứ khác mà tôi không thể nghĩ ra khỏi đỉnh đầu) cuối cùng đều thực hiện chỉnh sửa dòng theo kiểu Emacs.

Tôi nên lưu ý rằng cá nhân tôi sử dụng Vim mọi lúc. Tôi chỉ là một người dùng Emacs rất thường xuyên.


1
set -o vitheo bashhoặc zshkhông quá khó để chạy (hoặc đặt trong một rctệp) theo ý kiến ​​của tôi.
moon.musick

@ moon.musick - chắc chắn là không, tôi làm điều đó mọi lúc. Chỉ có điều gnuplot, Postgresql psql, MySQL mysqlvà hàng tấn giao diện khác đều thực hiện chế độ Emacs ít nhiều theo mặc định. Nếu chỉ có Oracle mới có thể sqlplusthực hiện chỉnh sửa dòng lệnh ... không, không. Đó sẽ là quá nhiều để yêu cầu của một công ty lớn. Họ có xu hướng để làm theo!
Bruce Ediger

Vâng, hầu hết thường inputrclàm điều đó cho các công cụ shell, nhưng sau đó tôi bắt đầu tự hỏi trong nửa giây tại sao jkhông cuộn xuống, giả sử, Mendeley Desktop sau khi chuyển sang thiết bị đầu cuối và họ đã được yêu cầu liên kết vim quá nhiều lần. Không thể bao gồm tất cả mọi thứ và có một môi trường nhất quán, không may.
moon.musick

2
@BruceEdiger Tôi rất nghi ngờ rằng các nhà phát triển của mysql(1), psql(1), gnuplot(1), cũng python(1), perlconsole(1), lftp(1), smbclient(1)và thực sự rất nhiều chương trình tương tác lo ngại về keybindings cho dòng chỉnh sửa. Tất cả các phần mềm này chỉ sử dụng GNU Readline và chế độ mặc định cho GNU Readline là (không có gì đáng ngạc nhiên) giống như GNU Emacs. set editing-mode vi trong của bạn ~/.inputrcvà voila - tất cả các công cụ này đều có các phím bấm giống như vi.
Dmitry Alexandrov

9

Vì nó không được tuyên bố rõ ràng, tôi sẽ thêm rằng không có môi trường lập trình nào tốt hơn (Lisp in a box, SLIME, v.v.) so với bản phân phối Emacs được sửa đổi một chút. Tất cả các nhu cầu lập trình của tôi (99%) đều được quan tâm từ bên trong Vim, nhưng đối với tất cả các thư viện và thói quen Lisp mà tôi viết, tôi phải kích hoạt Emacs để hoàn thành mọi việc hiệu quả.


8
Đôi khi tôi tự hỏi liệu điều này nói nhiều hơn về Lisp hay về Emacs, và điều đó tốt hay xấu ...
Kevin Cantu

8

Tôi sử dụng Vim / gVim.

Tôi đã từng sử dụng Emacs, nhưng tôi thấy gVim thường hoạt động nhanh hơn trên các máy chậm hơn, cộng với, do yêu cầu POSIX của nó, vi có sẵn ở hầu hết mọi nơi.

Khi sử dụng Vim hoặc gVim, tôi sử dụng chuột rất nhiều, tôi nghĩ nó hỗ trợ rất tốt.

Tôi bắt đầu sử dụng Emacs, vì nó dễ sử dụng hơn cho người dùng mới làm quen. Vì một số lý do, tôi thấy việc sử dụng nano khá dễ bị lỗi và đến một lúc nào đó tôi nhận ra rằng tôi cảm thấy thoải mái hơn nhiều khi sử dụng vi.

Ngay bây giờ, nó là một hỗn hợp. Tôi cũng sử dụng Eclipse và gedit khá thường xuyên. Vim, tuy nhiên, vẫn là trình soạn thảo yêu thích và được sử dụng nhiều nhất của tôi.


7

Tôi sử dụng cả gVim và Emacs đủ tốt để làm việc hiệu quả, mặc dù tôi không phải là chuyên gia. Một điều tôi có thể nói chắc chắn là Vim và gVim chạy nhanh hơn trên máy tính xách tay Windows 7 của tôi (mà tôi phải sử dụng tại nơi làm việc). Emacs, trên hộp Windows, có thói quen "tạm dừng" trong tối đa phút và không phản hồi, ngay cả khi tiếp tục chấp nhận nhập bàn phím, trước khi phun ra mọi thứ tích lũy trong bộ đệm bàn phím một cách vội vàng. Điều này không xảy ra trong Mac OS hoặc Linux. Tuy nhiên, tôi thấy mình sử dụng Vim hoặc gVim hầu hết thời gian trên tất cả các nền tảng chỉ vì vậy tôi không phải dừng lại và suy nghĩ về việc tôi đang sử dụng và chỉnh sửa trình soạn thảo nào. Điều đó nói rằng, trong một môi trường hoàn toàn * nix, tôi có thể sẽ ở lại với Emacs vì tôi thấy việc chỉnh sửa không thay đổi tự nhiên hơn một chút.

Điểm mấu chốt: theo tôi cả hai biên tập viên đều đủ mạnh để xử lý bất kỳ và tất cả các nhu cầu chỉnh sửa văn bản. Sự lựa chọn nên dựa trên những cân nhắc thực tế (như chi tiết cụ thể về triển khai nền tảng) và phong cách làm việc.


3

Sự khác biệt chính giữa Emacs và Vim là công thái học. Có hội chứng ống cổ tay, CTS, như bạn đã biết. Emacs rất "nguy hiểm" nếu bạn bị CTS và khiêu khích CTS. Vim - không, bạn có thể đọc về sự khác biệt này ở nhiều nơi. Ví dụ, trong Vim, bạn chỉ có thể chỉnh sửa văn bản bằng một ngón tay. Trong Emacs - bạn không thể :)


3
Thậm chí không chứng minh được rằng CTS thực sự liên quan đến việc sử dụng bàn phím. Mặc dù bề ngoài rất hợp lý, có những liên kết cho thấy CTS thực sự gây ra di truyền nhiều hơn bất cứ thứ gì khác. Vì vậy, trong khi nó vẫn có thể giúp gõ ít hơn khi bạn đã có CTS, tôi không nghĩ có bất kỳ bằng chứng nào để nói rằng một trình soạn thảo gây ra CTS nhiều hơn một trình soạn thảo khác.
Konrad Rudolph

-2

Tôi sử dụng vi/ nvi(KHÔNG vim) vì nó đơn giản và không phô trương.

vimyêu tiếng bíp rất nhiều và khó hơn để tắt. Tôi phải thể chất loại bỏ các loa pc nội bộ trước khi cuối cùng phát hiện ra rằng chôn-ref về làm thế nào để làm điều đó :)

set vb t_vb=

Ngoài ra tôi không sử dụng cú pháp tô màu, màu xám hơn màu đen đối với tôi là đẹp nhất.

Và có lẽ tôi quá ngu ngốc khi tìm ra emacscách nhấn đa phím đó, tổ hợp ba phím duy nhất tôi nhớ là CTRL-ALT-DEL.


-2

"Những ưu và nhược điểm của Vim và Emacs là gì?" - ha!

Tôi sẽ chủ yếu để lại những ưu điểm cho người khác.

Nhược điểm của cả hai điều này là cả hai đều là trường học cũ. Có lẽ tôi đã sử dụng 50 trình soạn thảo khác nhau trong nhiều năm từ các trình soạn thảo dòng Cơ bản, đến các trình soạn thảo được mã hóa lắp ráp siêu nhanh (VEDIT cho một), cho đến các trình soạn thảo GUI ưa thích, một số tốt hơn các trình soạn thảo GUI. Tôi thậm chí đã viết trình soạn thảo đặc biệt của riêng mình có tên là ForthStar và điều chỉnh nó để chỉnh sửa một cây lá btr, với nhiều chỉ mục để tìm kiếm mạnh mẽ, như tìm ngay những lá cuối cùng tôi vừa chỉnh sửa, hoặc nhanh chóng tìm thấy các thành phần mã hoặc cha mẹ lá hoặc trẻ em.

Tôi nghĩ rằng cả vi và emacs là tôn giáo nhiều hơn cơ bắp. Những bộ óc sáng tạo đã xây dựng nên chúng phần lớn đã tiến lên và sự hỗ trợ mới thiếu sự can đảm và kỹ năng để phát minh lại chúng.

Có Emacs có thể làm rất nhiều, nhưng nó bị chậm lại bởi lisp, một ngôn ngữ đẹp và bây giờ phần lớn đã lỗi thời.

Cả hai đều bị mắc kẹt trong bố trí bàn phím khó khăn. Emacs có thể điều chỉnh cho người dùng một chút, ở mức tối thiểu bằng cách nhận ra rằng có một phím Alt thay vì Meta cổ. Và giống như Wordstar nhận ra rằng việc giữ CA CB thẳng từ CA B khi gõ tốc độ không đáng để phân biệt. Tốt hơn là chỉ cần có một cái được bắn bởi một trong hai tổ hợp phím. Vâng, bạn có thể thay đổi các ràng buộc chính, nhưng sau đó bạn sẽ gặp rắc rối gì.

Vi rất thông minh, nhưng thiếu tìm kiếm và thay thế mạnh mẽ như trong Notepad ++, cho bạn thấy những gì nó tìm thấy, cho phép bạn mở rộng nó ra và áp dụng có chọn lọc nó, bằng màu sắc, chỉ đề cập đến một sự đổi mới.

Hầu như bất kỳ GUI nào khác hiện nay đều cho phép phóng to bằng bánh xe chuột. GUI Emacs dường như không làm cho nó hoạt động. Và Hy Lạp tốt đẹp như những gì Kate có?

Bố cục bàn phím yêu thích của tôi trong nhiều năm qua là kim cương con trỏ của Wordstar. Ít nhất nó đã dễ dàng để học và có ý nghĩa ngay lập tức. Thứ tôi ghét nhất là Worderinf, điều này làm tăng sự phức tạp và dường như dựa trên một số emacs.

Chúng ta hãy đối mặt với nó hầu hết thế giới có GUI ngày nay. Và thích hay không các trình soạn thảo văn bản có phần bị mắc kẹt trong thời đại của họ.

Tôi nghĩ sẽ tốt hơn nếu có một trình soạn thảo phổ quát có thể dễ dàng chuyển đổi giữa các emacs, vi, wordstar hoặc bất kỳ bố cục quan trọng nào và không mất các lệnh mạnh hơn mà nó phải cung cấp. Các lập trình viên thực sự phải sử dụng nhiều công cụ chỉnh sửa. Tại sao không có một biên tập viên đáp ứng nhu cầu của chúng tôi để hoàn thành công việc thay vì bắt chúng tôi làm theo cách của họ?


Vì câu hỏi yêu cầu cho cả ưu và nhược điểm, điều này không trả lời câu hỏi. Theo như tôi có thể thấy, nó chỉ đề cập đến cách các biên tập viên khác ar tốt hơn cả Vi và Emacs.
Kusalananda

Bất kỳ câu trả lời nào cũng được cho một câu hỏi, cho đến khi họ trả lời câu hỏi và về cơ bản chúng khác nhau như những câu hỏi trước. "Có vẻ ổn".
peterh

Q hỏi rõ ràng về khuyết điểm. Và tôi đề cập đến một số ưu.
Chế độ xem hình elip
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.