Emacs, Vim Frente a IDE's y RAD's

A estas alturas Vim se a convertido en mi herramienta preferida, existen un par de features que descubri que me hacen la vida muy fácil para lo que hago, programar en Python y Web en general.

Algo que descubri es omni-completion es como el intellisense y funcona en archivos C, Python, Java, Ruby y un monton mas, no es un completado de codigo comun que busca concordancias dentro del archivo, busca en la documentacion de las librerias, clases o etiquetas x(html), etc. es especialmente bueno para digitar codigo xhtml, y un buen codigo apegado a estandares. El inconveniente que tiene el omni-completion es que para activar el completado hay que teclear control-x control-o. A mi personalmete me parece incomodo, la solucion que encontre y muy comoda es un script llamado autocomplpop, con esto el intellisense de vim queda funcionando al peluche. Ni que decir a la hora de programar, por lo menos en python muestra la documentación de los métodos, es una pasada.

En los pantallazos podrán ver con mas detalle.
 

Archivos adjuntos

  • vim1.png
    vim1.png
    89.5 KB · Visitas: 142
  • vim2.png
    vim2.png
    98.9 KB · Visitas: 164
bros como hago para poner mi emacs en español....no he podido hasta ahora...y otra cosa no me reconoce el perl me lee java, c, c++ y rubi...pero no perl...asi que a todas termine con epica...pero me gustaria saber que pasa y como arreglarlo.....gracias pos....
 
Algo que me costo encontrar es la forma como comentar un bloque de código, por fin encontré la manera rápida, alguien en el irc #vim me lo soplo

Damos <ctrl> v seleccionamos de ahi para abajo lo que queremos comentar y luego damos un I (i mayuscula) y tecleamos el carácter para comentar casi siempre # y después 2 veces la tecla esc
 
No me funciona con vi 7.1. Seguro que no puso algo mal?

La forma en que yo lo hago es la siguiente:

V (v mayuscula) para comenzar a marcar el bloque
Bajo con la flecha hasta el final del bloque
: (dos puntos) para pasar a modo comando (aparecen unas marcas)
s/^/# para poner el # en todas las lineas
 
Pues no me falta nada, pero no se si explique bien, otra vez.

Tenemos nuestro bloque de texto a comentar nos situamos en la primera linea y columna, en modo normal tecleamos

ctrl + v

que es el comando para seleccionar un bloque visual, luego bajamos el cursor seleccionando el primer caracter de cada linea del bloque que queremos comentar (aunque a mi me funciona también seleccionando todo el bloque). Luego con la primera columna seleccionada tecleamos shift + i (i mayuscula, ojo solo funciona con I no con i) que es el comando para insertar texto antes del cursor. tecleamos el caracter para comentar por ejemplo # y luego tecleamos dos veces la tecla esc y listo.

Ojo solo funciona con bloque visual osea (ctrl + v) no funciona con los modos visuales v ni V

y con insert con i mayuscula (shift + i)
 
Bueno, este Vim es un programa excepcional. Increiblemente rapido configurable y hay un monton de personas mejorando el editor con plugins y extensiones. estoy muy contento hay cosas que he aprendido a hacer que me son de gran utilidad.

Buscar y reemplazar en multiples archivos

Esto lo estaba buscando porque en las paginas que hago aveces tengo que cambiar algunas cosas en todos los archivos html que tengo la solucion:

:args *.html

:argdo %s/cadenavieja/cadenanueva/g | w

en mi caso como utilizo mucho el reemplazar direcciones y etiquetas que contienen el caracter / tendira que escaparlo muy seguido con \/ para evitar eso se pueden sustituir los delomitadoes / por # osea

:argdo %s#cadenavieja#cadenanueva#g | w


Autocerrar corchetes, comillas, parentesis etc

Esto no es nada sofisticado pero es muy util y comodo al editar, la solucion un script que se llama autoclose.vim esta en www.vim.org


Con estas cositas y el script que les mencione antes autocomplpop, desarrollar paginas (x)html es muy muy comodo, el codigo queda muy bien identado, se ahorra uno tipeo. Ademas no solo html autocomplpop tambien soporta Ruby, Python CSS scheme y otros.
 
Vim es la berraquera

Definitivamente Vim es el editor, Dios mio es que es tremendamente rápido, configurable, util, que herramienta he encontrado en vim. En la pagina oficial existen muchísimos tips y scripts para casi cualquier cosa. Hoy lo que les muestro es algo que me ha servido muchísimo.

