Làm thế nào để dễ dàng tìm kiếm trong danh sách các ánh xạ hiện có?


7

Thỉnh thoảng tôi muốn tìm kiếm trong danh sách các ánh xạ hiện tại của tôi. Tôi tìm kiếm các phím được ánh xạ (cái gì /<Space>a?) Hoặc cho một lệnh (Phím nào được ánh xạ trên /MyFunction()<CR>?)

Tôi biết rằng tôi có thể xuất các ánh xạ này bằng :map(hoặc :nmap, :vmapv.v.) nhưng điều này sẽ mở một cửa sổ nơi tôi chỉ có thể cuộn và không sử dụng chế độ tìm kiếm /.

Vì vậy, khi tôi muốn tìm kiếm trong danh sách này, tôi phải sử dụng redirđể đưa kết quả của lệnh vào một tệp mới, sau đó tôi mở trong vim và sử dụng chế độ tìm kiếm:

:redir > foo
:map
:redir END
:e foo

Tôi cảm thấy như công việc này không tự nhiên:

  • Nó sử dụng rất nhiều lệnh so với những gì tôi muốn làm.
  • Nó tạo ra một tập tin mới mà tôi phải xóa.

Vì vậy, câu hỏi của tôi là có một cách tự nhiên hơn để thực hiện tìm kiếm trong các phím hiện được ánh xạ?

Tôi biết rằng tôi có thể tạo một hàm sẽ thực thi các lệnh này và một lệnh tùy chỉnh để dễ dàng gọi hàm, nhưng tôi tự hỏi liệu sẽ không có cách nào thẳng hơn để thực hiện.

Câu trả lời:


3

Một cách rất dễ dàng để tìm kiếm bản đồ sử dụng plugin . Nhưng tin tốt là, bạn có thể đã có nó.

Lệnh là:

:Unite mapping -start-insert

... Sau đó, về cơ bản bạn trực tiếp nhập cụm từ tìm kiếm của bạn và thu hẹp danh sách.


Nếu không có plugin, bạn vẫn có thể thu hẹp kết quả bản đồ của mình bằng cách cung cấp tiền tố của bản đồ và loại của nó. Ví dụ:

:verbose xmap <leader>

... sẽ chỉ hiển thị ánh xạ được xác định cho chế độ trực quan và bắt đầu bằng phím người lãnh đạo. Bạn không bị giới hạn ở một ký tự ở đó (ví dụ: bạn có thể sử dụng xmap <leader>a, v.v.).


Tôi đã nghe nói về plugin này trước đây nhưng chưa bao giờ dùng thử. Tôi sẽ dùng thử! Ngoài ra, đề xuất thứ hai là tốt nhưng không cho phép thực hiện loại tìm kiếm thứ hai, tức là các phím nào được ánh xạ để thực hiện chức năng này.
statox

Thật vậy - bạn có thể làm điều đó với gợi ý thứ 1. Và 'Unite' (và các phần mở rộng của nó) = con dao Vim của Thụy Sĩ :)
VanLaser

1
Ok tôi sẽ xem xét nó một cách chặt chẽ sau đó cảm ơn bạn rất nhiều!
statox

2

:map, :imapVà bạn bè có một lập luận như vậy, thay vì ban hành một lệnh chung chung và sau đó lọc nó, bạn chỉ đơn giản là có thể ban hành một lệnh cụ thể từ get đi:

:imap <CR>

Đó là một cách tuyệt vời để làm điều đó cảm ơn nhưng đối với câu trả lời của VanLaser tôi vẫn có một câu hỏi: điều này không cho phép tôi thực hiện tìm kiếm MyFunctionđể biết các phím nào được ánh xạ để gọi nó.
statox
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.