Ich schreibe C-Code mit vim und suche nach einer Möglichkeit, meine Kommentare rechtsbündig auszurichten, sodass sie alle in Spalte 80 enden. Ein kurzes Beispiel:
int a = 80; /* initialize a */
int b = 7; /* initialize b */
printf("%d + %d = %d", a, b, a+b); /*calculate the result */
sollte sich verwandeln in
int a = 80; /* initialize a */
int b = 7; /* initialize b */
printf("%d + %d = %d", a, b, a+b); /*calculate the result */
^col 80
Ich habe vim-easy-align
andere Formatierungen installiert, aber noch nicht herausgefunden, wie ich diese Ausrichtung vornehmen kann. Vielleicht weiß jemand, wie das geht?
Ich bestehe nicht darauf vim-easy-align
. Wenn Sie ein anderes Plugin haben, das die Aufgabe erfüllt, sagen Sie es mir einfach ;).
Antwort1
So geht es mit einfachen Vim-Befehlen, ohne Verwendung von Plug-ins:
Platzieren Sie im Normalmodus den Cursor auf dem ersten Zeichen der Zeichenfolge, das Sie rechtsbündig ausrichten möchten, beispielsweise dem Kommentartrennzeichen, und drücken Sie dann , leaderum tabden Text rechtsbündig auszurichten.
nnoremap <leader><tab> mc80A <esc>080lDgelD`cP
Mit Erläuterungen:
mc80A <esc>080lDgelD`cP
| | | || ||
mc| | || || Mark the position of the cursor
| | || ||
80A <esc>| || || Append 80 spaces at the end
| || ||
080l|| || Go the the 80th column from the beginning of the line
|| ||
D| || Delete what is next
| ||
gel|| goes after the last string char
||
D| Delete the characters remaining (complement to go 80)
|
`cP and paste these to shift the string up to 80 column.
Um mehrere Kommentare zu markieren, können Sie nach dem nächsten Vorkommen eines Kommentartrennzeichens suchen und leadertabnleadertabnleadertabn... drücken.
Antwort2
MeinAlignFromCursor-Pluginbietet eine <Leader>ri
Zuordnung und :RightAlignFromCursor
einen Befehl, die dies tun. Platzieren Sie den Cursor einfach in das Leerzeichen vor dem Kommentar (entweder manuell oder über einen :[range]normal
Befehl) und rufen Sie die Zuordnung oder den Befehl auf. Es wird 'textwidth'
oder ein vorangestelltes verwendet [count]
.