vim customization indentation

Vim: sangría inteligente al entrar en modo inserción en línea en blanco?



ctags (3)

cc reemplazará el contenido de la línea actual e ingresará el modo de inserción en la sangría correcta, de modo que en una línea en blanco hará exactamente lo que está buscando.

Creo que el comportamiento que describo es correcto porque hay muchos casos de uso en los que desea insertar en esa ubicación específica en una línea en blanco, en lugar de saltar a cualquier lugar que adivine que quiera insertar.

Cuando abro una nueva línea (a través de ''o'') mi cursor salta a una posición con sangría correcta en la siguiente línea. Por otro lado, al ingresar el modo de inserción mientras mi cursor está en una línea en blanco, no muevo mi cursor a la ubicación con sangría correcta.

¿Cómo hago que vim coloque correctamente mi cursor al ingresar el modo de inserción (a través de i) en una línea en blanco?


En una línea vacía, para ingresar al modo Insertar con sangría correcta, simplemente puede usar s .

Tenga en cuenta que s es un sinónimo de cl , por lo que si no está realmente en una línea vacía, terminará borrando un solo carácter y no sangrando. En ese caso, es mejor que uses cc , como sugirió SML hace unos 18 meses. Pero con frecuencia he mejorado mi puntaje en VimGolf usando este atajo, así que pensé en mencionarlo. ;)


Bueno, esto en realidad no fue tan malo como pensé que sería. Una forma de habilitar esto es agregar lo siguiente a su ~ / .vimrc

"smart indent when entering insert mode with i on empty lines function! IndentWithI() if len(getline(''.'')) == 0 return "/"_ccO" else return "i" endif endfunction nnoremap <expr> i IndentWithI()

Simplemente busca una línea vacía cuando presionas ''i'' desde el modo insertar. Si efectivamente está en una línea vacía, la eliminará y abrirá una nueva, aprovechando de forma efectiva el funcionamiento de la "línea abierta".

Nota: "_ antes de que el cc se asegure de que su registro no se borre