2012-12-21 24 views
6

Có đi để hiển thị một danh sách có thứ tự các tất cả các ánh xạ bàn phím môi trường vim hiện tại của tôi, như thế này:hiển thị một bàn phím VIM lập bản đồ ra lệnh

a: append 
b: back one word 
c: ... 
. 
. 
. 

---- Ctrl mappings ---- 
<C-a> (I dont know...) 
. 
. 
. 
<C-p> Default mode for CrtlP 
... 

---- Alt mappings ---- 
... 

này sẽ rất hữu ích cho tôi.

+3

Câu trả lời này có thể giúp http://stackoverflow.com/a/5391019/32090 –

+0

': giúp đỡ index' có vẻ tốt, nhưng nó không hiển thị các phím tắt plugin của tôi. – daniloisr

Trả lời

5

:map:verbose map hiển thị cho bạn danh sách các ánh xạ được xác định trong phiên của bạn, nhưng chúng không được đặt hàng như thế. AFAIK, Vim không cung cấp một định dạng tốt đẹp như vậy: bạn sẽ phải viết một chức năng tùy chỉnh cho điều đó, tôi sợ.

chỉnh sửa

Ngoài ra, lưu ý rằng a, b và bạn bè không phải là "ánh xạ" theo nghĩa là CtrlP của <C-p> là một ánh xạ. :map sẽ không hiển thị chúng.

Vì vậy, ý tưởng của bạn, trong khi thú vị, có lẽ không phải là một cái gì đó có thể được thực hiện với một lớp lót. Bạn có thể lấy thông tin từ :h index, thêm kết quả của :map và cố gắng sắp xếp tất cả điều đó theo thứ tự có ý nghĩa với bạn nhưng nó dường như không phải là một nhiệm vụ tầm thường. Có vẻ như nó phù hợp với kịch bản python/ruby ​​/ php, phải không?

EndEdit

+0

Tôi nghĩ rằng tồn tại một cái gì đó như thế, ý tưởng của tôi là sử dụng nó để giúp những người mới đến VIM. Tôi sẽ cố gắng viết một kịch bản để làm điều này sau. – daniloisr

2

Nếu bạn muốn có một sắp xếp, danh sách tìm kiếm của ánh xạ hiện tại của bạn, trong đó để tìm kiếm chìa khóa không sử dụng, bạn có thể làm như sau:

function! s:ShowMaps() 
    let old_reg = getreg("a")   " save the current content of register a 
    let old_reg_type = getregtype("a") " save the type of the register as well 
try 
    redir @a       " redirect output to register a 
    " Get the list of all key mappings silently, satisfy "Press ENTER to continue" 
    silent map | call feedkeys("\<CR>")  
    redir END       " end output redirection 
    vnew        " new buffer in vertical window 
    put a        " put content of register 
    " Sort on 4th character column which is the key(s) 
    %!sort -k1.4,1.4 
finally        " Execute even if exception is raised 
    call setreg("a", old_reg, old_reg_type) " restore register a 
endtry 
endfunction 
com! ShowMaps call s:ShowMaps()  " Enable :ShowMaps to call the function 

nnoremap \m :ShowMaps<CR>   " Map keys to call the function 

Đây là một mạnh mẽ để tạo ra một phân chia theo chiều dọc với đầu ra được sắp xếp của :maps. Tôi đặt nó trong vimrc của tôi.

Dòng cuối cùng ánh xạ hai phím \m để gọi hàm, thay đổi điều này theo ý muốn.

Lưu ý: Như @romainl đề cập, điều này sẽ không bao gồm các lệnh như i để chèn văn bản

+0

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. - [Từ đánh giá] (/ đánh giá/bài đăng chất lượng thấp/13208001) – bcsb1001

+0

Cảm ơn phản hồi. Tôi đã bao gồm mã. –

Các vấn đề liên quan