Vim: inserte una línea vacía sobre la línea actual (no abierta, es decir, sin ingresar al modo Insertar)

21

¿hay alguna forma de insertar una nueva línea sobre la actual, sin abrir la línea (sin ingresar al modo Insertar)? Es decir, como "O", pero sin abrir.

tmadsen
fuente
2
¿Qué significa "abrir una línea"?
Matteo Riva
"abrir una línea" significa pasar del modo normal al modo de inserción, que es lo que sucede cuando presiona "O" (oh).
tmadsen 01 de

Respuestas:

8

Uso el complemento de Tim Pope sin impedimentos, que tiene un comando específicamente para este propósito:

[<space>

Y si desea agregar un espacio después de la línea en la que se encuentra:

]<space>

Eric Mathison
fuente
28

La definición de su solicitud es O.

Lógicamente al insertar una nueva línea arriba sería O.

Para insertar antes del cursor: i
Después: a
Antes de la línea (inicio): I
Agregar al final de la línea:A

Lo más cerca que creo que vendrás es lo Ique colocará el cursor al comienzo de la línea.

Josh K
fuente
Quizás no estaba claro. El escenario es este: estoy en modo normal y quiero insertar una línea en blanco sobre la que estoy actualmente, mientras permanezco en modo normal. Presionando "O" me pone en modo de inserción. Tal vez no hay forma de hacerlo y eso está bien, solo pensé en preguntar :)
tmadsen
3
Solo mapearlo,m`O+Esc`
Josh K
1
Buena idea, no lo había considerado. Hizo un: noremap <leader> O O <ESC>
tmadsen
2tmadsen: Puede asignar este <yourkey> O <ESC>
nXqd
9
:h append()

No moverá el cursor, le permitirá insertar tantas líneas (vacías o no) como desee, y no modificará la marca de posición anterior.

call append(line('.')-1, '')
Luc Hermitte
fuente
sí, eso es +1 ordenado! / me cambia su vimrc
akira
Bueno, tiene algunas ventajas cuando se trata de secuencias de comandos. Es un poco excesivo escribir de otra manera.
Luc Hermitte
+1 para una solución que funciona independientemente de cómo se haya configuradoformatoptions
Micah Smith
5

Puede asignar cualquier tecla o secuencia de teclas que desee

m`O<ESC>``

esto inserta una línea en blanco sobre la actual manteniéndolo en modo normal y sin cambiar la posición del cursor.

Matteo Riva
fuente
entonces el comando para asignar esto a Alt-O sería: map <Mo> m`O <ESC> ``
K Robinson
Eso es correcto.
Matteo Riva
2
:nmap <CR>_i<CR><ESC>
akira
fuente