Wie kann ich einfach in der Liste der vorhandenen Zuordnungen suchen?

7

Von Zeit zu Zeit möchte ich in der Liste meiner aktuellen Zuordnungen suchen. Ich suche entweder nach zugeordneten Schlüsseln (was /<Space>amacht das?) Oder nach einem Befehl (Welche Schlüssel sind zugeordnet /MyFunction()<CR>?)

Ich weiß, dass ich diese Zuordnungen mit :map(oder :nmap, :vmapetc ...) ausgeben kann , aber dies öffnet ein Fenster, in dem ich nur scrollen und nicht den Suchmodus verwenden kann /.

Wenn ich also in dieser Liste suchen möchte, muss ich redirdas Ergebnis des Befehls in eine neue Datei einfügen, die ich dann in vim öffne und den Suchmodus verwende:

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

Ich denke, dieser Workflow ist nicht natürlich:

  • Es verwendet viele Befehle im Vergleich zu dem, was ich tun möchte.
  • Es wird eine neue Datei erstellt, die ich löschen muss.

Meine Frage ist also, ob es eine natürlichere Möglichkeit gibt, eine Suche in den aktuell zugeordneten Schlüsseln durchzuführen.

Ich weiß, dass ich eine Funktion erstellen könnte, die diese Befehle ausführt, und einen benutzerdefinierten Befehl, um die Funktion einfach aufzurufen, aber ich habe mich gefragt, ob es keinen einfacheren Weg gibt, dies zu tun.

statox
quelle

Antworten:

3

Eine sehr einfache Möglichkeit, nach einem Mapping zu suchen, ist ein Plugin . Aber die gute Nachricht ist, dass Sie es wahrscheinlich schon haben.

Der Befehl lautet:

:Unite mapping -start-insert

... dann geben Sie Ihren Suchbegriff grundsätzlich direkt ein und schränken die Liste ein.


Ohne Plugin können Sie Ihre Kartenergebnisse dennoch eingrenzen, indem Sie das Präfix der Karte und ihren Typ angeben. Zum Beispiel:

:verbose xmap <leader>

... zeigt die definierten Zuordnungen nur für den visuellen Modus an, die mit der Führungstaste beginnen. Sie sind dort nicht auf ein Zeichen beschränkt (z. B. können Sie verwenden xmap <leader>aund so weiter).

VanLaser
quelle
Ich habe schon einmal von diesem Plugin gehört, es aber noch nie ausprobiert. Ich werde es versuchen, danke! Auch der zweite Vorschlag ist nett, erlaubt aber nicht die zweite Art der Suche, dh welche Tasten zugeordnet sind, um diese Funktion auszuführen.
Statox
In der Tat - das können Sie mit dem ersten Vorschlag tun. Und 'Unite' (und seine Erweiterungen) = das Schweizer Messer der Vim-Plugins :)
VanLaser
1
Ok, ich werde es mir genau ansehen, dann vielen Dank!
Statox
2

:map, :imapUnd Freunde nehmen ein Argument so, statt einen allgemeinen Befehl ausgibt und dann Filtern Sie einfach einen bestimmten Befehl vom get go ausgeben könnte:

:imap <CR>
romainl
quelle
Das ist eine großartige Möglichkeit, danke, aber was die VanLaser-Antwort betrifft, habe ich immer noch eine Frage: Dadurch kann ich nicht suchen, um MyFunctionzu wissen, welche Tasten zugeordnet sind, um sie aufzurufen.
Statox