So konvertieren Sie den gesamten Text in Vim in Kleinbuchstaben


211

Wie konvertiert man den gesamten Text in Vim in Kleinbuchstaben? Ist es überhaupt möglich?


Wir haben viele HTML-Seiten mit allen Zeichen in Großbuchstaben. Dies spart mir Zeit, alles in Kleinbuchstaben neu einzugeben.
ksuralta

2
Bevor die Frage bearbeitet wurde, wurde beschrieben, wie der gesamte Text in vim in Kapitälchen konvertiert werden kann. Offensichtlich gibt es einen Anwendungsfall für die Konvertierung von Text in Kleinbuchstaben.
Limonade

6
Die VIM-Website hat die Antwort: vim.wikia.com/wiki/Switching_case_of_characters Danke.
Ende

Antworten:


122
  1. 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 Uum ihn in Großbuchstaben zu konvertieren). Tilde ( ~) im Befehlsmodus kehrt die Groß- und Kleinschreibung des Zeichens unter dem Cursor um.

  2. Wenn Sie den gesamten Text in Vim in Kapitälchen anzeigen möchten, sollten Sie sich die guifontOption ansehen oder eingeben, :set guifont=*wenn Ihre Vim- Variante die Auswahl der GUI-Schriftart unterstützt.


33
Ich denke, es ist erwähnenswert, dass Sie nicht unbedingt einen visuellen Block erstellen müssen, um einen Textblock in Kleinbuchstaben zu schreiben. guuwird eine Zeile gu[motion]in Kleinbuchstaben und den Text dieser Bewegung in Kleinbuchstaben schreiben. Ebenso gUUund gU[motion]arbeiten Sie auf die gleiche Weise, nur für Großbuchstaben.
Zachary Murray

1
Tatsächlich sind Smallcaps für die meisten Buchstaben auch mit ᴀʙcᴅᴇꜰɢʜıᴊᴋʟᴍɴoᴘʀsᴛᴜvwxʏz möglich.
Gerrit

1
Das ist aber nur ein Hack. Diese sind nicht als normale Kapitälchen gedacht und werden von Schriftarten nicht gut unterstützt. (Auf meinem Desktop-Computer wird das F seltsamerweise gerendert, auf meinem Telefon wird es überhaupt nicht gerendert, um ein Beispiel zu nennen.) Wie auch immer, interessanter Teil von Unicode, danke!
Zoul

2
Diese Antwort ist falsch. user80168 hat die richtige Antwort.
Wayne Workman

400

Ich gehe davon aus, dass Sie den Text in Kleinbuchstaben schreiben möchten. Die Lösung ist ziemlich einfach:

ggVGu

Erläuterung:

  1. gg - geht zur ersten Textzeile
  2. V - Aktiviert die visuelle Auswahl im Zeilenmodus
  3. G - geht zum Ende der Datei (in dem Moment, in dem Sie den gesamten Text ausgewählt haben)
  4. u - Ausgewählter Bereich in Kleinbuchstaben

88
oder ggguG, wenn Sie dies ohne visuelle Auswahl tun möchten. : Hilfe gu
DrAl

18
Verwenden Sie Kapital Ufür Großbuchstaben (z. B. ggVGU)
Nathan Wallace

42

Ähnlich wie Mangledorfs Lösung, aber kürzer und laienfreundlich

:%s/.*/\L&/g


3
:%s/.*/\L&würde ausreichen (brauche die gFlagge nicht, da .*die gesamte Linie ausgewählt wird)
Gordon Gustafson

1
Wie würde :%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?
Braden Best

1
&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.*
Camusensei

39

Verwenden Sie diese Befehlsmodusoption

ggguG


gg - Goto the first line 
g  - start to converting from current line    
u  - Convert into lower case for all characters
G  - To end of the file.

27

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.


Ich denke, im letzten Beispiel gibt es einen Tippfehler ('ebenfalls für Großbuchstaben') - der reguläre Ausdruck sollte sich in [az] anstatt in '[AZ]' ändern.
Monojohnny

1
:%s/./\U&/gfunktioniert 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?
Braden Best

2
&ist ein Ersatz für die übereinstimmende Zeichenfolge. So \U&nutzt den gefundenen String , so dass es für den Ersatz verwendet werden kann.
Alec Jacobson

22
  • Schalten Sie den Fall "HellO" mit "g" und dann mit "Bewegung" auf "Hallo" um.
  • Großbuchstaben "HellO" bis "HALLO" mit gU dann eine Bewegung.
  • Kleinbuchstaben "HellO" bis "Hallo" mit gu dann eine Bewegung.

Beispiele und weitere Informationen finden Sie hier: http://vim.wikia.com/wiki/Switching_case_of_characters


Ich denke, das gibt es nicht, aber es gibt einen weniger intuitiven Ersetzungsbefehl dafür in @mangledorfs Antwort, indem die gewünschten Zeichen durch die Escape-Sequenz "\ L &" für Kleinbuchstaben und "\ U &" für Großbuchstaben ersetzt werden. Was mich bringt ist das &. \ L und \ U machen durchaus Sinn, aber warum ist das &notwendig?
Braden Best

9

verwenden ggguG

gg: geht in die erste Zeile. gu: in Kleinbuchstaben wechseln. G: geht zur letzten Zeile.


Wie unterscheidet sich das von der Antwort von Kalanidhi?
MSeifert

Upvoted, um dies auf 0 zu bringen, was eine angemessene Punktzahl für eine Antwort ist, die eine Kopie einer vorherigen ist. @ MSeifert Negative Scores sollten für falsche / schädliche Lösungen reserviert werden
Titou

7

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).


6

Wenn Sie unter Unix arbeiten

:0,$!tr "[A-Z]" "[a-z]"

4
Die eckigen Klammern sind überflüssig, und wenn Sie diese entfernen, sind die Anführungszeichen ebenfalls nicht erforderlich. :%!tr A-Z a-z
Ephemient

Das !gibt einen externen Shell-Befehl an, sodass $ man tr(im Gegensatz zu :help tr) angezeigt wird , dass dies der Fall trist translate.
Braden Best

Nur :%0,$!tr [:upper:] [:lower:]
andersherum

2

Ich hatte ein ähnliches Problem und wollte es verwenden ":%s/old/new/g", verwendete jedoch zwei Befehle:

:0
gu:$
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.