2010-03-20 8 views
63

Ich würde gerne wissen, ob es eine Möglichkeit gibt, herauszufinden, ob ein Schlüssel etwas in Vim tut. Ich weiß, dass ich :map verwenden kann, um benutzerdefinierte Zuordnungen zu sehen, aber gibt es etwas für die eingebauten Sachen? W gebunden Tab zu schließen, weil ich dachte, dass es ungenutzt war -Erkennen, ob ein Schlüssel an etwas in Vim gebunden ist

Zum Beispiel habe ich CTRL immer hatte. Nach einem halben Jahr, fand ich heraus, dass es einige Sequenzen sind, die es verwenden, wie CTRL - WCTRL - S das Fenster zu spalten, und es war ein Alptraum mich umschulen.

+4

Apropos versehentliche Kollisionen von benutzerdefinierten Zuordnungen, es ist wirklich eine gute Praxis, [_mapleader_] (http://vimdoc.sourceforge.net/htmldoc/map.html#mapleader) – derenio

Antwort

60

Wenn Sie die vorgeschlagene Antwort von Randy Morris überprüfen Sie, dass

:help index 

Sie die Liste Sie geben finden.

+0

sehr nützlich zu verwenden! Gut zu wissen, dass es einen Ort gibt, an dem man hingehen kann, wenn man nur herumstöbern will, um etwas Neues zu lernen –

27

Keine vollständige Antwort, aber Sie sollten :help map-which-keys für eine Liste der Schlüssel, die Vim empfiehlt Sie in Ihren benutzerdefinierten Karten verwenden möchten.

Dieser Hilfeabschnitt enthält eine Empfehlung, wie Sie feststellen können, ob ein bestimmter Schlüssel einer Aktion zugeordnet ist.

14

Verwenden Sie ": map!" und ": map" für manuell gesetzte Schlüssel und ": help 'char (-combination)'", um herauszufinden, welche Schlüssel bereits in vim out-of-the-box (aus Ihren spezifischen Kompilierungsoptionen) zugeordnet sind. (Ein wenig Off-Topic, aber immer noch regardable (glaube ich): Verwenden Sie. ": Script", um zu sehen, welche Dateien in welcher Reihenfolge übernommen wurden)

Mit freundlichen Grüßen, S.

+0

Wenn Sie nach bestimmten Schlüsseln suchen möchten, die einen bestimmten Befehl auslösen, können Sie Folgendes tun: : redir keys.txt : map : redir end Öffnen Sie dann keys.txt und suchen Sie nach den Befehlen, die gebunden sind. –

27

die Standardzuordnung Um zu überprüfen, :

:help index 

Für andere Zuordnung, die von Benutzern oder Plugin getan wird:

:map 
:map! 

von http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-Tutorial(Part_1):

Die ersten Befehl wird die Karten, die in normalen, visuellen und wählt und Betreiber anhängigen Modus arbeiten. Der zweite Befehl zeigt die Karten an, die im Einfüge- und Befehlszeilenmodus funktionieren.

Die Ausgabe der obigen Befehle erstreckt sich normalerweise über mehrere Seiten. Sie können die folgenden Befehle verwenden, um die Ausgabe zu die vim_maps.txt Datei zu umleiten:

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

können Sie mapcheck verwenden: -.

Zum Beispiel wollte ich zur Karte <CR> ,i eingerückt eine Datei. Um zu überprüfen, ob es eine Zuordnung für <CR> , i

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

schon ist ...Dies erkennt jedoch nicht, ob das Mapping Teil einer Sequenz ist.

+0

Ich habe versucht, im normalen Modus zu prüfen, ob "o" an etwas gebunden ist: mapcheck ("o", "N") == "" | echo "no mapping" aber es meldet "no mapping", wenn o definitiv an "open new line" gebunden ist. Benutze ich es falsch? –

+0

@ K.Norbert: Ich glaube das für benutzerdefinierte Zuordnungen –

8

I blätterte :help index und machte eine Liste von einigen der nicht verwendeten nmap Schlüssel:

  • Q (Schalter auf "Ex" Modus)
  • Z außer ZZ, ZQ
  • \
  • gb, gc, gl, gx, gy, gz
  • zp, zq, zu, zy
  • cd, cm, co, cp, CQ, cr, cs, cu, cx, cy
  • dc, dm, tun, dp, dq, dr, ds, du, dx, dy
  • gA, gB, gC, gG, Gk, gL, gM Gehe hin, gS, Gx, Gy, gZ
  • z, 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 (reserviert für Erweiterungen)
  • CTRL- \ A - Z (nicht verwendet)

Bitte aktualisieren Sie/kommentieren.