Trong hướng dẫn toàn diện này, tôi sẽ giải thích cách ánh xạ các khóa trong Vim để tự động hóa các thao tác. Từ việc tạo sơ đồ khóa cơ bản đến ánh xạ khóa nâng cao, cùng với các quy trình biến chúng thành vĩnh viễn và xóa chúng.
- Cú pháp
- Đối số đặc biệt của Vim
- Tạo sơ đồ bàn phím cơ bản
- Liệt kê các sơ đồ bàn phím
- Tạo sơ đồ bàn phím vĩnh viễn
- Tránh đệ quy
- Tạo sơ đồ bàn phím dành riêng cho chế độ
- Cách lập bản đồ sự kiện chuột
- Cách lập bản đồ với Chìa khóa lãnh đạo trong Vim
- Cách ánh xạ hàm Vimscript
- Cách ánh xạ các lệnh bên ngoài trong Vim
- Cách xóa sơ đồ bàn phím trong Vim
- Bảng cheat ánh xạ khóa Vim
- Phần kết luận
Cú pháp
Để ánh xạ khóa trong Vim, cú pháp sau được sử dụng:
Trong cú pháp trên:
|
nmap, imap, vmap, xmap, cmap hoặc omap | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<đối số>* | *Trong cú pháp trên, phần Đối số đặc biệt của VimĐối số đặc biệt của Vim là các thẻ được sử dụng để cung cấp chức năng bổ sung cho sơ đồ bàn phím. Các đối số này xuất hiện sau lệnh :map và trước {rhs} và {lhs}. Ví dụ: để tạo một bộ đệm bản đồ cụ thể, hãy sử dụng đối số đặc biệt theo cách sau: :bản đồ < đệm > < C-a > ggVG
Các ký hiệu khóa đặc biệt của Vim được đề cập trong hình ảnh sau đây.
Ví dụ: nếu bạn muốn sử dụng phím cách trong ánh xạ khóa, ký hiệu Tạo sơ đồ bàn phím cơ bản trong VimHãy hiểu ánh xạ khóa Vim bằng một ví dụ cơ bản. Tôi muốn ánh xạ lệnh chọn tất cả các dòng ( ggVG ) ĐẾN ctrl+a phím. Để ánh xạ các phím ctrl+a, tôi sẽ chạy lệnh sau trong Vim. :bản đồ < C-a > ggVG Đây, Tương tự, để ánh xạ chức năng chuyển đổi số dòng bằng F1 sử dụng chính: :bản đồ < F1 > :đánh số !Bây giờ, khi bạn nhấn phím F1, số dòng sẽ được bật và nhấn lại sẽ tắt nó. Lưu ý rằng phương pháp này sẽ chỉ ánh xạ các khóa trong bộ đệm hiện tại và sẽ bị xóa khi đóng bộ đệm. Liệt kê các sơ đồ bàn phímĐể liệt kê tất cả các ánh xạ chính của các chế độ thông thường, hình ảnh và chế độ chờ vận hành, hãy sử dụng lệnh :map. :bản đồĐể liệt kê ánh xạ khóa của chèn Và dòng lệnh chế độ, hãy sử dụng :map! Yêu cầu. :bản đồ !Để liệt kê ánh xạ phím của một chế độ cụ thể, chỉ cần nhập chữ cái đầu tiên của chế độ trước từ khóa bản đồ.
Hơn nữa, để liệt kê tất cả các bản đồ bao gồm bản đồ plugin có đường dẫn, hãy sử dụng :bản đồ dài dòng yêu cầu. :bản đồ dài dòng Đối với một khóa cụ thể, chỉ cần đề cập đến khóa đó trong lệnh ( :bản đồ chi tiết Tạo sơ đồ bàn phím vĩnh viễnCác sơ đồ bàn phím được đề cập ở phần trên sẽ chỉ ánh xạ các khóa trong bộ đệm hiện tại. Để ánh xạ khóa Vim vĩnh viễn, bản đồ phải được đặt trong tệp vimrc.
Lưu ý rằng trong khi đặt sơ đồ bàn phím vào vimrc tập tin, không thêm dấu hai chấm (:) trước bản đồ yêu cầu. Sau khi đặt sơ đồ bàn phím vào vimrc tập tin, lưu và thoát nó bằng lệnh :wq hoặc sử dụng phím shift+zz. Các sơ đồ bàn phím được đặt trong vimrc tệp sẽ có tính chung và có thể được sử dụng trong tất cả các phiên Vim. Tuy nhiên, một số sơ đồ bàn phím nhất định có thể tạm thời bị vô hiệu hóa nếu chúng ảnh hưởng đến công việc trong phiên hiện tại, hãy xem phần Cách xóa sơ đồ bàn phím trong Vim bên dưới. Các vimrc là tệp cài đặt của Vim chứa nhiều lệnh và cài đặt khác nhau. Nó có mặt trong /usr/share/vim/ thư mục trên macOS và /etc/vim trên Linux. Điều quan trọng cần lưu ý là vimrc các tệp trong thư mục được đề cập là các tệp dành riêng cho hệ thống. Bạn cũng có thể chỉnh sửa các tệp này để ánh xạ khóa, nhưng tôi khuyên bạn nên tạo một tệp dành riêng cho người dùng. vimrc tập tin trong thư mục chính. Tránh đệ quyTrước khi tiếp tục, điều quan trọng là phải tìm hiểu về đệ quy trong ánh xạ khóa Vim. Nhược điểm của nó và cách phòng tránh. Nó có thể được hiểu thông qua việc sử dụng một ví dụ. :bản đồ đ 3jddTrong ví dụ trên, tôi đã ánh xạ đ phím để di chuyển xuống 3 dòng và xóa dòng dưới con trỏ. Bây giờ, khi tôi nhấn nút đ , nó sẽ cố gắng thực thi bản đồ 3jdd . Vim sẽ giải thích đ ra lệnh dưới dạng bản đồ và thực hiện bản đồ nhiều lần, như minh họa trong hình ảnh sau đây.
Ghi chú : Đệ quy có thể đóng băng trình soạn thảo Vim. Để giải phóng nó, nhấn ctrl+c phím. Để tránh đệ quy, hãy thay thế bản đồ từ khóa với sơ đồ , Ở đâu ' không làm lại ' có nghĩa không đệ quy . Tôi sẽ thay thế bản đồ từ khóa với sơ đồ để sửa lỗi đệ quy trong sơ đồ bàn phím trên. :noremap đ 3jddTôi sẽ khuyên bạn nên sử dụng sơ đồ thay vì bản đồ để tránh vô tình tạo ánh xạ đệ quy. Tạo sơ đồ bàn phím dành riêng cho chế độVim đã làm cho việc ánh xạ phím trở nên linh hoạt đến mức ngay cả sơ đồ bàn phím của một chế độ cụ thể cũng có thể được tạo khá dễ dàng. Ví dụ: nếu bạn đã tạo sơ đồ bàn phím cho chế độ chèn bằng cách sử dụng F1 key, sau đó bạn có thể ánh xạ tương tự F1 ở chế độ khác để thực hiện thao tác hoàn toàn mới. Trong ví dụ sau, tôi đã ánh xạ F1 phím để xóa 3 dòng trong Bình thường chế độ và kéo 3 dòng trong chèn cách thức. :nmap < F1 > 3ngày:imap < F1 > < C-t > Bản đồ đầu tiên xóa ba dòng ở chế độ bình thường khi nhấn phím F1, trong khi bản đồ thứ hai thêm một vết lõm vào dòng hiện tại khi ở chế độ chèn bằng cùng một phím. Bây giờ, hãy hiểu ánh xạ ở từng chế độ. Ánh xạ chế độ bình thườngĐể áp dụng bản đồ ở chế độ bình thường, chỉ sử dụng nmap từ khóa. Ví dụ: để sao chép tất cả các dòng trong một tệp bằng cách sử dụng ctrl+c phím, tôi sẽ sử dụng lệnh sau. :nmap < C-c > ggVGyNhư đã thảo luận trước đó, cách tốt nhất là sử dụng phương pháp không đệ quy để ánh xạ khóa, do đó, tôi sẽ thay thế phương thức nmap với nnoremap từ khóa. :noremap < C-c > ggVGyĐặt nó không có dấu hai chấm (:) trong vimrc tập tin để biến nó thành một sơ đồ bàn phím vĩnh viễn. tôi sẽ sử dụng sơ đồ thay cho bản đồ trong ví dụ sau. Chèn bản đồ chế độĐể ánh xạ các phím cho chế độ chèn, chỉ cần sử dụng Tôi thay vì N . Ví dụ: ở chế độ chèn, ctrl+p Và ctrl+n các phím được sử dụng để tự động hoàn thành từ dựa trên kết quả khớp ngược và xuôi tương ứng. Để lập bản đồ ctrl+p phím bằng phím tab, tôi sẽ sử dụng lệnh sau. :inoremap < Chuyển hướng > < C-p > Quan trọng hơn, nếu bạn muốn lập bản đồ chế độ chờ xử lý của nhà điều hành các lệnh trong chế độ chèn , sau đó bạn cần chèn Bây giờ, khi tôi nhấn nút ctrl+x phím, nó sẽ in 3ddi lệnh thay vì thực hiện nó.
Để khắc phục, tôi sẽ chèn Bây giờ, lệnh sẽ thực thi việc giữ tôi ở chế độ chèn. Nhiều máy tính xách tay mini thiếu Thoát phím quan trọng để thoát khỏi chế độ hiện tại. Vì vậy, để lập bản đồ Thoát để thoát chế độ chèn, có thể sử dụng ánh xạ phím. Trong ví dụ sau, tôi đang sử dụng bán tại phím để thoát về chế độ bình thường. :inoremap cũ < Thoát >Khi bạn nhấn nhanh nút bán tại các phím, chế độ chèn sẽ được thoát, do đó sẽ chuyển sang chế độ bình thường. Ánh xạ chế độ trực quanChế độ trực quan là một chế độ rất quan trọng để chọn văn bản trong trình soạn thảo Vim. Ngoài lựa chọn cơ bản, chế độ trực quan còn có các chế độ khác nhau như đường trực quan và chế độ khối trực quan. Ở chế độ trực quan, dấu ngã (~) được sử dụng để chuyển đổi trường hợp. Để sử dụng dấu ngã (~), bạn phải nhấn hai phím (shift+~) . Trong ví dụ sau, tôi đang ánh xạ phím c vào chế độ trực quan để chọn một từ dưới con trỏ và thay đổi kiểu chữ của nó. :vnoremap c iw~Bây giờ, nhấn v để vào chế độ trực quan và nhấn phím c để chuyển từ bên dưới con trỏ như minh họa trong ảnh GIF sau.
Ánh xạ chế độ dòng lệnhNhiều lệnh thiết yếu của Vim chỉ hoạt động ở chế độ dòng lệnh. Chẳng hạn như, để lưu tập tin :TRONG lệnh được sử dụng tương tự để lưu và thoát :wq lệnh được sử dụng. Tất cả các tab và thao tác phân chia cũng được thực hiện ở chế độ dòng lệnh. Ví dụ: để tạo một tab mới, : cấp dưới lệnh được sử dụng. Vâng, để nhanh chóng tạo một tab, ctrl+t phím là đủ. :cnoremap < C-t > chủ thể < CR >Bây giờ, nhấn dấu hai chấm (:) để vào chế độ dòng lệnh và sau đó ctrl+t để mở một tab mới; nó nhanh hơn nhiều so với việc gõ toàn bộ chủ thể lệnh và Trở lại chìa khóa.
Tạo lệnh tùy chỉnh Vim Bây giờ, hãy vào chế độ lệnh và thực hiện lệnh :Mycmd yêu cầu. Ánh xạ chế độ chờ xử lý của toán tửChế độ chờ vận hành là chế độ trong đó Vim đợi lệnh chuyển động sau khi nhấn phím vận hành. Các toán tử phổ biến là y, d và c. Ví dụ: để xóa dòng hiện tại và 3 dòng tiếp theo, bạn sẽ sử dụng toán tử d với 3j chuyển động (d3j). Bạn không thể nhấn đồng thời các phím này để đạt được thao tác mong muốn. Chế độ này thường được sử dụng để lập bản đồ chuyển động. Hãy lập bản đồ một chuyển động sẽ chọn dòng hiện tại và 3 dòng theo sau nó. :onoremap < F2 > 3jBây giờ, để kéo dòng hiện tại và 3 dòng tiếp theo, hãy sử dụng lệnh theF2 các phím, theo cách tương tự, d toán tử cũng có thể được áp dụng. Một điều quan trọng khác cần ghi nhớ là nếu bạn thêm số đếm vào chuyển động được ánh xạ nêu trên, giả sử 2 Cách lập bản đồ sự kiện chuộtMặc dù Vim là trình soạn thảo văn bản tập trung vào bàn phím có thể tùy chỉnh hoàn toàn, nhưng tính khả dụng của chức năng chuột khiến nó thậm chí còn tốt hơn. Ngoài các phím bàn phím thông thường, tất cả các sự kiện chuột cũng có thể được ánh xạ trong Vim. Ví dụ: nếu bạn muốn ánh xạ nhấp đúp chuột phải và nhấp đúp chuột trái để chuyển các điểm tương ứng về phía trước và phía sau, hãy sử dụng ánh xạ sau. :noremap < 2 -Chuột phải > ] `:noremap < 2 -Chuột trái > [ ` Các sự kiện chuột khác có thể được ánh xạ được đưa ra trong bảng sau.
Cách lập bản đồ bằng Chìa khóa lãnh đạo trong VimÁnh xạ Vim không đầy đủ nếu không có phím dẫn đầu. Khóa dẫn đầu là khóa mặc định có thể được sử dụng để ánh xạ các khóa, ngay cả khi chúng được ánh xạ để thực hiện một số tác vụ khác. Ví dụ: nếu bạn đã lập bản đồ d phím để xóa tất cả các dòng, sau đó chúng ta có thể ánh xạ cùng một phím để chỉ xóa 5 dòng bằng phím trưởng. Dành cho những người chưa quen với phím lãnh đạo Vim. Đó là một khóa có tiền tố là một khóa hoặc bộ khóa khác để ánh xạ các lệnh hoặc thao tác. Khóa dẫn đầu mặc định của Vim là dấu gạch chéo ngược (\), nhưng có thể tùy chỉnh. Ví dụ, đ lệnh dùng để xóa dòng dưới con trỏ. Nếu bạn muốn lập bản đồ đ lệnh xóa tất cả các dòng trong tệp, sau đó bạn có thể sử dụng phím lãnh đạo. :noremap < Lãnh đạo > đ ggVGdBây giờ, bất cứ khi nào bạn nhấn nút \dd key, tất cả các dòng trong tập tin sẽ bị xóa. Bạn có thể gán phím lãnh đạo Vim làm phím điều khiển trên Windows hoặc phím lệnh trong macOS. Cách ánh xạ hàm VimscriptTrình soạn thảo Vim không bị giới hạn trong các lệnh hoặc thao tác. Có toàn bộ ngôn ngữ lập trình xung quanh Vim để tạo chức năng tùy chỉnh được gọi là Vimscript. Bạn có thể dễ dàng tạo tập lệnh hoặc hàm và ánh xạ nó tới một khóa. Ví dụ: hãy tạo một hàm cho phép các cài đặt như số dòng, chức năng chuột và độ rộng văn bản. chức năng Cài đặt của tôi ( )bộ con số bộ chuột = một bộ chiều rộng văn bản = 80 chức năng cuối cùng Đặt chức năng này vào tệp vimrc. Hãy ánh xạ hàm này với phím đầu và phím s. tôi sẽ sử dụng :noremap < Lãnh đạo > s :gọi Cài đặt của tôi ( ) < CR >Bây giờ, bất cứ khi nào bạn nhấn nút \S các phím, hàm sẽ được gọi và mọi chức năng bên trong hàm sẽ thực thi. Ghi chú : Chữ cái đầu tiên của tên hàm phải luôn được viết hoa trong khi tạo hàm tùy chỉnh trong Vim. Cách ánh xạ các lệnh bên ngoài trong VimCác lệnh bên ngoài cũng có thể được ánh xạ trong Vim. Các lệnh bên ngoài đề cập đến các lệnh Linux hoặc Unix. Ví dụ: nếu bạn muốn ánh xạ bên ngoài loại lệnh sắp xếp tất cả các dòng trong bộ đệm hiện tại vào F1 chìa khóa, sử dụng lệnh sau. :noremap < F1 > : %! loại < CR >Theo cách tương tự, nếu bạn đang viết một tệp tập lệnh và làm cho nó có thể thực thi được mà không cần rời khỏi phiên Vim, bạn có thể sử dụng lệnh chmod ra lệnh nội bộ. Ví dụ: để làm cho tệp hiện tại có thể thực thi được, bạn có thể thực thi lệnh :!chmod +x % ở Vim. Nếu bạn thường xuyên thực hiện tác vụ này thì chỉ cần ánh xạ một phím tới nó. :noremap < F1 > : ! chmod +x %Trong Vim, bất kỳ lệnh bên ngoài nào cũng có thể được sử dụng cùng với dấu chấm than (!). Cách xóa sơ đồ bàn phím trong VimĐể xóa sơ đồ bàn phím trong Vim, trước tiên hãy xác định vị trí nó được xác định. Như đã thảo luận trước đó, sơ đồ bàn phím có thể ở dạng đệm cục bộ và cố định. Nếu sơ đồ bàn phím là cố định và được đặt trong tệp vimrc thì chỉ cần xóa chúng khỏi tệp sẽ hủy ánh xạ các khóa. Nếu việc ánh xạ được thực hiện trong bộ đệm hiện tại thì chúng có thể được loại bỏ bằng cách sử dụng :unmap hoặc :unmap! lệnh.
Ví dụ, để loại bỏ
Để xóa tất cả bản đồ trong bộ đệm hiện tại, hãy sử dụng :mapclear yêu cầu. :mapclearLệnh trên sẽ xóa tất cả các sơ đồ bàn phím ở chế độ bình thường, trực quan, chọn hoặc vận hành. Để xóa tất cả các sơ đồ bàn phím của chế độ chèn và dòng lệnh, hãy sử dụng: :mapclear ! Lưu ý rằng các lệnh Vim mặc định không thể rõ ràng, tuy nhiên, có thể tắt lệnh này bằng cách sử dụng lệnh :unmap lệnh với dd sẽ không còn hoạt động trong bộ đệm hiện tại nữa. Sử dụng phương pháp này, mọi sơ đồ bàn phím đều có thể bị tắt đối với phiên hiện tại. Bảng cheat ánh xạ khóa VimHình ảnh sau đây cung cấp danh sách tất cả các lệnh và chế độ cụ thể của chúng để tham khảo.
Phần kết luậnÁnh xạ khóa Vim là một cách thuận tiện để tự động hóa các tác vụ của bạn, liên kết phím, lệnh và các hoạt động khác được sử dụng thường xuyên. Đây là một chủ đề đa dạng và trong hướng dẫn này, tôi đã đề cập đến tất cả các khía cạnh chính liên quan đến ánh xạ khóa trong Vim. Từ cú pháp chung đến tạo sơ đồ bàn phím cơ bản và tất cả các cách để ánh xạ các hàm Vimscript nâng cao và các lệnh bên ngoài. Để tìm hiểu thêm về ánh xạ khóa Vim, hãy sử dụng :trợ giúp ánh xạ khóa lệnh trong Vim. |