Giải thích các chế độ của Vim Editor

theanh

Administrator
Nhân viên
Cho đến nay, trong các hướng dẫn tập trung vào Vim, chúng tôi đã thảo luận về tính năng Modeline của trình soạn thảo cũng như cách mở rộng bộ tính năng của Vim bằng cách sử dụng các plugin. Tuy nhiên, như chúng ta đều biết, Vim cung cấp rất nhiều tính năng tích hợp; vì vậy, để thảo luận sâu hơn, trong hướng dẫn này, chúng ta sẽ thảo luận về các chế độ có sẵn mà trình soạn thảo có thể được khởi chạy.
Mã:
Nhưng trước khi thực hiện, vui lòng lưu ý rằng tất cả các ví dụ, lệnh và hướng dẫn được đề cập trong hướng dẫn này đều đã được thử nghiệm trên Ubuntu 14.04 và phiên bản Vim mà chúng tôi sử dụng là 7.4.
Để hiểu đúng các chế độ Vim đã đề cập ở trên, trước tiên bạn phải hiểu một khía cạnh quan trọng của quy trình khởi tạo trình soạn thảo.

Vimrc hệ thống và cục bộ​

Khía cạnh được đề cập là: khi Vim được khởi chạy, trình soạn thảo sẽ tìm kiếm tệp 'vimrc' ở cấp hệ thống để thực hiện khởi tạo mặc định trên toàn hệ thống.

Tệp này thường nằm ở đường dẫn $VIM/vimrc trên hệ thống của bạn, nhưng nếu không phải vậy, bạn có thể tìm vị trí chính xác bằng cách chạy lệnh :version bên trong Vim. Ví dụ, trong trường hợp của tôi, đây là đoạn trích có liên quan đến đầu ra mà lệnh tạo ra:
Mã:
...
...
...
[B]tệp vimrc hệ thống: "$VIM/vimrc"[/b]
tệp vimrc người dùng: "$HOME/.vimrc"
tệp vimrc người dùng thứ 2: "~/.vim/vimrc"
tệp exrc người dùng: "$HOME/.exrc"
[B]giải pháp dự phòng cho $VIM: "/usr/share/vim"[/b]
...
...
...
Vì vậy, tệp 'vimrc' của hệ thống thực sự nằm tại$VIM/vimrc, nhưng tôi đã kiểm tra rằng biến môi trường $VIM không được đặt trên máy của mình. Vì vậy, trong trường hợp đó - như bạn có thể thấy trong đầu ra ở trên - có một giá trị dự phòng cho $VIM, trong trường hợp của tôi là /usr/share/vim. Khi tôi thử tìm kiếm 'vimrc' tại đường dẫn này, tôi thấy tệp có mặt. Vì vậy, đó là vimrc hệ thống của tôi, - như tôi đã đề cập trước đó - được đọc khi Vim được khởi chạy.

Sau khi vimrc hệ thống này được phân tích cú pháp, trình soạn thảo sẽ tìm kiếm tệp 'vimrc' dành riêng cho người dùng (hoặc cục bộ). thứ tự tìm kiếmcho vimrc cục bộ là: biến môi trường VIMINIT, $HOME/.vimrc, biến môi trường EXINIT và một tệp có tên 'exrc'. Thông thường, đó là $HOME/.vimrc hoặc ~/.vimrc tồn tại và được coi là vimrc cục bộ.

Chúng ta đang nói đến khả năng tương thích nào​

Khi chúng ta đang thảo luận về các chế độ tương thích và không tương thích của Vim, điều đáng để biết là các chế độ này bật và tắt loại khả năng tương thích nào. Đối với điều này, trước tiên chúng ta nên biết rằng Vim là dạng viết tắt của Vi IMproved, và như tên đầy đủ cho thấy, trình soạn thảo này là phiên bản cải tiến của trình soạn thảo Vi.

Cải tiến có nghĩa là bộ tính năng mà Vim cung cấp lớn hơn bộ tính năng của Vi. Để hiểu rõ hơn về sự khác biệt giữa hai trình soạn thảo, hãy truy cập tại đây.

Vì vậy, khi thảo luận về các chế độ tương thích và không tương thích của Vim, khả năng tương thích mà chúng ta đang nói đến là khả năng tương thích của Vim với Vi. Khi chạy ở chế độ tương thích, hầu hết các cải tiến và nâng cao của Vimget đều bị vô hiệu hóa. Tuy nhiên, hãy nhớ rằng ở chế độ này, Vim không chỉ mô phỏng Vi - về cơ bản, chế độ nàythiết lập một sốtùy chọn mặc định theo cách trình soạn thảo Vi hoạt động.

