GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo unirse a la siguiente línea cuando una línea coincide con una expresión regular para todo el documento en Vi?

Tengo líneas como

abcdefgjoin!
abcdef
no join
abcdefgjoin!

Si una línea coincide con la expresión regular ^a.+g$ entonces me gustaría que se unieran, así sería:

abcdefgjoin!
abcdef
no join
abcdefgjoin!

¿Hay alguna forma de hacerlo en VIM? ?

Respuesta aceptada:

En modo normal, J (a diferencia de j , que mueve el cursor una línea hacia abajo) se usa para unir una línea con la que está directamente debajo de ella. Sin embargo, por defecto agrega un espacio al final de la primera línea; para obtener el resultado que desea (unir las líneas sin insertar un espacio adicional), habría que usar gJ .

Para usar comandos de modo normal en modo ex (que ingresa presionando : mientras está en modo normal), uno debe usar el normal dominio. Ver :h normal dentro de vim. Entonces, para trabajar con la siguiente línea que coincida con el patrón, uno usaría (tenga en cuenta que, de manera predeterminada, debe escapar del + para que funcione con la expresión regular de vim, una consecuencia de mantener la compatibilidad con el antiguo motor de expresión regular de vi original):

:/^a.\+g$/normal gJ

Para trabajar en cada línea que coincida con el patrón, uno usaría el :global comando (ver :h :g dentro de vim) así:

:global/^a.\+g$/normal gJ

O, más concisamente:

:g/^a.\+g$/norm gJ

También es posible usar el comando ex join (ver :h :join ) para lograr lo mismo escribiendo un poco menos (el ! al final, en este caso, dice join no insertar un espacio al final de la primera línea).

:g/^a.\+g$/join!

Linux
  1. 8 consejos para la línea de comandos de Linux

  2. Cómo hacer que sudo recuerde la contraseña por más tiempo

  3. ¿Cómo hacer un tar comprimido cuando hay demasiados nombres de archivo para que el shell se expanda en una sola línea?

  4. Cómo ingresar información de inicio de sesión para un sitio web desde la línea de comandos de Linux

  5. ¿Cómo mostrar los parámetros de la línea de comandos del kernel de Linux dados para el arranque actual?

4 herramientas Markdown para la línea de comandos de Linux

Cómo usar Ranger para navegar archivos desde la línea de comandos

Cómo limpiar sus datos en la línea de comando

3 gestores de contraseñas para la línea de comandos de Linux

Cómo buscar archivos desde la línea de comandos de Linux

¿Cómo borrar el número de línea en Vim al copiar?