indent awesome python vim vi

awesome - Evita que Vim haga sangría en la línea al escribir dos puntos(:) en Python



vim python syntax (3)

Cada vez que agrego un carácter : en Vim en modo Python, puede:

  • sangra la línea
  • deduce la línea
  • no hace nada

¿Qué es lo que está tratando de hacer y cómo me deshago de este comportamiento?


Ciertas teclas, cuando se presionan, activarán la función de sangría de Vim, que intentará establecer la cantidad correcta de sangría en la línea actual. (Puede activarlo manualmente escribiendo == en modo normal).

Puede cambiar las claves que activan este comportamiento, pero primero necesita saber qué modo de sangrado se está utilizando.

Primero, ejecuta :set indentexpr? . Si no está vacío (esperaría esto para Python), entonces se está utilizando el modo indentexpr . En este caso, ejecutando :set indentkeys? Te da la lista de teclas de activación. Para eliminar los dos puntos, ejecute :setlocal indentkeys-=:

Si indentexpr está vacío, es probable que esté utilizando el modo cindent y :set cindent? Te diré que cindent está establecido. En este caso, haga lo mismo que antes, pero use cinkeys lugar de indentkeys . (Tenga en cuenta que el modo indentexpr tiene prioridad sobre el modo cindent ).


Está tratando de ser útil. Si desea desactivar toda la sangría automática para el archivo actual,

:setlocal noautoindent :setlocal nocindent :setlocal nosmartindent :setlocal indentexpr=

O bien, puede agregar set en su archivo vimrc. Usted puede hacer esto por tipo de archivo también. Ver here


La respuesta de Nathan Grigg me puso en el camino correcto. Tuve que hacer algunos cambios para mi configuración.

Tuve que usar :setlocal indentkeys-=<:> , porque en mi caso :set indentkeys? mostró indentkeys=0{,0},!^F,o,O,e,<:>,=elif,=except .

Además, poner :setlocal indentkeys-=<:> en .vim/after/ftplugin/python.vim no funcionó para que el cambio fuera permanente. Descubrí que hay un archivo de sangría vim python incorporado que se ejecuta DESPUÉS de este archivo after-ftplugin.

Para diagnosticar, abra un archivo de Python para editarlo y ejecute :scriptnames . Eso le mostrará una lista de todos los scripts vim que se han ejecutado, en orden de prioridad. Las secuencias de comandos al final de esa lista se han aplicado más recientemente, y tienen prioridad. Vea esta pregunta en SuperUser para más información.

Cuando hice eso, me mostró un archivo vim /my-install-path/vim/7.4.1830/share/vim/vim74/indent/python.vim en /my-install-path/vim/7.4.1830/share/vim/vim74/indent/python.vim . Efectivamente, eso fue establecer <:> como parte de las claves de sangría.

Para solucionarlo, puse un autocommand en .vimrc, y eso realmente tiene la última palabra.

autocmd FileType python setlocal indentkeys-=<:>

Actualizar

Tuve que agregar :setlocal indentkeys-=: después de todo. Esto es lo que tengo en mi .vimrc ahora.

autocmd FileType python setlocal indentkeys-=<:> autocmd FileType python setlocal indentkeys-=: