Sự khác biệt giữa các triển khai vim khác nhau là gì?


25

Tôi biết một số cách triển khai vim khác nhau trong Emacs. Có chế độ tà ác, viper, vimpulse và vim-mode. Có những người khác? Làm thế nào để họ so sánh?

Tôi lưu ý rằng có rất nhiều evil-*gói trên MELPA, cho thấy không có gói nào trong số đó hoàn thành 100% tính năng. Những tính năng vim nào họ cung cấp, và những tính năng vim nào còn thiếu?

(Tôi không quan tâm đến điều ngược lại trong đó " một tập hợp các macro mà [là] một triển khai Emacs khá đầy đủ "!)


1
Có lẽ "mô phỏng" sẽ chính xác hơn và ít gây nhầm lẫn hơn vì mục tiêu của các chế độ được liệt kê là mang lại cho bạn hành vi mà bạn mong muốn, không thực hiện toàn bộ trình chỉnh sửa trên đầu trang của Emacs.
wasamasa

Câu trả lời:


35

vi, vipviper(sắp xếp theo ngày tạo) đến built-in với Emacs, tất cả những người thi đua VI. vim-modelà một nỗ lực độc lập mới hơn để thực sự mô phỏng Vim, vimpulselà một bộ tính năng bổ sung trên đầu trang viperđể cung cấp một tính năng Vim hữu ích nhất. evilđược tạo ra để thay thế cho vim-mode.

evillà dự án gần đây nhất và là dự án duy nhất được tích cực phát triển. Mục tiêu của nó là mô phỏng mô hình chỉnh sửa của Vim một cách trung thực, tận dụng chức năng Emacs hiện có bất cứ nơi nào có thể. Cá nhân tôi nói rằng nó đã hoàn thành khoảng 90%, vì một số lệnh mới (chẳng hạn như gn) bị thiếu, một số chức năng liên quan đến hiển thị khá khó để tạo lại (như hiển thị dấu ngã sau khi kết thúc tệp) và nó không thực hiện trình thông dịch Vimscript hoặc bất cứ thứ gì ngoài những điều cơ bản của chế độ Ex. Tuy nhiên, việc mở rộng và hướng nội dễ dàng hơn so với bản gốc, các evil-*tiện ích mở rộng là các Emacs tương đương với các plugin Vim trong gần như tất cả các trường hợp ( evil-leaderví dụ sẽ là một ngoại lệ vì không cần thiết phải xem xét hỗ trợ sơ đồ phím của Emacs).

Xem xét evillà vượt qua Vim tại các điểm (xem :svà xem trước trực quan hoặc ít nỗ lực tạo ra chế độ mới hữu ích ), tôi hết lòng giới thiệu nó cho mọi người quan tâm đến việc chỉnh sửa phương thức cho Emacs.


Bạn đã đề cập đến g/việc là một lệnh mới trong Vim. Tôi chưa bao giờ nhìn thấy nó, và không thể tìm thấy bất kỳ tài liệu về nó. Nó làm gì trong Vim?
ivan

Tôi xin lỗi, ý tôi là vậy gn. Nó biến kết quả tìm kiếm thành một đối tượng văn bản. Ngoài ra, nó đã được thực hiện ngay bây giờ.
wasamasa

Ah tôi thấy. Tôi rất vui khi biết nó đã được triển khai khi tôi sử dụng nó khá nhiều trong Vim.
ivan

9

evillà chế độ mô phỏng vim được phát triển tích cực theo hiểu biết của tôi, tôi sẽ đưa ra câu trả lời của mình cụ thể. evilrất có thể sử dụng và rất gần với trải nghiệm giống như vim, nhưng có một số tính năng vim rất có thể sẽ không được triển khai (theo thiết kế) và một số tính năng chưa hoàn thiện nhưng cuối cùng có thể được thêm vào. Một số ví dụ về những thứ rất có thể sẽ không được thêm vào:

  1. Không có thông dịch viên vimscript, và theo hiểu biết của tôi không có kế hoạch để thực hiện một.
  2. Các số tăng và giảm ( C-aC-x) sẽ không được thêm vào vì C-xquá quan trọng đối với khóa phím Emacs.
  3. Không có khái niệm tích hợp về khóa lãnh đạo; thay vào đó, \bị ràng buộc evil-execute-in-emacs-statetheo mặc định.
  4. C-ukhông bị ràng buộc để cuộn lên theo mặc định vì nó quá quan trọng như là một liên kết phím Emacs (mặc dù bạn có thể ghi đè lên điều này bằng evil-want-C-u-scroll).

Để tìm danh sách các tính năng vim chưa được triển khai (tại thời điểm viết câu trả lời này), nơi tốt nhất để tìm là trình theo dõi vấn đề . Một mẫu ngẫu nhiên của những thứ có trong danh sách:

  1. Áp dụng một tập tin exkhông được thực hiện .
  2. Một số lệnh chuyển động không hoạt động như vim .
  3. :makekhông được ánh xạ tớiM-x compile .
  4. C-otrong insertchế độ không hoạt động khá giống như trong vim .
  5. Trao đổi bộ đệm cửa sổ không được thực hiện .

Có nhiều hơn nữa, bao gồm các lệnh không có trong danh sách vấn đề mở (đặc biệt là excác lệnh phức tạp ), nhưng như bạn có thể thấy trong danh sách, chúng có xu hướng là các tính năng vim khá nhỏ hoặc tối nghĩa (vim là một mục tiêu khá lớn với đạt được 100% tính tương đương).


kể từ khi emacs sử dụng lisp. không có gì là không thể. ví dụ, mặc dù khóa nhà lãnh đạo không được tích hợp, bạn có thể cài đặt một trình cắm đầu độc ác.
chen bin

@chenbin tất nhiên, tôi chỉ đề cập đến những thứ được tích hợp sẵn và được bật theo mặc định với cái ác.
shosti

3

Mục tiêu của Evil là giả lập Vim, trong khi mục tiêu của Viper là giả lập Vi. Vim-mode và Vimpulse là tiền thân của Evil và theo hiểu biết của tôi không được phát triển nữa. Dự án Evil đã được bắt đầu để giải quyết những thiếu sót của các dự án này.

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.