Vim: Beheben Sie die Mehrdeutigkeit von Schlüsselzuordnungen in einem bestimmten Puffer, um eine Zeitüberschreitung zu vermeiden

9

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.

    
Dmitry Frank 02.02.2012, 10:20
quelle

6 Antworten

4

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.

    
Dmitry Frank 02.02.2012, 13:31
quelle
2

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.

%Vor%

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.

    
Prince Goulash 02.02.2012 16:34
quelle
0

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:

%Vor%     
Zsolt Botykai 02.02.2012 12:33
quelle
0

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.

    
mihai 07.06.2014 12:17
quelle
0

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.

    
Christian Rondeau 05.01.2017 04:21
quelle
-1

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 .

    
romainl 02.02.2012 12:35
quelle

Tags und Links