Ich wollte das schreiben:
A = mapping[0]
B = mapping[1]
C = mapping[2]
D = mapping[3]
E = mapping[4]
F = mapping[5]
G = mapping[6]
H = mapping[7]
I = mapping[8]
J = mapping[9]
K = mapping[10]
L = mapping[11]
M = mapping[12]
N = mapping[13]
O = mapping[14]
P = mapping[15]
Q = mapping[16]
R = mapping[17]
S = mapping[18]
T = mapping[19]
U = mapping[20]
V = mapping[21]
W = mapping[22]
X = mapping[23]
Y = mapping[24]
Z = mapping[25]
Am Ende habe ich LibreCalc verwendet, die verschiedenen Teile in verschiedene Zellen eingefügt, die Buchstaben und Zahlen hinzugefügt, die Ergebnisse verkettet und das Los wieder in Vim eingefügt.
Ich schätze, dass das, was ich schreiben wollte, schrecklicher Code ist. Ich lerne gerade Python und habe versucht zu vermeiden, dass ich selbst Informationen finde, von denen ich weiß, dass sie später in dem Kurs, dem ich folge, behandelt werden ( http://interactivepython.org/ ).
Der schnellste Weg, dies in vim zu tun, war, so etwas zu tippen
A = mapping[0] <ESC> hh <CTRL>+<V> BBh y $ o B <ESC> y 1] <CR>
Ich weiß, dass vim sehr mächtig ist (ich benutze es seit ein paar Wochen, genieße es wirklich).
Wäre es möglich gewesen, mit einem vim-Befehl zu schreiben, was ich wollte?
:verbose map y
sollte Ihnen zeigen, welche Zuordnungen mity
Ihnen beginnen und wo sie festgelegt wurden. Sie müssen jedochyy
im normalen Modus verwenden.vim
wird erhöht ,A
umB
mit derCtrl-a
Aktion? Meins definitiv nicht, und ich bin dran7.4 1-1202
.:set nrformats+=alpha
. Es fügt deralpha
Option den Wert hinzu'nrformats'
und sollte es ermöglichenCtrl-a
, alphabetische Zeichen zu "inkrementieren". Wenn Ihnen dieses Verhalten gefällt, können Sie es Ihrem vimrc hinzufügen. Andernfalls können Sie es der Option mit dem Operator hinzufügen+=
und anschließend mit dem Operator-=
(:set nrformats-=alpha
) entfernen .Ich bevorzuge die visuelle Inkrementlösung, die @VanLaser verwendet hat (siehe
:h v_CTRL-A
). Ich werde jedoch zeigen, dass dies auch über ein Makro möglich ist.Beginnen mit:
Notieren Sie die folgenden Tastendrücke in einem Makro Ihrer Wahl (z. B.
q
):Dadurch wird die Zeile dupliziert und dann das erste Zeichen (z. B.
A
) und dann der Zahlenteil erhöht. Führen Sie dieses Makro 24 Mal aus und Sie sind fertig, z24@q
.qq
- Aufnahme in das Register startenq
yyp
- Dupliziere die Zeile:set nrformats+=alpha<cr>
-'nrformats
hat nichtalpha
standardmäßig<c-a>
- Mit könnenalpha
wir jetzt Buchstaben inkrementieren:set nrformats-=alpha<cr>
- entfernenalpha
von'nrformats'
<c-a>
- Erhöhen Sie die nächste Zahlq
- höre auf, aufzunehmen24@q
- Makroq
24 Mal im Register abspielenWeitere Hilfe finden Sie unter:
quelle
Es wurden bereits gute Antworten gegeben, ich hätte nicht gedacht, dass ich so gut vorgehen würde. Ich hätte alle Buchstaben in einer einzelnen Zeile abgetippt und dann Text und Zeilenumbruch mit einer Ausdrucksersetzung (unter Verwendung der Zeilennummer als inkrementelle Nummer) eingeführt, so etwas wie
quelle
Fast immer, wenn ich so etwas mache, entscheide ich mich für die Verwendung
:substitute
über Makros. Insbesondere die Möglichkeit, den Ausdruck als Ersatz zu bewerten,\=
macht es häufig möglich (siehe:h sub-replace-special
).Sobald Sie leere Zeilen an Ort und Stelle haben (
25i<Enter><Esc>
), können Sie den Befehl verwendenDie erforderlichen Sequenzen werden unter Verwendung der aktuellen Zeilennummer (
'.'
Argumentnummer) generiert, die von der Funktion zurückgegeben wirdline()
, und unter Verwendung von nr2char (), um Dezimalzahlen in ASCII-Äquivalente umzuwandeln (65 = A). Notwendige Zeichenfolgen werden mit verkettet.
quelle
Sie können jederzeit versuchen, das Betriebssystem zu verwenden ...
quelle