Wie konvertiert man den gesamten Text in Vim in Kleinbuchstaben? Ist es überhaupt möglich?
vim
text-processing
ksuralta
quelle
quelle
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
(oderU
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.quelle
guu
wird eine Zeilegu[motion]
in Kleinbuchstaben und den Text dieser Bewegung in Kleinbuchstaben schreiben. EbensogUU
undgU[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:
Erläuterung:
quelle
U
für Großbuchstaben (z. B.ggVGU
)Ähnlich wie Mangledorfs Lösung, aber kürzer und laienfreundlich
:%s/.*/\L&/g
quelle
:%s/.*/\L&
würde ausreichen (brauche dieg
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ürwhat 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.*
Verwenden Sie diese Befehlsmodusoption
quelle
Viele Möglichkeiten, eine Katze zu häuten ... hier ist die Art und Weise, wie ich gerade geschrieben habe :
Ebenso für Großbuchstaben:
Ich bevorzuge diesen Weg, weil ich dieses Konstrukt (
:%s/[pattern]/replace/g
) die ganze Zeit benutze, damit es natürlicher ist.quelle
:%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
quelle
&
. \ 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.
quelle
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).
quelle
Wenn Sie unter Unix arbeiten
quelle
:%!tr A-Z a-z
!
gibt einen externen Shell-Befehl an, sodass$ man tr
(im Gegensatz zu:help tr
) angezeigt wird , dass dies der Falltr
isttranslate
.:%0,$!tr [:upper:] [:lower:]
Ich hatte ein ähnliches Problem und wollte es verwenden
":%s/old/new/g"
, verwendete jedoch zwei Befehle:quelle