2012-12-21 16 views
6

Gibt es weg eine geordnete Liste von alle Tastaturbelegungen meiner aktuellen vim Umgebung zu zeigen, wie folgt aus:Anzeige eine geordnete VIM Tastaturbelegung

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

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

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

Das ist für mich sehr nützlich sein wird.

+3

Diese Antwort kann helfen http://stackoverflow.com/a/5391019/32090 –

+0

': help index' scheint gut, aber es zeigt nicht meine Plugins Shortcuts. – daniloisr

Antwort

5

:map und :verbose map zeigen Ihnen eine Liste der Mappings in Ihrer Sitzung definiert, aber sie sind nicht so geordnet. AFAIK, Vim bietet keine so schöne Formatierung: Dafür musst du eine eigene Funktion schreiben, fürchte ich.

bearbeiten

Beachten Sie auch, dass a, b und Freunde sind nicht "Mappings" in dem Sinne, dass CtrlP der <C-p> eine Abbildung ist. :map zeigt sie überhaupt nicht an.

So ist Ihre Idee, obwohl interessant, wahrscheinlich nicht etwas, das mit einem einzigen Liner getan werden kann. Sie könnten Informationen von :h index, fügen Sie das Ergebnis von :map und versuchen, alles in einer Reihenfolge, die für Sie sinnvoll, aber es scheint nicht eine triviale Aufgabe zu arrangieren. Es klingt wie eine perfekte Passung für ein Python/Ruby/PHP-Skript, oder?

EndEdit

+0

Ich dachte, dass so etwas existiert, meine Idee ist es, den VIM-Neulingen zu helfen. Ich werde versuchen, ein Skript zu schreiben, um dies später zu tun. – daniloisr

2

Wenn Sie eine sortierte, durchsuchbare Liste Ihrer aktuellen Zuordnungen wollen, in denen für nicht genutzte Schlüssel zu suchen, können Sie folgendes tun:

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 

Dies ist eine robuste Funktion zum Erstellen einer vertikalen Teilung mit der sortierten Ausgabe von :maps. Ich lege es in meine .

Die letzte Zeile ordnet die beiden Tasten \m die Funktion aufrufen, dies ändern, wie Sie möchten.

Hinweis: Wie @romainl erwähnt, wird dies keine Befehle wie umfassen i Text einfügen

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/13208001) – bcsb1001

+0

Danke für die Rückmeldung. Ich habe jetzt den Code aufgenommen. –