Sự khác biệt lớn nhất giữa Vim và VI


25

Hôm nay, tôi quyết định dùng thử Vi thay vì Vim, tôi muốn xem nó khác biệt như thế nào. Tôi hoàn toàn không nhận thấy nhiều khác biệt, điều lớn nhất tôi nhận thấy là cách Vi không nói -- INSERT --khi tôi chuyển sang chế độ chèn và có một số khác biệt nhỏ về giao diện.

Điều này khiến tôi tự hỏi, sự khác biệt lớn nhất giữa Vi và Vim là gì?


1
Bạn rõ ràng không sử dụng nhiều tính năng nâng cao của vim. chọn khối, tìm kiếm từ dưới con trỏ, số tăng theo con trỏ, tô sáng cú pháp, v.v.
Jim

Câu trả lời:


25

Thực sự có một lệnh trợ giúp trong vim để cho bạn biết về sự khác biệt: :help vi_diff

Từ trang của Vim , lớn nhất là:

không giới hạn hoàn tác

Bạn có thể thực hiện xxxx và hoàn tác từng thao tác trong bốn lần xóa. Lần cuối bạn gõ "jjjj" là khi nào và sau đó phát hiện ra khóa phím mũ được bật? Bạn vô tình nối năm dòng với nhau và Vi chỉ có thể hoàn tác lệnh cuối cùng. Trong Vim, bạn có thể hoàn tác cả bốn lệnh "J" và lấy lại văn bản gốc.

tính di động

Vi chỉ có sẵn trên Unix. Vim hoạt động trên MS-Windows, Macintosh, Amiga, OS / 2, VMS, QNX và các hệ thống khác. Và cũng trên mọi hệ thống Unix.

đánh dấu cú pháp

Vim có thể được lập trình để làm nổi bật các phần của bộ đệm theo các màu hoặc kiểu khác nhau, dựa trên loại tệp được chỉnh sửa. Có hàng trăm quy tắc tô sáng cú pháp đi kèm với Vim.

GUI

Vim hoạt động tốt ở bàn điều khiển, nhưng nó có thể chạy tự nhiên trong nhiều GUI, bao gồm X Windows, Mac OS và Microsoft Windows. Nó sử dụng các widget GUI gốc để cuộn, chia bộ đệm và menu. Nó cũng có thể nói chuyện với clipboard.


4
Một số khác biệt nữa được đề cập trong faq
Christian Brabandt

Theo readme , một số hệ điều hành đó không còn được hỗ trợ.
Rolf

7

Vim có nhiều tính năng mà Vi không có, thậm chí các tính năng không rõ ràng là các tính năng "nâng cao".

Trong thực tế, điều này có nghĩa là nếu bạn đã quen với Vi, bạn có thể sẽ gặp rất ít sự khác biệt nếu bạn bắt đầu sử dụng Vim (hoặc một số bản sao Vi khác), nhưng nếu bạn đã quen với Vim nếu "phản xạ" của bạn bao gồm các tính năng như tô sáng chế độ hình ảnh, bất kỳ hành động phím nào bắt đầu bằng "g" hoặc "z", bất kỳ hành động văn bản nào có "i" hoặc "a" [ví dụ "daw" để xóa một từ dưới con trỏ], điều hướng bằng các phím mũi tên ở chế độ chèn , v.v., bạn sẽ thấy rằng những người đó không làm việc ở Vi.

Ngoài ra còn có câu hỏi về chính xác những gì bạn đã sử dụng khi bạn nói bạn "đã thử Vi". Trên nhiều hệ thống, "vi" thực sự chạy Vim, ở chế độ áp dụng một số khác biệt này (mã hiển thị mặc định như bạn quan sát, các phím mũi tên không hoạt động ở chế độ chèn) và các chế độ khác không hoạt động (chế độ trực quan và phím g / z hoạt động ) và một số tính năng phụ thuộc vào tùy chọn biên dịch đôi khi bị vô hiệu hóa trong "Vim nhỏ" được sử dụng cho điều này (các đối tượng văn bản, chẳng hạn như "aw" một từ, là một trong số này). Bạn sẽ không nhận được những thứ này nếu bạn chạy Vi thực hoặc nếu "vi" là một bản sao khác có ít tính năng hoặc khác với Vim, chẳng hạn như nvi hoặc VILE.

