2010-07-03 17 views
11

A menudo me encuentro rebotando en o o O y ctrl {para insertar líneas en blanco y salir del modo de inserción.Insertar líneas vacías sin ingresar al modo de inserción

pensando que debe haber una manera más simple, y con la esperanza de conservar mi posición del cursor, me hackeado estas macros descuidados:

map <Leader>O :let cursorpos = getpos(".")<CR>:i<CR><CR>.<CR>:let cursorpos[1] = cursorpos[1] + 1<CR>:call setpos('.', cursorpos)<CR> 
map <Leader>o :let cursorpos = getpos(".")<CR>:a<CR><CR>.<CR>:call setpos('.', cursorpos)<CR> 

Sin embargo, esto no permite rangos. Sería bueno poder ir 5 \ O y obtener 5 espacios en blanco sobre mi línea actual.

¿Alguna sugerencia sobre cómo puedo solucionar esto para permitir rangos y aún volver a la posición original del cursor cuando termine?

Respuesta

12

Puede usar :call append(linenumber, repeat([''], 5)). No moverá el cursor.

+3

Excelente, eso es perfecto. Pensé que tenía que haber una manera más elegante. Lo cambié a: mapa O: call append (line (".") -1, repetición ([ ''], v: COUNT1)) mapa o: append llamada (línea (" "), de repetición (. [ ''], V: COUNT1)) a responda a los rangos. ¡Gracias! – JameyC

+0

Pero en este ejemplo si aplicamos una "versión de conteo" también moverá el cursor hacia arriba/abajo – user3663882

+0

@ user3663882. Necesitamos reemplazar ': call' con': call' y reemplazar 5 con 'v: count1' por ejemplo. O mantenga el 5 y comience el comando con' 'o' 'para borrar el conteo. –

1

he añadido esto a mi .vimrc

"create new line below current line without leaving normal mode or moving cursor 
noremap - m`o<Esc>`` 
"create new line above current line without leaving normal mode or moving cursor 
noremap _ m`O<Esc>`` 

prefiero esta solución por varias razones:

  • normalmente no suelo usar los - o _ llaves en modo normal y están ubicados en la misma tecla física en mi teclado.
  • Parece que instalar un plugin para esto es excesivo. Evito descargar complementos para cosas simples, ya que introducen código nuevo en mi entorno que aún no entiendo del todo o en el que no confío y puede interferir con otras personalizaciones o complementos.
  • Probé la solución del autor de esta pregunta que se encuentra en su comentario en la respuesta aceptada, pero después de usar esto, el . comando hace cosas extrañas e inquietantes.
  • Por lo general, prefiero presionar . varias veces al pasar un argumento numérico, de modo que en lugar de estar sentado contando cosas en mis dedos, sigo presionando . hasta que se vea bien (menos visualización conceptual y más visión real). Lamentablemente, incluso esta solución no funciona de la manera que quiero con el . comando. Sin embargo, al mapear - y _, se pueden presionar repetidamente para obtener el mismo efecto. Una pena que no está más cerca de la fila casa ...

ADVERTENCIA: Marcado la tecla ` afecta a la lista de saltos. Puedes usar cualquier otra marca si eso te hace sentir placer ++

Cuestiones relacionadas