Vi vs vim, hoặc, có bất kỳ lý do tại sao tôi muốn sử dụng vi?


84

Tôi biết một chút về các trình soạn thảo văn bản * NIX (hiện đang chuyển từ nanosang vim) và sau khi tìm hiểu một chút về Unix & Linux SE, đã nhận thấy rằng nó viđược sử dụng thay vì 'vim' trong một số lượng câu hỏi hợp lý. Tôi biết rằng 'vim' là viết tắt của 'Vi IMproved', và với suy nghĩ đó, tôi tự hỏi tại sao mọi người lại thích sử dụng vi thay vì vim. Có vi có lợi thế đáng kể so với vim?

Chỉnh sửa: Tôi nghĩ rằng câu hỏi của tôi đang bị hiểu sai. Tôi biết rằng vim, phần lớn, mạnh hơn đáng kể và đầy đủ tính năng thì vi là. Điều tôi muốn biết là nếu có bất kỳ trường hợp nào có thể xảy ra khi vi có lợi thế hơn vim, chẳng hạn như sử dụng ít bộ nhớ, tỷ lệ phổ biến trên các hệ thống * nix, v.v.


25
Điều thú vị vilà bạn có thể mong đợi nó có mặt trên mọi hệ thống tuân thủ POSIX.
jordanm

1
Trên thực tế, cài đặt chuẩn Ubuntu bao gồm vivà không vim.. Ubuntu là một trong những bản phân phối thân thiện với người dùng nhất btw ;-)
amyassin

10
@amyassin Điều này không chính xác, Ubuntu, giống như hầu hết các bản phân phối Linux, bao gồm vim. vichỉ là một liên kết tượng trưng mà cuối cùng chỉ đến vimtrong cài đặt mặc định.
jlliagre

2
Lời khuyên của tôi là: Sử dụng Vim, nhưng tìm hiểu vibằng cách sử dụng thông số kỹ thuật POSIX chovi . Bằng cách đó bạn có kiến thức di động cũng như biết các phần mở rộng Vim.
tự đại diện

1
@DDK Bạn đã bỏ lỡ "cuối cùng" trong tuyên bố của tôi. "ls -l / etc / alternatives / vi" -> "lrwxrwxrwx 1 root root 17 janv 1 2016 / etc / alternatives / vi -.> /usr/bin/vim.tiny"
jlliagre

Câu trả lời:


61

vilà (cũng) một trình soạn thảo tiêu chuẩn POSIX . Có rất nhiều triển khai và vimcó khả năng là phổ biến nhất ít nhất là trên Linux.

Mặc dù nhiều hệ điều hành tuân thủ Unix truyền thống cung cấp các vitriển khai rất gần với tiêu chuẩn, nhưng vimđã bổ sung rất nhiều tính năng bổ sung khiến nó trở thành con dao hai lưỡi.

Tất nhiên, các tiện ích mở rộng này thường được thiết kế để giảm bớt quá trình chỉnh sửa và cung cấp các tính năng và chức năng hữu ích. Tuy nhiên, một khi bạn đã quen với một số trong số họ (không phải mỹ phẩm như tô màu cú pháp mà là những người thay đổi hành vi của biên tập viên), bạn có thể dễ dàng quên họ là cụ thể; và sử dụng một triển khai khác, bao gồm cả các triển khai dựa trên mã BSD ban đầu có thể rất khó chịu. Điều ngược lại cũng đúng.

Điều này khá giống với vấn đề xảy ra với các tập lệnh sử dụng bashism không POSIX phải đối mặt với việc triển khai shell chính thống hơn như dashhoặc ksh.


29

Không có vi không có bất kỳ lợi thế đáng kể so với vim thay vì cách khác. Vim có nhiều ưu điểm hơn Vi. Bạn có thể quan tâm: Tại sao, oh TẠI SAO, làm những #? @! nuthead sử dụng vi?

Chỉnh sửa cũng đọc: Học VIM có đáng nỗ lực không?


