Un trazador de líneas
Encontré un reemplazo simple de expresión regular (suponiendo que se establezca 'magic'):
:s/ \([a-zA-Z]\)/\u\1/g
Esto coincide con cualquier letra después de un espacio, guardando la letra. Luego, lo reemplaza con la letra guardada en mayúscula ( \u
= mayúscula, \1
= primera coincidencia guardada), para cada coincidencia en la línea.
Aplicar sobre todo el archivo poniendo un %
entre :
y s
.
La desventaja de esta solución es que es lineal (lo que funciona para sus ejemplos), pero se quedaría corto si solo quisiera decir algunas palabras de muchas dentro de una línea.
Una solución más completa
map <leader>g~ :set opfunc=MyCamelCase<CR>g@
function! MyCamelCase(type, ...)
let searchsave=@/
silent s/\%>'\[ \([a-zA-Z]\)\%<']/\u\1/g
let @/=searchsave
endfunction
Esto crea un nuevo operador que puede operar en un movimiento. Si tiene <leader>
como \
, entonces se le da el siguiente texto (con |
el cursor):
This is some |example text to work with.
Escribir \g~3w
da
This is some exampleTextTo work with.
Es decir, camello cased sobre 3 palabras.
Descripción de esa sustitución:
s/
comienza la sustitución.
\%>'\[
Es un poco doloroso. El \%>'m
dice que coincida a la derecha de una marca. Queremos marcar [
, pero eso también se debe escapar en este patrón. Entonces, esto comienza el partido después del movimiento dado al operador.
\([a-zA-Z\)
es el mismo que el de una línea de arriba.
\%<']
Este es el otro extremo, que coincide antes del final del movimiento.
/\u\1/g
es el reemplazo de la línea de arriba.
Para una alternativa, uso el complemento vim- abolish que ofrece una función de coerción:
fuente
Puede crear una macro recursiva que haga esto para una sola línea con las siguientes teclas:
(Tenga en cuenta que el espacio entre el
f
y elx
es un toque de la barra espaciadora, no una pausa)En detalle:
Limpia el registro q. Esto es necesario porque estamos creando una macro recursiva. (Ver paso 5):
qqq
Comience a grabar una macro en el registro q:
qq
No puede usar el
w
movimiento aquí, porque desea que la macro se cancele cuando llegue al final de la línea, en lugar de saltar a la siguiente línea. En cambio, salte al siguiente carácter de espacio en la línea presionando laf
tecla seguida de la barra espaciadora:f<space>
Eliminar el espacio y en mayúscula la siguiente letra:
xgUl
Recurse Debido a que borramos el
q
registro en el paso 1, todavía no hay nada en él, por lo que esto no hará nada:@q
Guarda la macro:
q
Luego puede aplicar esta macro a varias líneas utilizando un rango:
Aplique la macro a cada línea en el archivo:
Aplique la macro a las líneas 2–5 inclusive:
Haga una selección visual y luego escriba
:normal @q
. Esto rellenará previamente la línea de comando cuando presione la:
tecla, lo que dará como resultado un comando que aplica la macro a cada línea de la selección:fuente
q
registro, alqq
igual que antes de que comience a grabar las pulsaciones de teclas. De hecho, es precisamente por eso queqqq
funciona para borrar elq
registro :)q
registro (es decir, usarqQ
), probablemente sería necesario borrarlo primero.vim -u NONE
). Los contenidos existentes solo se borran cuando guarda el registro, en el paso 6. Por lo tanto, es necesario borrar el registro antes de comenzar si desea repetir.Ver http://vim.wikia.com/wiki/Changing_case_with_regular_expressions ¡Explica los modificadores \ U, \ L, \ u, \ l de forma clara y concisa!
Su esencia es la siguiente:
Hay momentos en los que le gustaría revisar un archivo y cambiar el caso de los caracteres que coinciden con algunos criterios arbitrarios. Si comprende bien las expresiones regulares, puede hacerlo con bastante facilidad.
Es tan simple como colocar \ U o \ L delante de las referencias traseras de las que desea cambiar el caso, y \ E al final. Vim hará que el texto en referencia sea mayúscula o minúscula (respectivamente). Use \ u y \ l (sin la \ E al final) para cambiar el caso del primer carácter en la referencia.
(Una "referencia inversa" es una parte de una expresión regular que se refiere a una parte anterior de una expresión regular. Las referencias inversas más comunes son &, \ 1, \ 2, \ 3, ..., \ 9).
Algunos ejemplos que demuestran el poder de esta técnica:
Minúscula todo el archivo
(& es una referencia útil que hace referencia al texto completo del partido).
Todas las palabras en mayúscula precedidas por un <(es decir, abrir nombres de etiquetas HTML):
Tenga en cuenta también los comandos gu y gU.
Por ejemplo, ggguG minúscula todo el archivo. (gg = ir al principio, gu = minúscula, G = ir al EOF).
Mediante el uso de la referencia general general \ 0 en lugar de las de nombre (\ 1, \ 2, etc.) puede guardar algo de tipeo para reemplazar la estrofa de la expresión regular.
Esta expresión regular en mayúsculas es un conjunto explícito de palabras en mayúsculas en un archivo:
No es ciencia espacial, pero de lo contrario tendrías que hacer esto:
fuente