Phát hiện xem khóa có liên kết với thứ gì đó trong vim không


89

Tôi muốn biết liệu có cách nào để tìm ra một chiếc chìa khóa có thể thực hiện điều gì đó trong vim hay không. Tôi biết rằng tôi có thể sử dụng :mapđể xem các ánh xạ do người dùng xác định, nhưng có thứ gì đó cho nội dung tích hợp sẵn không?

Ví dụ, tôi luôn có CTRL- Wbuộc phải đóng tab, vì tôi nghĩ rằng nó không được sử dụng. Sau nửa năm, tôi phát hiện ra rằng có một số trình tự sử dụng nó, như CTRL- W CTRL- Sđể phân chia cửa sổ, và việc đào tạo lại bản thân là một cơn ác mộng.


4
Nói về sự va chạm ngẫu nhiên của các ánh xạ người dùng định nghĩa, nó thực sự là một thực hành tốt để sử dụng mapleader
derenio

Câu trả lời:


79

Nếu bạn xem câu trả lời được gợi ý bởi Randy Morris, bạn sẽ thấy rằng

:help index 

sẽ cung cấp cho bạn danh sách bạn muốn.


rất hữu dụng!
Thật

40

Để kiểm tra ánh xạ mặc định:

:help index

Đối với các ánh xạ khác được thực hiện bởi người dùng hoặc plugin:

:map
:map!

Từ http://vim.wikia.com/wiki/Mapping_keys_in_Vim_- Hướng dẫn (Phần_1) :

Lệnh đầu tiên hiển thị các bản đồ hoạt động ở chế độ bình thường, trực quan và lựa chọn và người vận hành đang chờ xử lý. Lệnh thứ hai hiển thị các bản đồ hoạt động ở chế độ chèn và dòng lệnh.

Thông thường, đầu ra của các lệnh trên sẽ kéo dài một vài trang. Bạn có thể sử dụng bộ lệnh sau để chuyển hướng đầu ra đến tệp vim_maps.txt:

:redir! > vim_maps.txt
:map
:map!
:redir END

Trừ khi các phiên bản mới hơn của Vim đột nhiên cung cấp một giải pháp thay thế tốt hơn, đây dường như là cách duy nhất để tìm kiếm cả sơ đồ bàn phím được bao gồm và tùy chỉnh. mapcheck(như đã đề cập trong một câu trả lời khác ) cũng chỉ bao gồm keybinds tùy chỉnh. Sự khác biệt chính giữa xuất ra vào một tập tin văn bản và mapcheck là xuất ra vào một tập tin văn bản và / hoặc sử dụng :help indexcho phép bạn /C-wtrong Vim để tìm bất cứ điều gì sử dụngC-w
Zoe

34

Không phải là một câu trả lời đầy đủ, nhưng bạn có thể muốn xem :help map-which-keysdanh sách các khóa mà vim đề xuất bạn sử dụng trong bản đồ tùy chỉnh của mình.

Phần trợ giúp đó có đề xuất về cách biết liệu một khóa cụ thể có được ánh xạ tới một hành động hay không.


19

Sử dụng :map!:mapđể đặt các khóa theo cách thủ công và :help 'char(-combination)'để tìm ra các khóa đã được ánh xạ trong vim out-of-box (/ ngoài các tùy chọn biên dịch cụ thể của bạn). (Hơi lạc đề nhưng vẫn đáng tin cậy (tôi nghĩ): Sử dụng :scriptnamesđể xem tệp nào đã được lấy nguồn theo thứ tự nào.)


Nếu bạn muốn tìm kiếm những phím nào sẽ kích hoạt một lệnh nhất định, bạn có thể thực hiện như sau:: redir keys.txt: map: redir end Sau đó, mở key.txt và tìm kiếm những lệnh bị ràng buộc.
Christian Oudard

18

Tôi đã lướt qua :help indexvà tạo danh sách một số nmapkhóa không sử dụng :

  • Q (chuyển sang chế độ "Ex")
  • Z trừ ZZ, ZQ
  • \
  • <Space>(giống như lở chế độ bình thường; phím lớn nhất và ít sử dụng nhất ở chế độ bình thường)
  • gb, gc, gl, gx, gy, gz
  • gs (ngủ)
  • zp, zq, zu, zy
  • cd, cm, co, cp, cq, cr, cs, cu, cx, cy
  • dc, dm, do, dp, dq, dr, ds, du, dx, dy
  • gA, gB, gC, gG, gK, gL, gM, gO, gS, gX, gY, gZ
  • zB, zI, zJ, zK, zP, zQ, zP, zS, zT, zU, zV, zY, zZ
  • ] a,] b,] e,] g,] h,] j,] k,] l,] n,] o,] q,] r,] t,] u,] v,] w,] x ,] y
  • [a, [b, [e, [g, [h, [j, [k, [l, [n, [o, [q, [r, [t, [u, [v, [w, [x , [y
  • CTRL-G, CTRL-K
  • CTRL- \ a - z (dành riêng cho phần mở rộng)
  • CTRL- \ A - Z (không được sử dụng)

Vui lòng cập nhật / bình luận.


12

Bạn có thể sử dụng mapcheck.: -

Ví dụ, tôi muốn ánh xạ <CR> ,itới gg=Gđể thụt lề một tệp. Để kiểm tra xem đã có một ánh xạ cho<CR> , i

if mapcheck("\<CR>", "I") == "" |echo "no mapping"

... nhưng điều này sẽ không phát hiện nếu ánh xạ là một phần của một chuỗi.


Tôi đã cố gắng kiểm tra xem "o" có bị ràng buộc với một cái gì đó ở chế độ bình thường hay không, như sau: if mapcheck ("o", "N") == "" | echo "không có ánh xạ" nhưng nó lại báo "không có ánh xạ", khi o chắc chắn bị ràng buộc "mở dòng mới". Tôi đang sử dụng nó sai?
K. Norbert

@ K.Norbert: Tôi tin rằng điều này dành cho ánh xạ do người dùng xác định
Moha lạc đà toàn năng
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.