4
Vâng. Tôi không sử dụng bất kỳ IDE nào vì các trình soạn thảo họ buộc bạn sử dụng không phải là Vim.
Keith

1
@Keith Tôi sử dụng cả Xcode và Eclipse và tôi vẫn chỉ có thể chỉnh sửa bằng vi.
ott--

@Keith SlickEdit có phần mô phỏng Vim tuyệt vời và IDEA đang tiến gần đến nó. Ngoài ra, Visual Studio có ViEmu.
demkoryu

1
IntellIJ cũng có một plugin vim đẹp mắt ghi đè hành vi của trình soạn thảo tiêu chuẩn.
JulienD

24

Sau khi dành phần lớn cuộc đời (không bao gồm thời thơ ấu) chỉnh sửa thoải mái với Vim, tôi đã dành khoảng một tháng chỉ để sử dụng vi. Khi làm như vậy, tôi nhận ra rằng tôi đã phụ thuộc vào Vim cho tất cả các nhu cầu sửa đổi văn bản của mình. Trước chuyến đi của tôi với vi, bất cứ khi nào tôi phải thay thế một số văn bản hoặc thực hiện một thao tác tương tự trong một nhóm lớn các tệp, tôi sẽ chỉ mở các tệp trong Vim và chạy một :bufdolệnh, và bất cứ khi nào tôi phải thụt lề hoặc định dạng một số tệp, Tôi sẽ mở chúng trong Vim và sử dụng các lệnh =gwlệnh của Vim . Tôi phụ thuộc vào Vim. Sau khi nhận ra vi không có các lệnh này, tôi buộc phải thực hiện chuyển đổi văn bản hàng loạt với sedvà học được rất nhiều về các chương trình khác như awkindent. Mặc dù cuối cùng tôi đã quay lại sử dụng Vim, nhưng kiến ​​thức tôi có được bằng cách sử dụng một trình soạn thảo ít tính năng hơn là đáng kể và đã được chứng minh là cực kỳ hữu ích. Ngoài việc tìm hiểu về các công cụ bên ngoài trình soạn thảo văn bản, tôi cũng trở nên quen thuộc hơn với vi. Bất cứ khi nào tôi đang làm việc trên một hệ thống mới hoặc một máy chủ không có Vim, tôi cảm thấy thoải mái hơn khi sử dụng vi so với trước khi chuyến đi dài cả tháng của tôi.

Ngoài ra, tháng trước tôi đã cài đặt Linux trên máy tính bảng WM8650 giá rẻ và nhận thấy có sự khác biệt hiệu năng đáng chú ý giữa Vim và vi, vì vậy tôi có xu hướng sử dụng vi trên máy tính bảng.


3
Tôi thấy rằng đây là một vấn đề phổ biến trong CNTT - các công cụ giúp chúng ta cũng có thể che khuất những thứ mà chúng ta nên học tập tốt hơn.
danno

Trên thực tế, xử lý chỉnh sửa tập tin tại chỗ trên nhiều tập tin có thể không portably được thực hiện với AWK hoặc Sed một trong hai . (Công -itắc trên cả hai là một phần mở rộng GNU.) Nhưng bạn có thể sử dụng chúng một cách hợp lý với thứ gì đó nhưfor f in *; do printf '%s\n' '%!sed -e '\''some sed command'\' x | ex "$f"; done
Wildcard

12

Tôi sẽ có một thời gian khó khăn khi sống mà không có vim nhưng tôi không thể chịu đựng được . Tuy nhiên, học cái trước ít nhất sẽ để lại cho bạn một ý tưởng về cách đối phó với cái sau khi đó là tất cả những gì có sẵn.

Giao diện vim theo mặc định thực sự khá gần với vi. Nếu tôi đang làm việc trên một hệ thống với vim, điều đầu tiên tôi làm là thêm công cụ này vào ~/.vimrc:

syntax enable
set nocp
set wildmenu

