Ich benutze plugin " Buffet ", und es gibt eine lokale-zu-Puffer-Zuordnung " d
" zu löschen Puffer unter dem Cursor.
Ich benutze auch plugun Surround , und es gibt ein globales Mapping " ds
", das bedeutet " Surround löschen ".
Wenn ich also im Fenster des Buffets auf " d
" drücke, wartet Vim eine Sekunde, bevor das Mapping " d
" ausgeführt wird. Ich weiß über &timeoutlen
, aber ich möchte es nicht ändern. Damit möchte ich die Ambiguität der Schlüsselzuordnungen für " d
" im Fenster des Buffets auflösen, um ein Timeout von d
zu vermeiden, das einen Puffer löscht.
Um das Problem zu lösen, möchte ich im Buffet-Fenster alle Mappings, die mit " d
" beginnen, auflösen, außer Buffets eigenen Mappings. Wie kann ich das tun?
P.S. Ich habe über maparg()
und mapcheck()
gelesen, aber sie scheinen leider nicht das zu sein, was ich brauche.
Es scheint, als ob ich die Lösung selbst gefunden habe:
%Vor% Ich hoffte, dass es einen universelleren Ansatz gibt (um wirklich alle Zuordnungen zu entfernen, die mit " d
" beginnen), aber in diesem Moment habe ich es nicht gefunden.
Auch wenn ich herausgefunden habe, wie all diese Mappings zu bekommen sind, kann ich leider unmap <buffer> ds
nicht machen, weil ds
ein globales Mapping ist. Ich bin sicher, dass ich sollte in der Lage sein sollte, die globale Zuordnung für einen Puffer zu deaktivieren. Vim ist großartig, aber nicht perfekt.
Nun, es funktioniert jetzt für mich.
Nachdem die Frage nun "umformuliert" wurde, ist diese Lösung nicht mehr relevant, aber ich werde sie trotzdem veröffentlichen, da ich ein paar Minuten damit verbracht habe.
Hier ist eine Funktion, die die Ausgabe von map <letter>
erfasst und die einzelnen Maps extrahiert. Dann werden alle entfernt.
Beispiel Verwendung: call Unmap("d")
. Dadurch werden alle Zuordnungen gelöscht, die mit d
beginnen und nur die Standardwerte von Vim beibehalten.
Haftungsausschluss: Dies wurde nicht streng getestet. Insbesondere weiß ich nicht, wie portierbar das Zeichen \^@
ist, aber so sieht es auf meinem (Win32) Rechner aus.
Der einfachste Weg ist:
%Vor% Im Allgemeinen können Sie unmap
nicht auf einem Muster basieren.
Wenn Sie einen anderen Schlüssel verwenden möchten (z. B. mit <leader>
, ändern Sie einfach diese Zeile im Plugin:
Diese Frage ist ziemlich alt, aber wenn Sie immer noch interessiert sind, sollten Sie Bufstop ausprobieren.
Dieses Problem wird vom Plugin behoben, Sie können die Taste d drücken, um einen Puffer zu löschen, und Sie erhalten kein Timeout, wenn Sie andere Plugins mit globalen Zuordnungen installieren.
Ein billiger Trick, der für mich funktionierte, war, das timeoutlen
so kurz zu machen, dass es ziemlich augenblicklich wird. Solange Sie nicht mehrere Schlüsselzuordnungen selbst verwenden, werden alle Plugins auf einmal erfasst.
Wir wollen aber nicht, dass diese Einstellung beibehalten wird, also entfernen wir sie jedes Mal, wenn wir den Puffer verlassen.
Fügen Sie dies so hinzu, dass es in Ihrem benutzerdefinierten Puffer ausgeführt wird:
%Vor%Eine ähnliche Technik könnte für einen bestimmten Dateityp oder andere solche "globalen" Einstellungen verwendet werden.
Buffet ist ein sehr junges Plugin, ich glaube nicht, dass es von so vielen Leuten wie Command-T oder NERDTree benutzt wird, so dass Sie nicht viele Antworten bekommen. Der Autor war sehr reaktionsschnell auf die zahlreichen Threads, die er dort erstellt hat. Sie sollten direkt mit ihm Kontakt aufnehmen oder ein Problem mit Buffets github .