Và, về mặt tối nghĩa, trong khi "Vim nhỏ trong chế độ Vi" rõ ràng không có bất kỳ tính năng nào mà Vim đầy đủ không có, có một vài tính năng của Vi chính hãng mà vim thiếu. Đây là những tài liệu trong :help vi-differences.


2
Tôi đã đặt cược rất nhiều rằng OP thực sự có một "vim nhỏ".
Kevin

2

Hầu hết các so sánh cung cấp nhiều chức năng cho vim hơn vi, nhưng có một ngoại lệ. Có chế độ "mở" trong vi và vim không thực sự có chế độ này.

Chế độ mở là chế độ một dòng được sử dụng vào ban ngày với các thiết bị đầu cuối không có màn hình điện tử, ví dụ như teletype, letterprinters và tương tự, và cũng có màn hình hiển thị nơi con trỏ chỉ ở dưới cùng.

Tôi biết có tài liệu nói rằng vim mô phỏng chế độ mở, nhưng kinh nghiệm của tôi là nó không, vì tôi đã thấy nó được sử dụng với vi bằng mắt của mình và tôi chưa bao giờ thấy vim làm điều đó. Có vẻ như vim chỉ sử dụng openlệnh đơn giản để mở và chỉnh sửa tệp trong chế độ trực quan. Tôi tin rằng tài liệu chính thức của vim nói rằng nó không hỗ trợ chế độ mở.


Tôi đã cài đặt ex-vi.sourceforge.net , đây là một cổng của Vi gốc. Làm thế nào để tôi bắt đầu chế độ mở này? Trang này đề cập đến nó khi nói về ^R, nhưng không có sự giúp đỡ nào khác. :open some/filetrả lại open: No such command from open/visual.
muru

@muru Qvào chế độ ex, rồi open. zđể hiển thị ngữ cảnh của dòng hiện tại khi bạn ở chế độ mở. Để trở ra, Qsau đó vi.
Antony

0

Tôi nghĩ rằng rất khó để thực hiện so sánh, vì những thay đổi trong vi đã xảy ra theo thời gian.

Khi tôi học đại học, tôi đã sử dụng vi vanilla đơn giản trên một thiết bị đầu cuối câm (và cả trên trình giả lập thiết bị đầu cuối trên máy Mac) kết nối với máy tính lớn bằng System V. Bạn thậm chí không thể tìm thấy nữa.

Nhưng tôi thậm chí không chắc đó là sự thật. Vào khoảng thời gian đó, có rất nhiều bản sao và cổng được tạo ra bởi vì lúc đó vi không phải là nguồn mở. Và khi các nhà cung cấp tạo bản sao, họ đã thêm các tính năng không có trong vi. Lịch sử là loại phức tạp. Bạn có thể đọc nó trên Wikipedia và những nơi khác.

Vì vậy, nếu bạn không sử dụng nhà cung cấp / phần cứng nhất định, bạn sẽ không sử dụng vi, nhưng đại loại như vi.

Nhưng tôi nhớ lại vi (hoặc bản sao tôi đang sử dụng) rất tối giản trong giao diện của nó (không màu sắc, không nhãn INSERT, không mulitple undos, v.v.) nhưng mạnh mẽ về những gì nó thực sự có thể đạt được. Rất thực tiễn.


0

Câu hỏi thường gặp về Vim có một danh sách được định dạng tốt: https://vimhelp.org/vim_faq.txt.html#faq-1.4

Trích từ FAQ:

  • Hoàn tác đa cấp
  • Tab, nhiều cửa sổ và bộ đệm
  • Chế độ chèn linh hoạt (có thể sử dụng các phím mũi tên trong Chế độ chèn)
  • Macro
  • Chế độ trực quan (chọn trực quan các phần của văn bản)
  • Toán tử khối
  • Hệ thống trợ giúp trực tuyến
  • Chỉnh sửa dòng lệnh và lịch sử
  • Hoàn thành dòng lệnh (hoàn thành tab)
  • Cuộn ngang (đường dài)
  • Cải tiến Unicode và quốc tế hóa.
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.