En vim, ¿por qué es :-1j para unirse con la línea de arriba?

En vim, ¿por qué es :-1j para unirse con la línea de arriba?

En vim, ¿por qué se :-1june a la línea de arriba?

por ejemplo, :g/^ /-1jpara unir todas las líneas que comienzan con un espacio.

Los comandos son más fáciles de recordar cuando entiendes cómo se producen y en este caso esperaba:g/^ /-1J

-1mover para pasar a la línea de arriba y Junirse con la línea de abajo.

Respuesta1

No puedes usar un comando normal en la línea de comandoscomo es.

En :g/^ /-1j, jestá la abreviatura de :join: subes una línea ( -1, podría ser -) y ejecutas :join.

En :g/^ /-1J, Jno significa nada para Vim: estás usando un comando en modo normal fuera de su contexto, por lo que, básicamente, no hace nada después -1excepto mostrar un claro mensaje de error.

Vim espera un comando Ex, no un comando de modo normal.

Su confusión puede deberse al hecho de que los dos puntos solo se necesitan una vez, por lo que no reconoce los comandos Ex. Si agregamos un par de dos puntos, el comando completo probablemente tendría más sentido para usted:

:g/^ /:-1:j

Para usar comandos del modo normal en la línea de comandos, use :norm:

:g/^ /-1norm J

Respuesta2

Hay dos tipos de comandos en vi. Existen comandos que se pueden invocar directamente desde el modo de comando en cualquier parte del archivo (no estoy seguro de si hay un nombre específico para este tipo de comandos), y hay comandos que provienen de exque operan específicamente en líneas (no en personajes) y requieren un :personaje para invocarlos.

Normalmente, solo exse pueden utilizar los comandos con el :gcomando.

información relacionada