Gibt es eine Möglichkeit, die erste Ziffer nach / unter dem Cursor zu erhöhen / zu verringern, nicht die ganze Zahl?
Ich weiß, dass vim nicht so funktioniert, aber gibt es ein Plugin, das das macht? Ich konnte es nicht finden.
Dies ist sehr nützlich beim Bearbeiten von CSS und in anderen Fällen auch.
Gegeben:
▐margin: 10px
Wenn ich drücke, CTRL-A
möchte ich sehen:
▐margin: 20px
Tatsächlich:
▐margin: 11px
key-bindings
arithmetic
Firedev
quelle
quelle
10<C-a>
10 hinzufügen oderr2
die 1 durch eine 2 ersetzen.Antworten:
Dies scheint recht gut zu funktionieren und macht ziemlich vernünftige Dinge, wenn Sie
<C-a>
eine 9 verwenden (95 wird 105) oder wenn Sie<C-x>
eine 0 verwenden (105 wird 95):search()
die den Vorteil hat, dass sie nicht zurückgesetzt wird@/
.a <Esc>h
- Wechseln Sie in den Einfügemodus, fügen Sie nach der Ziffer ein Leerzeichen ein und gehen Sie nach links, sodass sich der Cursor über der Ziffer befindet.<C-a>
oder verwenden<C-x>
.lxh
, um den hinzugefügten Speicherplatz zu entfernen.Ich habe dies auf
g<C-a>
und abgebildetg<C-x>
, sodass Sie das Original weiterhin aufrufen können.Eine etwas andere Version, die nur nach Zahlen in der aktuellen Zeile sucht (aber ein baumelndes Leerzeichen lässt, wenn in der aktuellen Zeile keine Nummer vorhanden ist):
Und hier ist eine andere Version, die das gleiche Konzept wie zuvor verwendet, aber auch ein Leerzeichen vor der Ziffer hinzufügt . Dadurch wird
g<C-a>
jedes munis Zeichen vor der Nummer ignorieren (standardmäßig<C-a>
auf-42
Willen ‚increment‘ es-41
.Es akzeptiert auch eine Zählung, so dass
5g<C-a>
die Zahl um 5 erhöht wird:quelle
Grundlegendes Inkrement
Hier ist ein einfaches Makro, um die Aktion auszuführen:
Im normalen Modus Sie
m`
Markieren Sie Ihren Standortl
Bewegen Sie ein Zeichen nach rechtsv$x
bis zum Ende der Linie schneidenh
Gehen Sie zurück in die ursprüngliche Position<c-a>
Inkrementieren (oder Dekrementieren)p
Fügen Sie Ihren Schnitt zurück``
gehe zurück zu deiner MarkeZur nächsten Nummer springen
Wenn Sie zur nächsten Nummer springen möchten (oder an Ihrer aktuellen Position bleiben möchten, wenn Sie eine Nummer haben), benötigen Sie eine Funktion, die das aktuelle verfluchte Zeichen überprüft und möglicherweise zur nächsten Nummer springt.
NextNum
Ruft das Zeichen unter den Cursor, prüft, ob es eine Zahl ist und sucht nicht nach der nächsten Zahl. Danach ist der Rest der gleiche. Wenn Sie die Zuordnung verschiedener wollen ändern , nur dasnnoremap <leader>a
, was Sie wollen, zum Beispielnnoremap <c-a>
.Negative und Zahlen über 9 ignorieren
Wenn Sie nur durch Ziffern blättern möchten und diese nicht als vorzeichenbehaftete Ganzzahlen fungieren möchten, werden die folgenden Funktionen inkrementiert und dekrementiert und bei 0 und 9 verschoben.
Jetzt, wenn Sie eingeschaltet sind
8
und tippen, erhalten<leader>a
Sie9
. Wenn Sie es erneut tun, erhalten Sie0
. Wenn Sie drücken<leader>x
auf0
Sie bekommen9
. Gleiches gilt für negative Zahlen. Die Funktionen schneiden ein einzelnes Zeichen aus, erhöhen, verringern oder verschieben es und fügen es dann ein.quelle
<c-a>/<c-x>
.<c-a>
und<c-x>
zu etwas anderem, weil das Standardverhalten nicht so nützlich ist.<c-a>
und<c-x>
viel. Jedes Mal, wenn ich eine Version aktualisiere oder eine Bereichsvariable erhöhe,[N]<c-a>
lösche und ersetze ich sie einfach .<c-a>
und<c-x>
muss für eine Funktion gelöscht werden, die dasselbe tut, aber den Bindestrich ignoriert.Hier ist eine Version, die ich mit einem Ersatzausdruck geschrieben habe:
Jeder sucht nur nach der ersten Ziffer in der Zeile und addiert oder subtrahiert eine, wenn sie im Bereich [0-8] bzw. [1-9] liegt. Es hat drei Probleme:
"/
und wenn Sie hlsearch aktiviert haben, werden alle Zahlen im aktuellen Puffer hervorgehoben, wenn Sie dies verwenden. Sie können:noh<CR>
an jeden der oben genanntenmap
Befehle anhängen , um die Hervorhebung zu stoppen, aber ich weiß nicht, wie ich verhindern kann, dass das Register blockiert wird.Wenn ich es wäre, würde ich das Obige eher auf
<leader>a
und<leader>x
als auf abbildenCTRL-A/X
. Auf diese Weise stehen Ihnen beide Verhaltensweisen zur Verfügung.<leader>
ist standardmäßig der Backslash-Schlüssel (\
).quelle
:noh
. Das eigentliche Problem ist jedoch, dass die Cursorposition nicht als Basis verwendet werden kann und Sie daher nur die erste Ziffer in der Zeile erhöhen können.noremap
) verwenden und niemalsmap
. Auf dieser Seite finden Sie eine ausführlichere Erklärung.