Có một loạt những thứ khác tôi thích - bây giờ và đánh số, v.v. - nhưng đừng bận tâm. "cho phép cú pháp" chỉ bật tính năng tô sáng cú pháp cơ bản (hơi khó hơn: filetype plugin oncũng cơ bản); "nocp" tắt khả năng tương thích vi và nó là thế này mà bắt đầu để phân biệt vim từ Ye Olde vi (ví dụ, nó cho phép showmodemà làm cho toàn bộ kinh nghiệm phần nào con người hơn, vì bây giờ bạn có một số đầu mối về việc liệu bạn đang ở trong lệnh hoặc ~ INSERT ~ chế độ). "wildmenu" chỉ cung cấp cho bạn một menu hoàn thành theo chiều ngang khi làm một số việc, điều này cũng giúp cuộc sống dễ dàng hơn.

Các phương tiện chỉnh sửa văn bản của vim là không ai sánh kịp - ngoài emacs, tôi chưa bao giờ thấy hoặc nghe về một phần mềm nào gần gũi. Chúng không dễ học, nhưng một khi bạn biết chúng, chúng sẽ nhanh hơn nhiều so với menu chuột để sử dụng và năng động hơn nhiều so với các lựa chọn thay thế macro đơn giản trong giao diện dựa trên menu chuột. Để lập trình, đôi khi tôi sử dụng vim cùng với một IDE như Eclipse, nhưng tôi làm hầu hết công việc trong vim.

Nếu bạn đi theo con đường đó, lol, hãy nhìn vào các plugin tự động hoàn thành và danh sách thẻ. Và hãy cẩn thận mặt tối.


Tôi luôn luôn thêm set mouse=a.
ott--

Về bình luận chương trình của bạn, bạn có thể tìm eclim thú vị ...
ire_and_curses

@ire_and_curses: chưa thử. Cả Eclipse và vim đều giám sát các tệp nguồn và cho phép chúng được cập nhật ra bên ngoài và lật từ máy tính này sang máy tính khác đang lật từ máy tính này sang máy tính khác. Có vẻ như khá ý tưởng tho.
goldilocks

Mặc dù tôi không nghĩ câu trả lời này nên là câu trả lời được chọn (vì nó thiên vị), nhưng đây chính xác là kiểu phối cảnh hữu ích để hiểu sự khác biệt. Cảm ơn đã đảm nhận một vị trí.
genorama

8

Ưu điểm là vi thường được cài đặt sẵn trong UNIX doanh nghiệp như AIX hoặc Solaris. Bên cạnh đó vim không thể truy cập trên phương tiện cài đặt.


1

Tôi đã nhận thấy rằng tôi chỉ chọn Vihơn VIMkhi tôi sao chép và dán một tài liệu văn bản hoặc tập tin cấu hình mà tôi đã sử dụng catlệnh. Điều này là do khi tôi cố gắng ctrl-cvà sau đó ctrl-vvào VIMtài liệu đã mở, nó buộc tất cả các dòng phải có một nhận xét trước chúng. Vì vậy, khi tôi sử dụng Viđể ctrl-vhoặc pastevào Vitài liệu đã mở, nó sẽ dán chính xác những gì tôi đã sao chép từ đó. Ngoài ra, tôi sử dụng VIMcả ngày dài.

Thưởng thức!


5
Hãy thử:set paste
Patrick

3
đặt pastetoggle = <F2> trong .vimrc ( vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste )
Dave

1

Như các câu trả lời trước đã được đề cập, vi đi kèm với mọi hệ thống UNIX ngoài kia.

Tôi chỉ muốn thêm một ví dụ. Arch Linux là một bản phân phối đặc biệt phổ biến và nhẹ mà cả Trình cài đặt hoặc bản phân phối cơ sở đều đi kèm với vim theo mặc định, tuy nhiên cả hai đều đi kèm với vi.

