Wie können Sie keine Zeitüberschreitung für eine bestimmte Neuzuordnung festlegen?


7

Die Frage ergibt sich aus einem Problem bei der Verwendung einer riesigen neu zugeordneten Konfiguration, sodass das bépo- Layout zumindest für Befehle zum Drücken einer einzelnen Taste praktisch dem QWERTY im normalen Modus entspricht.

Wenn Sie Text im visuellen Auswahlmodus auswählen und dann drücken, iwas als konfiguriert ist noremap i d, wird erwartet, dass der Text sofort gelöscht wird. Es wird jedoch nicht sofort ausgelöst, sondern wartet auf einen möglichen zweiten Schlüssel.

Wenn Sie timeoutlenden Wert auf Null setzen, wird in diesem Zusammenhang das erwartete Ergebnis erzielt, aber ein Befehl wie ,,der, der so konfiguriert noremap ,, ggist, funktioniert nicht mehr.

Ist es also möglich, ein Timeout für einen Befehl oder in einem bestimmten Kontext wie im visuellen Auswahlmodus mit einer aktiven Auswahl festzulegen?

Wenn Sie timeoutlenauf Null gedreht haben, kann dies möglicherweise noremap ,, ggunbrauchbar werden. Das Entfernen dieser Zuordnung kann also ausreichen, um das erwartete Ergebnis zu erzielen.


Wie wäre es, wenn Sie einen vernünftigen Wert festlegen, z. B. 500? Für die Modi gibt es AFAICT-Autocmd-Ereignisse nur für Ereignisse im Zusammenhang mit dem Einfügemodus, sodass dies möglicherweise nicht möglich ist (es sei denn, Sie verwenden CursorMovedund überwachen Änderungen an den Modi, dies ist jedoch fehleranfällig und zu viel Aufwand).
Muru

1
Ich habe noch nie ein anderes Tastaturlayout verwendet, aber seit ich das schon einmal gesehen habe: Was meinst du mit enorm neu zugeordnet? Aus diesem Artikel über Dvorak ( vim.wikia.com/wiki/Using_Vim_with_the_Dvorak_keyboard_layout ) gehe ich davon aus, dass es mit dem Befehl langmap (außer Multibutton-Befehlen wie <cv>) recht gut funktionieren sollte. Entschuldigung, wenn Sie dies bereits getan haben. Wie ich schon sagte, brauchte es nie, aber ich hoffe, es kann Ihnen helfen.
Doktor OSwaldo

Antworten:


3

Es hört sich so an, als hättest du so etwas

noremap i d
noremap ix ... other mappings starting with i

Und Sie fragen, dass für idas Timeout 0 ist.

In diesem Fall könnten Sie keine der ixZuordnungen eingeben. Warum also nicht einfach entfernen und das Problem auf diese Weise lösen?

Wenn dies nur für den visuellen Modus gilt, vermeiden Sie es, Zuordnungen zu definieren, die ifür diesen Modus beginnen.

Sie können die Zuordnungen entfernen, die Sie in den Kommentaren mit erwähnt haben

xunmap iM
xunmap im

Tatsächlich betrifft das Problem den visuellen Auswahlmodus. Entschuldigen Sie den Fehler und bedanken Sie sich für Ihre Vorschläge.
Psychosklave

@psychoslave Sie können tun, um :map izu sehen, welche Zuordnungen für welche Modi definiert sind.
Laktak

x iM *@:<C-U>call <SNR>30_wrap_i('[[','][')<CR> o iM *@:<C-U>call <SNR>30_wrap_i('[[','][')<CR> x im *@:<C-U>call <SNR>30_wrap_i('[m',']M')<CR> o im *@:<C-U>call <SNR>30_wrap_i('[m',']M')<CR> i * d
Psychosklave

1
Auf diese Weise schwer zu lesen, sollten Sie Ihre Frage aktualisieren. xsteht für visuellen Modus - daher sollten Sie die iMund imZuordnungen entfernen .
Laktak
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.