Wie konvertiert man den gesamten Text in Vim in Kleinbuchstaben? Ist es überhaupt möglich?
Wie konvertiert man den gesamten Text in Vim in Kleinbuchstaben? Ist es überhaupt möglich?
Antworten:
Wenn Sie wirklich mittlere Kapitälchen , dann nein, das sind nicht möglich - so wie es nicht möglich ist , Text fett oder kursiv in jedem zu konvertieren Texteditor (im Gegensatz zu Textverarbeitung ). Wenn Sie Text in Kleinbuchstaben konvertieren möchten, erstellen Sie einen visuellen Block und drücken Sie u
(oder U
um ihn in Großbuchstaben zu konvertieren). Tilde ( ~
) im Befehlsmodus kehrt die Groß- und Kleinschreibung des Zeichens unter dem Cursor um.
Wenn Sie den gesamten Text in Vim in Kapitälchen anzeigen möchten, sollten Sie sich die guifont
Option ansehen oder eingeben, :set guifont=*
wenn Ihre Vim- Variante die Auswahl der GUI-Schriftart unterstützt.
guu
wird eine Zeile gu[motion]
in Kleinbuchstaben und den Text dieser Bewegung in Kleinbuchstaben schreiben. Ebenso gUU
und gU[motion]
arbeiten Sie auf die gleiche Weise, nur für Großbuchstaben.
Ich gehe davon aus, dass Sie den Text in Kleinbuchstaben schreiben möchten. Die Lösung ist ziemlich einfach:
ggVGu
Erläuterung:
U
für Großbuchstaben (z. B. ggVGU
)
Ähnlich wie Mangledorfs Lösung, aber kürzer und laienfreundlich
:%s/.*/\L&/g
:%s/.*/\L&
würde ausreichen (brauche die g
Flagge nicht, da .*
die gesamte Linie ausgewählt wird)
:%s/./\L&/g
, da / g / eine Operation bezeichnet, die für die Zeile global ist. Was mich aber bringt, ist das &
. Warum ist das notwendig?
&
steht hier für what was matched by the pattern
, so kann es wie folgt verstanden werden: ersetzen .*
durch \Lowercase(what was matched by the pattern)
. Beachten Sie, dass das Matching auf .
global langsamer ist als das Matching.*
Viele Möglichkeiten, eine Katze zu häuten ... hier ist die Art und Weise, wie ich gerade geschrieben habe :
:%s/[A-Z]/\L&/g
Ebenso für Großbuchstaben:
:%s/[a-z]/\U&/g
Ich bevorzuge diesen Weg, weil ich dieses Konstrukt ( :%s/[pattern]/replace/g
) die ganze Zeit benutze, damit es natürlicher ist.
:%s/./\U&/g
funktioniert auch. Es stellt sich heraus, dass Zahlen und Nicht-Alphabet-Zeichen ignoriert werden. Was mich bringt ist das &
. Warum reicht \ U (oder \ L) allein nicht aus? Können wir eine Erklärung dafür bekommen?
&
ist ein Ersatz für die übereinstimmende Zeichenfolge. So \U&
nutzt den gefundenen String , so dass es für den Ersatz verwendet werden kann.
Beispiele und weitere Informationen finden Sie hier: http://vim.wikia.com/wiki/Switching_case_of_characters
&
. \ L und \ U machen durchaus Sinn, aber warum ist das &
notwendig?
verwenden ggguG
gg: geht in die erste Zeile. gu: in Kleinbuchstaben wechseln. G: geht zur letzten Zeile.
Normalerweise Vu(oder VUfür Großbuchstaben) reicht es aus, die gesamte Zeile in Kleinbuchstaben umzuwandeln, da Vbereits die gesamte Zeile ausgewählt ist, gegen die die Aktion angewendet werden soll.
Tilda ( ~) ändert den Fall des einzelnen Buchstabens , was zu einem Kamelfall oder ähnlichem führt.
Es ist wirklich großartig, wie Vim viele verschiedene Modi hat, um mit verschiedenen Anlässen umzugehen, und wie diese Modi ordentlich organisiert sind.
Zum Beispiel v- der echte visuelle Modus und die zugehörigen V- visuellen Linien- und Ctrl+ Q- visuellen Blockmodi (was Ihnen die Auswahl von Blöcken ermöglicht, eine großartige Funktion, die einige andere erweiterte Editoren normalerweise auch anbieten, indem Sie die AltTaste gedrückt halten und den Text auswählen).
Wenn Sie unter Unix arbeiten
:0,$!tr "[A-Z]" "[a-z]"
:%!tr A-Z a-z
!
gibt einen externen Shell-Befehl an, sodass $ man tr
(im Gegensatz zu :help tr
) angezeigt wird , dass dies der Fall tr
ist translate
.
:%0,$!tr [:upper:] [:lower:]