domingo, 6 de enero de 2008

Configurando vim para Python

Este post es más que nada un ayuda memoria personal, ya que mil veces configuré el vim para programar en Python, y mil veces termino perdiendo la configuración por descuido, reinstalaciones, etc.

Encontré una página donde resumen perfectamente la configuración que me gusta usar. Acá va mi .vimrc:

syntax on
set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4
set background=dark
set autoindent

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


Espero que a alguno le sirva. Por lo pronto espero acordarme que ahora dejo acá también esta configuración.

12 comentarios:

Tordek dijo...
Este comentario ha sido eliminado por el autor.
Tordek dijo...
Este comentario ha sido eliminado por el autor.
Gabriel dijo...

tordek, antes que nada, gracias por tu comentrio.

Entiendo tu indignación por el uso de espacios en vez de tabs. De hecho esta debe ser una de las primeras guerras santas de la historia informática :)

No tengo una posición definida al respecto, simplemente me adapto a las necesidas/situaciones. Si tenes un buen editor es casi lo mismo usar una y otra opción.

En el caso de Python en particular, la recomendación para el estilo de programación es usar cuatro espacios en vez de tabs. Herejía o no, es es el estandar propuesto. Me parece que se basan principalmente en que los espacios son más 'portables': generan menos errores al copiar y pegar en mails, html, etc; y en un lenguaje como Python donde la indentación es parte de la sintaxis, esto es bastante importante.

De la especificacón:


Indentation

Use 4 spaces per indentation level.

For really old code that you don't want to mess up, you can continue to
use 8-space tabs.

Tabs or Spaces?

Never mix tabs and spaces.

The most popular way of indenting Python is with spaces only. The
second-most popular way is with tabs only. Code indented with a mixture
of tabs and spaces should be converted to using spaces exclusively. When
invoking the Python command line interpreter with the -t option, it issues
warnings about code that illegally mixes tabs and spaces. When using -tt
these warnings become errors. These options are highly recommended!

For new projects, spaces-only are strongly recommended over tabs. Most
editors have features that make this easy to do.


Podés leer la especificación completa en http://www.python.org/dev/peps/pep-0008/


PD: A veces la gente tiene sus motivos para pensar diferente a vos. No seas tan intolerante ;)

Anónimo dijo...

Tordek despues de ver la respuesta que te ha dado gabriel solo te puedo decir una cosa ..." En tu puta cara"...

Tordek dijo...
Este comentario ha sido eliminado por el autor.
Gabriel dijo...
Este comentario ha sido eliminado por el autor.
Tordek dijo...
Este blog ha sido eliminado por un administrador de blog.
Unknown dijo...

Yo cambié los tabs por espacios para programar en PYthon tal y como tu indicas y me encontré ante el problema de que los archivos Makefile necesitan tabs reales. La solución se presentó inicialmente como cambiar el .vimrc para poder editar Makefiles...

La solución final es definir un .vimrc un poquito más profesional:

autocmd FileType make set sr noexpandtab ts=8 sw=8 "archivos make
autocmd FileType python set sr et ts=4 sw=4 softtabstop=4 "archivo python

Si te fijas, da lo mismo poner, por ejemplo tabstop que ts... cada día me sorprendo más de las posibilidades de VI :D

Pablo Morales dijo...

Impresionante con la keyword configurar vim para python apareces primero.

Grande Patinio!

mcun dijo...

yo quiero revivir el flame ;)

@Tordek así como tu tienes el derecho a usar tab de 200 yo tengo derecho a formatear mi código como se me antoja y
si no te gustan los espacios pues no leas mi código

Gabriel dijo...

Jaja... si así no revivís un flame, es porque ya nadie lo lee :D

Tordek dijo...

Vengo a apagar el flame, entonces. Ni me acordaba de este thread.

Sigo prefiriendo los tabs sobre los espacios... cuando se puede, claro...

Es una lástima que muchos no entienden (y, bueno, desgraciadamente es dificil configurar el editor para que haga lo correcto) cómo usar tabs y espacios juntos (dicese, tabs para indentar, espacios para alinear (Y ESTO NO ES MEZCLAR)), haciendo que "solo espacios" sea la opción más accesible...

Ahora prefiero que el PEP diga "solo espacios" a que no dijera nada (y ahora entiendo por qué dice "tabs de 8 espacios").