Cómo convertir todo el texto a minúsculas en Vim

211

¿Cómo se convierte todo el texto en Vim a minúsculas? ¿Es posible?

ksuralta
fuente
Tenemos muchas páginas html con todos los caracteres en mayúsculas. Esto me ahorra tiempo volviendo a escribir todo en minúsculas.
ksuralta
2
Antes de editar la pregunta, era cómo convertir todo el texto en vim a mayúsculas. Obviamente, hay un caso de uso para convertir texto a minúsculas.
lemonad
66
El sitio web de VIM tiene la respuesta: vim.wikia.com/wiki/Switching_case_of_characters Gracias.
termina el

Respuestas:

122
  1. Si realmente quiere decir mayúsculas pequeñas , entonces no, eso no es posible, al igual que no es posible convertir texto en negrita o cursiva en ningún editor de texto (a diferencia del procesador de textos ). Si desea convertir texto a minúsculas, cree un bloque visual y presione u(o Uconvertir a mayúsculas). Tilde ( ~) en modo comando invierte el caso del carácter debajo del cursor.

  2. Si desea ver todo el texto en Vim en mayúsculas, puede ver la guifontopción o escribir :set guifont=*si su sabor Vim admite el selector de fuente GUI.

zoul
fuente
33
Creo que vale la pena mencionar que no necesariamente tiene que crear un bloque visual para poner en minúscula un bloque de texto. guuen minúscula una línea y en gu[motion]minúscula el valor de ese movimiento de texto. Del mismo modo, gUUy gU[motion]funcionan de la misma manera, solo para mayúsculas.
Zachary Murray
1
En realidad, las mayúsculas también son posibles para la mayoría de las letras, usando ᴀʙcᴅᴇꜰɢʜıᴊᴋʟᴍɴoᴘʀsᴛᴜvwxʏz.
gerrit
1
Sin embargo, eso es solo un truco. Estos no están destinados a ser utilizados como mayúsculas pequeñas y no son compatibles con las fuentes. (En mi máquina de escritorio, la F se muestra de manera extraña, en mi teléfono no se muestra en absoluto, por poner un ejemplo.) De todos modos, parte interesante de Unicode, ¡gracias!
zoul
2
Esta respuesta es incorrecta. user80168 tiene la respuesta correcta.
Wayne Workman, el
401

Supongo que quiere minúsculas el texto. La solución es bastante simple:

ggVGu

Explicación:

  1. gg - va a la primera línea de texto
  2. V - activa la selección visual, en modo de línea
  3. G - va al final del archivo (en el momento en que tiene seleccionado el texto completo)
  4. u - área seleccionada en minúsculas
Dave Jarvis
fuente
88
o ggguG si quieres hacerlo sin selección visual. : ayuda gu
DrAl
18
usar capital Upara mayúsculas (p ggVGU. ej. )
Nathan Wallace
42

Similar a la solución de Mangledorf, pero más corta y amigable

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

Tarkeshwar
fuente
3
:%s/.*/\L&sería suficiente (no necesita la gbandera ya que .*selecciona la línea completa)
Gordon Gustafson
1
Como lo haría :%s/./\L&/g, ya que / g / denota una operación que es global para la línea. Sin embargo, lo que me atrapa es el &. ¿Por qué es eso necesario?
Braden Best
1
&significa aquí what was matched by the pattern, por lo que puede entenderse de la siguiente manera: reemplazar .*por \Lowercase(what was matched by the pattern). Tenga en cuenta que la coincidencia en .todo el mundo es más lenta que la coincidencia.*
Camusensei
39

use esta opción de modo de comando

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.
Kalanidhi
fuente
27

Muchas formas de pelar un gato ... esta es la forma en que acabo de publicar :


:%s/[A-Z]/\L&/g

Del mismo modo para mayúsculas:


:%s/[a-z]/\U&/g

Prefiero de esta manera porque estoy usando esta construcción ( :%s/[pattern]/replace/g) todo el tiempo, así que es más natural.

Alec Jacobson
fuente
Creo que hay un error tipográfico en el último ejemplo ('igualmente para mayúsculas'): la expresión regular debería cambiar a [az] en lugar de '[AZ]'.
monojohnny
1
:%s/./\U&/gTambién funciona. Resulta que ignora los números y los caracteres que no son del alfabeto. Lo que me atrapa es el &. ¿Por qué no es \ U (o \ L) por sí solo suficiente? ¿Podemos obtener una explicación para eso?
Braden Best
2
&es un sustituto de la cadena coincidente. Por lo tanto, \U&capitaliza la cadena coincidente para que pueda usarse para el reemplazo.
Alec Jacobson
22
  • Cambie el caso "HellO" a "HELLo" con g ~ y luego un movimiento.
  • "HellO" en mayúscula a "HELLO" con gU y luego un movimiento.
  • Minúscula "HellO" a "hola" con gu y luego un movimiento.

Para ver ejemplos y más información, lea esto: http://vim.wikia.com/wiki/Switching_case_of_characters

Adolfo Abegg
fuente
Supongo que no existe, pero hay un comando de sustitución poco intuitivo para eso en la respuesta de @mangledorf al reemplazar los caracteres deseados con la secuencia de escape "\ L &" para minúsculas y "\ U &" para mayúsculas. Lo que me atrapa es el &. \ L y \ U tienen mucho sentido, pero ¿por qué es &necesario?
Braden Best
9

utilizar ggguG

gg: va a la primera línea. gu: cambiar a minúsculas. G: va a la última línea.

Ziyadsk
fuente
¿Cómo difiere eso de la respuesta de Kalanidhi?
MSeifert
Votado para llevar esto a 0, que es un puntaje adecuado para una respuesta que es una copia de una anterior. @MSeifert Los puntajes negativos deben reservarse para soluciones incorrectas / dañinas
Titou
7

Por lo general Vu(o VUen mayúsculas) es suficiente para convertir toda la línea en minúsculas, Vya que selecciona toda la línea para aplicar la acción.

Tilda ( ~) cambia el caso de la letra individual , resultando en un caso de camello o similar.

Es realmente genial cómo Vim tiene muchos modos diferentes para lidiar con varias ocasiones y cómo esos modos están perfectamente organizados.

Por ejemplo, v- el modo visual verdadero y los modos relacionados V- línea visual, y Ctrl+ Q- bloque visual (lo que le permite seleccionar bloques, una gran característica que otros editores avanzados también ofrecen generalmente manteniendo presionada la Alttecla y seleccionando el texto).


fuente
6

Si estás corriendo bajo el sabor de Unix

:0,$!tr "[A-Z]" "[a-z]"
ojblass
fuente
44
Los corchetes son superfluos, y una vez que los elimina, las comillas tampoco son necesarias. :%!tr A-Z a-z
ephemient
El !indica un comando de shell externo, por lo que $ man tr(a diferencia de :help tr) revela que tres para translate.
Braden Best
Simplemente de otra manera::%0,$!tr [:upper:] [:lower:]
albertovar
2

Tuve un problema similar y quería usarlo ":%s/old/new/g", pero terminé usando dos comandos:

:0
gu:$
Shaolinux
fuente