He notado que mientras editaba a lo largo de una línea en un archivo .txt en modo de inserción, el cursor se moverá al comienzo de la línea después de una escritura usando la secuencia de teclas:
<esc>:w
Me gustaría cambiar este comportamiento de modo que el cursor permanezca en posición después de: escribir. es posible? No necesito que el cursor permanezca en modo de inserción, solo me gustaría que mantenga su última posición después de una escritura.
Estoy usando gVim 7.4 en Windows. Mi .vimrc es muy básico, no creo que ninguna de mis configuraciones interfiera con este comportamiento. También he eliminado el abastecimiento de mswin.vim y example.vim de mi .vimrc (como se incluye con el instalador oficial de Windows vim.org).
Después de leer los comentarios a continuación, volví a mirar el problema y me di cuenta de que el cursor solo se desliza hacia el extremo izquierdo después de escribir en líneas que están formadas por espacios en blanco. En otras palabras, el cursor solo se desliza hacia el extremo izquierdo en esc-: w cuando la línea es una sangría colgante sin otros caracteres además de los espacios . El .vimrc maneja los comportamientos de sangría con esta configuración:
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set autoindent
Por lo tanto, una nueva línea creada debajo de una línea con sangría contendrá 4 espacios en blanco finales como los primeros 4 espacios de la línea (que quiero mantener). Sobre la tecla 'esc' presione el cursor desliza hacia el extremo izquierdo del búfer.
¿Hay alguna manera de retener la posición del cursor al presionar 'esc' para volver al modo normal, en una línea compuesta por espacios en blanco al final (como sangría)?
gvim -u NONE -U NONE
(puede usar cmd.exe o hacer un acceso directo)? Esto evitará cargar sus archivos (g) vimrc.Respuestas:
Mirando la documentación para autoindent tiene una respuesta de por qué y cómo solucionarlo.
:help 'autoindent'
:En otras palabras, si desea que no pierda la sangría, escriba algo y luego retroceda antes de presionar Esc, y el espacio inicial permanecerá.
Alternativamente, si solo desea volver al nivel de sangría cuando regrese al modo de inserción y también lo esté utilizando
'cindent'
, use en Shift-Slugar de i, lo que borrará la línea (ya vacía) y comenzará en el nivel de sangría apropiado. Esta no es una solución tan general como la anterior, pero prefiero esto cuando escribo código C, para que mis archivos no se guarden realmente con líneas de solo espacios en blanco.fuente
nnoremap o o <BS><Esc><DEL>
, ynnoremap O O <BS><Esc><DEL>