Frage

Ich möchte eine Zuordnung in meinem .gvimrc so definieren, dass, wenn die zuletzt gedrückte Taste gehalten wird, wird die ausgelöste Aktion wiederholt. Insbesondere möchte ich, wie etwas tun

map <SPACE>t :set transparency-=1
map <SPACE>T :set transparency+=1

für MacVim, aber ich will die Transparenz verringert werden, um fortzufahren / erhöht, wenn t / T gehalten werden (wollen die Leer zu halten, nicht haben drücken).

Wenn Sie einen Vorschlag für eine schönere Art und Weise haben die Transparenz anzupassen, würde ich schätzen auch.

Unabhängig davon wäre es schön sein, um der Lage sein, geben Sie 20 SPACE t und haben die Transparenz um 20 verringert; aber wenn ich versuche ich ein

erhalten
E481: No range allowed.

Wie aktiviere ich die Bereichsspezifikation?

Vielen Dank.

War es hilfreich?

Lösung

Ich bin nicht sicher über den ersten Teil Ihrer Frage, aber bekommen 20 <Space> t der Lage sein, seine Arbeit zu tun:

:map <space>t :<C-U>exe "set transparency-=".v:count1<CR>
  • Mit <C-U> Sie den Zeilenbereich entfernen, die zu Ihrem Ex-Befehl hinzugefügt wird, wenn Sie eingeben 20 im Normal-Modus.
  • Mit exe man 'dynamische' vimscript.
  • v:count1 ist die Zählung für den letzten Normal-Modus-Befehl (20 in diesem Beispiel) gegeben. Und wenn es gegeben keine Zählung wird 1 angenommen.

Für weitere Informationen siehe

:h v:count
:h v:count1

Update:

Sie können weglassen exe mit let Form statt set ein:

:map <space>t :<C-U>let &transparency-=v:count1<CR>

Siehe :h :let-&.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top