for customize python vim

customize - Cómo configurar vim para que no ponga comentarios al comienzo de las líneas mientras se editan los archivos python



vim python syntax (8)

@PolyThinker Aunque veo esa respuesta a esta pregunta, en mi opinión no es una buena solución. El editor todavía piensa que debe estar sangrado todo el camino hacia la izquierda; verifique esto presionando == en una línea que comience con un hash, o presionando = mientras que un bloque de código con comentarios en él se resaltará para reiniciar.

Recomiendo encarecidamente la filetype indent on , y elimine el set smartindent y set autoindent (o set cindent ) de su vimrc. Alguien más (al parecer, David Bustos) tuvo la amabilidad de escribir un analizador de sangría completo para nosotros; está ubicado en $ VIMDIRECTORY / indent / python.vim.

(La solución cindent de Paul probablemente funciona para python, pero la filetype indent on es mucho más útil en general).

Cuando agrego un # en el modo de inserción en una línea vacía en Vim mientras edito los archivos de python, vim mueve el # al principio de la línea, pero me gustaría que el # se inserte en el nivel de pestañas donde lo ingresé.

Por ejemplo, al escribir esto en vim

for i in range(10): #

el # no se queda allí donde ingresé.

Se mueve así, por vim.

for i in range(10): #

¿Alguien sabe de un elemento de configuración en vim que cambiaría esto?

Si ayuda, estoy usando Ubuntu 8.10.


Algunas de las otras respuestas fueron útiles, pero ninguna fue suficiente para evitar que Vim vuelva a enardecer una línea cuando ''#'' es el primer personaje. La respuesta de PolyThinker no funcionó para mí, pero dio una pista de que ''#'' podía ser reasignado para "insertar un carácter, luego #, luego eliminar el carácter adicional y poner el cursor donde debería estar". Este es el mapeo que hace eso:

inoremap # X#<left><backspace><right>

Esto es necesario porque los paquetes de sintaxis de vim parecen tratar ''#'' como un carácter especial, sin importar cómo se establezcan las opciones. Quiero que una línea comenzada con ''#'' sea la misma que una línea comenzada con cualquier otro personaje. La solución más confiable que he encontrado es la asignación anterior, que realmente cambia el primer carácter de la línea.

Nota: He encontrado que esta asignación causa problemas después de ejecutar I#<esc> y presionar "." para rehacer la inserción anterior. No he encontrado una solución todavía.


Encontré una respuesta aquí http://vim.wikia.com/wiki/Restoring_indent_after_typing_hash

Parece que la opción vim smartindent es la causa del problema. La página de referencia anterior describe work-a-rounds pero después de leer la ayuda en smartindent en vim (: help smartindent), decidí probar cindent en lugar de smartindent.

Reemplacé

set smartindent

con

set cindent

en mi archivo .vimrc

y hasta ahora está funcionando perfectamente.

Esto también cambió el comportamiento de ''<<'' y ''>>'' para sangrar bloques visuales que incluyen comentarios de pitón.

Hay más opciones de configuración e información sobre la sangría en la ayuda de vim para smartindent y cindent (: help smartindent y: help cindent).


Es causado por la función ''smartindent''. Si tiene :set smartindent en su .vimrc, necesita eliminarlo.



Mi solución a la desincrustación de #:

Si usa Cindent, reconozca que está diseñado para la codificación C y C ++. Aquí, un # significa que está creando un #DEFINE o #MACRO (), por lo que el comportamiento es correcto. Pero para otros idiomas donde # es un comentario, es irritante.

Lo siguiente funcionó para mí:

" cindent enable specific indenting for C code " set cin nocin set cin " cinkeys The default cinkeys causes leading # to unindent to column 0. " To prevent this, remove the 0# from the definition. " set cinkeys=0{,0},0),:,0#,!^F,o,O,e - default set cinkeys=0{,0},0),:,!^F,o,O,e


Tengo las siguientes líneas en mi .vimrc, parece que está instalado por defecto con mi Ubuntu 8.10

set smartindent inoremap # X^H# set autoindent

Y no observo el problema. Tal vez puedas probar esto. (Tenga en cuenta que ^ H debe ingresarse mediante Ctrl-V Ctrl-H)


~/.vimrc set smartindent de ~/.vimrc pero todavía no deshabilitó smartindent. Cuando abrí un archivo .py y ejecuté :set smartindent? se muestra smartindent .

Resulta que más abajo en el ~/.vimrc estaba esta línea:

autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class ^^^^^^^^^^^

Una vez que eliminé "smartindent" de esa línea, entonces smartindent finalmente se deshabilitó y mis comentarios se sangraron correctamente otra vez.