Đây không phải là một lợi thế cho vi per se , bởi vì bạn có thể chỉ cần cài đặt vim thủ công và bạn chỉ cần thực hiện một chút trong quá trình cài đặt yêu cầu trình soạn thảo văn bản và không có gì vim vượt trội hơn vi cho mục đích dự định. Nhưng hiểu được sự khác biệt và vi đó có mặt ở khắp mọi nơi và nhẹ hơn vim sẽ mang lại cho nó một số lợi thế thích hợp.

Ngoài ra, để toàn diện, chưa ai nói rõ rằng vi là tiền thân trực tiếp của vim. Vim được mong muốn đặc biệt là mọi thứ mà vi là, và hơn thế nữa.

Vì vậy, theo một cách rất trực tiếp, vim vượt trội hơn vi, bởi vì nó được thiết kế để trở thành .


1

Lý do duy nhất từng sử dụng vi trên vim là khi bạn không có lựa chọn nào khác.

Có rất nhiều, rất nhiều lý do tại sao vim là viết tắt của "vi cải thiện"!

Mượn từ một bài liên quan tôi đã trả lời: -

  1. Nhiều cửa sổ - ngang, dọc & tab.
  2. Làm nổi bật hình ảnh.
  3. Trợ giúp trực tuyến thông qua lệnh: help.
  4. Ghi macro vào một thanh ghi mà sau đó bạn có thể thực thi.
  5. Hoàn tác (và làm lại) nhiều lần, thay vì hoàn thành việc chuyển đổi cũ.
  6. Lịch sử dòng lệnh, lịch sử tìm kiếm.
  7. Toàn bộ ngôn ngữ được nhúng cùng với một loạt các hàm có sẵn, ví dụ getcwd ()
  8. Phù hợp với mô hình mở rộng.
  9. Word hoàn thành thông qua ctrl-P & ctrl-N.
  10. Một trình điều hướng tập tin được xây dựng (một chút lộn xộn, nhưng có thể hữu ích).
  11. Khóa ESC thực sự thoát khỏi các lệnh mà bạn đang cố gắng thoát khỏi thay vì (điên cuồng) chạy chúng như vi.
  12. Khả năng chạy các lệnh trên tất cả các bộ đệm, args hoặc windows thông qua bufdo, argdo & Windo.

Bạn có thể đã đưa ra các lý do "nhiều, rất nhiều" mà bạn đã đề cập trong câu trả lời unix.stackexchange.com/a/425597/85039 ở đây. Điều đó sẽ làm cho câu trả lời này tốt hơn một chút; mặt khác, nó đọc giống như một bình luận hơn là một câu trả lời thực tế
Sergiy Kolodyazhnyy

Điểm lấy. Trả lời cập nhật, mượn từ một câu trả lời liên quan tôi đã thực hiện ngày hôm qua.
Paul T

1

Đây là đoạn trích từ Vim Koans :

Master Wq và chủ Unix

Một bậc thầy Unix cũ đã đến với Master Wq. Tôi đang gặp rắc rối, Wq. Bạn dạy cách của Vim. vi là thánh nhưng Vim thì không; mã của nó ngổn ngang, tính năng của nó bộ nhớ đám đông; nhị phân của nó là rất lớn, hành vi của nó không nhất quán. Đây không phải là cách của Unix. Tôi sợ bạn đánh lừa học sinh của bạn. Những gì có thể được thực hiện?"

Thầy Wq gật đầu. Anh nói đúng, anh nói. Vim Vim bị hỏng. Hãy để chúng tôi sửa chữa nó. Chúng ta bắt đầu chứ?"

Ông chủ Unix cũ đồng ý và mở một cái vỏ. Anh gõ:

$ vi vim.c

Anh bắt đầu viết mã. Master Wq đã xem một lúc rồi hỏi anh ta, bạn đang sử dụng vi nào? Nvi? Vim? Elvis?

Tôi không biết, tôi đã nói chủ Unix. Không có vấn đề gì.

Thầy Wq gật đầu. Ông chủ Unix ngồi sững sờ một lúc và đóng tài liệu của mình chưa được lưu.

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.