Una cosa que siempre quise es configurar el editor dependiendo del lenguaje o tipo de archivo que este editando, por ejemplo para seguir las convenciones del lenguaje. Dos lenguajes que utilizo mucho son Python y ruby. Las convenciones para python en cuanto a indentacion son 4 espacios y siempre utilizar espacios en vez de tabs, en ruby es igual solo que con 2 espacios como nivel de indentacion. La solución: autocmd. Ponemos en el archivo de configuracion de vim .vimrc algo como esto:

autocmd FileType python set tabstop=4|set shiftwidth=4|set expandtab
autocmd FileType ruby set tabstop=2|set shiftwidth=2|set expandtab


Tambien descubri la orden compiler que nos permite especificar con que herramienta vamos a construir el proyecto o archivo actual. Si hacemos un :compiler nos mostrara los compiladores disponibles. En mi caso me fue muy util encontrar el compilador tidy.vim para archivos (x)html. despues de hacer un :compiler tidy podemos hacer un :make y nos muestra todos los errores en el codigo, esto nos permite tener un codigo muy limpio y validado.

Tambien descubri que con el comando en modo normal gg=G reindenta todo el archivo segun la configuracion de indentacion que tengamos autoindent, cindent entre otros, pero si no nos satisface ninguno podemos indicarle a vim que utilice una herramienta externa, por ejemplo tidy tambien sirve para organizar mejor el codigo para la lectura y poner un margen de ancho, el comando como programa externo es tidy -img [nombre archivo]. Si queremos integrarlo en Vim tenemos que redefinir equalprg asi : set equalprg=tidy\ -img y listo para reindentar utilizara tidy que es mucho mejor que el autoindent. Para hacer permanentes estas configuraciones hacemos lo mismo que con python y ruby.

autocmd FileType html,xhtml set equalprg=tidy\ -imq|compiler tidy


Una cosa que quería cambiar era el hacer algo mas visual el cambio entre modos para tener la certeza de en que modo estoy actualmente si en modo de inserción o modo normal, eso me evita tener que teclear la tecla escape por si acaso que era una costumbre que tenia hasta que encontre esto:


hi Normal ctermbg=7 guibg=#E5E5E5
autocmd InsertEnter * hi Normal ctermbg=NONE guibg=NONE
autocmd InsertLeave * hi Normal ctermbg=7 guibg=#E5E5E5


Esto lo que hace es poner el fondo de color gris claro en modo normal, y cuando se ingrese a modo de inserción se cambie a blanco (en mi caso, según el esquema de color que se tenga) esto en lo personal me a ayudado mucho
 
Para los amantes de Emacs y unos tips para los de vim

Se nota que quede fascinado con vim no, bueno aunque deje emacs por vim no significa que considere malo emacs, de hecho técnicamente emacs es mas poderoso pero la forma de acceder a todo ese poder es bastante engorrosa, hay keystrokes que llegan a tener tres secuencias de teclas con modificadores tipo C-x C-a C-u y la gran mayoría usa dos C- x C- y por ejemplo, eso ya me parece exagerado y en sesiones largas cansa mucho además de que es muy difícil de recordar. Contrario a la filosofía de vim de tener siempre los dedos en lo posible en la fila asdfghjkl que algunos la llaman "home row". Además me parece que los keystrokes de vim son mas consistentes y difícilmente se olvida una vez aprendido.

Porque es mas poderoso emacs?, una de las razones es su lenguaje de extensión elisp, que es capaz de modificar al vuelo cualquier cosa sobre el editor, creo que emacs es el programa mas configurable que existe y gracias a esto existe un addon para emacs como este http://ourcomments.org/Emacs/nXhtml/doc/nxhtml.html que es tremendamente poderoso para desarrollo web un video demostrativo bastante impresionante http://ourcomments.org/Emacs/nXhtml/tut/tut-xhtml-completion.htm

Y finalmente para los que usamos vim les recomiendo dos plugins Project y Minibufexplorer los encuentran en http://www.vim.org . Básicamente el primero permite manejar proyectos creando una lista de los archivos que contiene el proyecto, se pueden tener varios proyectos abiertos a la vez, Basta con hacer un \C para crear un proyecto se le da una ruta y el agrega automáticamente todos los archivos y subdirectorios en el proyecto. El segundo minibufexplorer crea una barra en la parte superior para navegar mas intuitivamente a través de los buffers. Aquí va una captura.
 

Archivos adjuntos

  • vim.png
    vim.png
    82.1 KB · Visitas: 135
Viva vi y su derivado vim, el vi se encuentra en todo Unix que se respete, indispensable para uno como administrador Unix