2009-03-09 28 views
75

Duplicar posible:
How do I insert a linebreak where the cursor is without entering into insert mode in Vim?Vim línea de división de comandos

En vim, J se une a la línea siguiente a la línea actual. ¿Existe un comando similar de una tecla (o relativamente corto) para dividir una línea en una posición determinada del cursor? Sé que se hará con una macro simple, pero parece que si existe el comando J debería haber una función similar. Intenté buscarlo, pero parece que no puedo encontrar una respuesta.

+1

¿Esto ayuda? [¿Cómo inserto un salto de línea donde está el cursor sin ingresar al modo de inserción en Vim?] (Http://stackoverflow.com/questions/237383/how-do-i-insert-a-linebreak-where-the-cursor -is-without-entering-into-insert-mode) – bedwyr

+0

No, realmente quería ver si tal vez había algún comando de base que había pasado por alto o que no había podido encontrar que alguien más pudiera saber. – dburke

Respuesta

33

No creo que haya un solo comando de teclado correspondiente. Lo mejor que puede hacer con stock vim es probablemente iIngreseEsc.

+1

" i " Probablemente sería mejor – jperelli

+72

Mejor: 'r '. –

+13

r pierde un char, pero bueno si es un espacio. – trusktr

17

No. Ahora he leído suficientes respuestas para concluir que no existe ese comando.

Respuesta fácil: Al presionar 'Entrar' mientras está en insertar lo hará; pero tienes razón, debe haber una clave para ello en modo comando. Me he preguntado, también.

Como todos tienen una solución favorita, compartiré la mía. La suposición es que haré cualquier cosa para evitar tener que alcanzar la tecla Esc.

ylprX ... donde 'X' es el carácter insertado, que puede incluso ser un salto de línea .

Por lo tanto, 'yl' es tirar de char a la derecha, 'p' = pegar el carácter, 'r' es reemplazar ese carácter; entonces simplemente escribe el nuevo carácter. Eso es cuánto odio usar Escape.

(Eso fue 'l', como en "mover hacia la derecha", por cierto)

+12

Voy a archivar una solicitud de función. ¡¿Quien está conmigo?! – dburke

+2

¿Para "mejorar" vi otra vez? (Gran sonrisa). Supongo que si todos lo quieren y no existe, debe haber una razón. Lo que * realmente * quiero es un cmd de "insertar n caracteres" que permanezca fuera del "modo de inserción". – gbarry

+5

Recomendado: http://stackoverflow.com/questions/397229/reaching-up-to-hit-the-escape-key – dreeves

151

rIntroduzca, mientras que en los espacios en blanco lo hará. Son dos teclas.

+7

Cerrar, pero no cigarro. A menudo quiero dividirme entre dos etiquetas html adyacentes sin espacio entre ellas. – dburke

+3

@dburke En ese caso, ponga el mapeo 's' aquí (http://vim.wikia.com/wiki/Insert_a_single_character) en su' .vimrc' y use ''. –

5

Puede dividir líneas si puede crear una expresión regular para la ubicación para agregar la división. Por ejemplo, si desea dividir las líneas en cada punto y coma, puede utilizar la siguiente sustitución:

% s /;/^ v^m/g

con gran efecto

0

respuesta de Jed es mayor útil. Me gustaría agregar que necesitaba la "V-alternativa de control", es decir, control-Q: % s /;/^ q^m/g

35

Mi solución fue reasignar la clave K ya que nunca uso la acción predeterminada (busque la palabra debajo del cursor con "man"), y mi editor anterior usó Alt + j y Alt + k para unir y dividir líneas, respectivamente.

:nnoremap K i<CR><Esc> 

Esto hace que esas tres molestas teclas entren en una.

Probablemente haya una forma más sofisticada de eliminar cualquier espacio en blanco al final, pero prefiero quitar todos los espacios en blanco al escribir.

+3

¡Esto es genial! Por lo general, pulsar accidentalmente 'K' es desastroso para mí debido a la estúpida funcionalidad de la página' hombre', pero ahora puedo reemplazar eso con algo que en realidad es útil. –

+2

Esta es una buena redefinición, pero el comportamiento predeterminado de 'K' no debe considerarse estrictamente 'hombre' solamente. Muchos complementos redefinen 'K' para buscar los documentos en el lenguaje de contexto. En PHP, por ejemplo, 'K' me llevaría a la documentación de php.net ... – progo

8

Hilo viejo, pero no uso "K" para la búsqueda de la página del manual o cualquier magia que haga. Así que tengo este mapeo en mi .vimrc:

map K i<Enter><Esc> 

Pensé que ya "J" es unirse, "K" puede ser Krack o algo así. :)

+0

Remeché como así que para mí esta es la mejor respuesta :) –

Cuestiones relacionadas