Không cần phải nói, chế độ nocompatible khiến Vim hoạt động mà không tương thích với Vi, khiến mọi cải tiến/tính năng/nâng cao của nó đều khả dụng với người dùng.

Làm thế nào để bật/tắt các chế độ này?​

Hãy thử chạy lệnh :help compatible trong Vim và bạn sẽ thấy cú pháp sau:
Mã:
'compatible' 'cp' boolean ([B]mặc định bật[/b], [B]tắt khi tìm thấy tệp |vimrc| hoặc |gvimrc|[/b]
[B][/b])
Vì vậy, mô tả cho biết chế độ tương thích được BẬT theo mặc định, nhưng bị TẮT khi Đã tìm thấy tệp vimrc. Nhưng chúng ta đang nói về vimrc nào? Câu trả lời là vimrc cục bộ. Đi sâu vào chi tiết mà lệnh :help compatible cung cấp và bạn sẽ tìm thấy dòng sau, điều này sẽ giúp mọi thứ rõ ràng hơn:
Mã:
Thực tế, điều này có nghĩa là khi tệp |vimrc| hoặc |gvimrc| tồn tại, Vim sẽ sử dụng các giá trị mặc định của Vim, nếu không, nó sẽ sử dụng các giá trị mặc định của Vi. ([I][B]Lưu ý: Điều này không xảy ra đối với tệp vimrc hoặc gvimrc trên toàn hệ thống, cũng không xảy ra đối với tệp được cung cấp với đối số |-u|[/b][/I]).
Vì vậy, điều thực sự xảy ra là, bất cứ khi nào Vim được khởi chạy, đầu tiên nó sẽ phân tích tệp vimrc của hệ thống - tại thời điểm này, chế độ tương thích được BẬT theo mặc định. Bây giờ, bất cứ khi nào tìm thấy vimrc của người dùng (hoặc cục bộ), chế độ không tương thích sẽ được bật. Lệnh :help compatible-default làm rõ điều này:
Mã:
Khi Vim khởi động, tùy chọn 'tương thích' sẽ được bật. Tùy chọn này sẽ được sử dụng khi Vim bắt đầu quá trình khởi tạo của nó. Nhưng ngay khi tìm thấy tệp vimrc của người dùng hoặc tệp vimrc trong thư mục hiện tại hoặc biến môi trường "VIMINIT" được đặt, nó sẽ được đặt thành 'nocompatible'.
Trong trường hợp bạn muốn ghi đè hành vi mặc định và bật chế độ nocompatible khi trình soạn thảo bắt đầu phân tích tệp vimrc của hệ thống, bạn có thể thực hiện việc này bằng cách thêm lệnh sau vào tệp đó khi bắt đầu:
Mã:
:set nocompatible

Các chi tiết hữu ích khác​

Sau đây là một số chi tiết hữu ích hơn về các chế độ này:
Mã:
Nhưng có một tác dụng phụ khi đặt hoặc đặt lại 'compatible' tại thời điểm tìm thấy tệp .vimrc: Các ánh xạ được diễn giải ngay khi chúng được gặp. Điều này tạo nên sự khác biệt khi sử dụng những thứ như "". Nếu các ánh xạ phụ thuộc vào một giá trị nhất định của 'tương thích', hãy đặt hoặc đặt lại giá trị đó trước khi 
đưa ra ánh xạ. 

Có thể ghi đè hành vi trên theo những cách sau: 
- Nếu tham số dòng lệnh "-N", 'nocompatible' sẽ được sử dụng, ngay cả khi không có tệp vimrc nào tồn tại. 
- Nếu tham số dòng lệnh "-C", 'compatible' sẽ được sử dụng, ngay cả khi tệp vimrc nào tồn tại. 
- Nếu tham số "-u {vimrc}" được sử dụng, 'compatible' sẽ được sử dụng. 
- Khi tên của tệp thực thi kết thúc bằng "ex", thì điều này hoạt động giống như tham số "-C" đã được đưa ra: 'compatible' sẽ được sử dụng, ngay cả khi tệp vimrc nào tồn tại. Điều này được thực hiện để làm cho Vim hoạt động như "ex", khi nó được bắt đầu bằng "ex".
Đồng ý, khả năng là bạn không thấy mình trong tình huống mà bạn sẽ phải bật chế độ tương thích với Vi của Vim, nhưng điều đó không có nghĩa là bạn không biết về quá trình khởi tạo của trình soạn thảo. Sau cùng, bạn không bao giờ biết khi nào kiến thức này có thể giúp ích cho bạn.
 
Back
Bên trên