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?


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.


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

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


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.

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.


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


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.


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


6

Si estás corriendo bajo el sabor de Unix

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

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:$
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.