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

difedoca

Lanero Reconocido
27 Feb 2004
287
Hola amigos, abro este tema para que los juakers experimentados, nos cuenten las bondades de usar estos dos editores en lugar de las nuevas ide. Me he dado la oportunidad de aprender Emacs un poquito no mucho y pues por ahora la unica ventaja que les veo a Vim y Emacs es que funcionan en maquinas con muy pocas prestaciones y soportan de fabrica muchos lenguajes de programacion y sintaxis de archivos de configuracion.

Me gustaria que por ejemplo gente como Krieg nos cuente por que utiliza el Vim que se que lo utiliza porque una vez lo menciono, ojala mencionara un truco o algo que solo se hace bien en Vim facil y bacano.

Yo voy a dejar un link para el que se quiera introducir a Emacs, en general de lo que he aprendido me gusta Emacs sus funcionalidades, pero no como se acceden a ellas, creo que Stallman debio ingeniarse un metodo mas simple para introducir los comandos. me parece excesivo por ejemplo que para aumentar la sangria de un texto seleccionado se tenga que teclear la siguiente secuencia de teclas.

Ctrl + espacio. Para seleccionar y luego

Alt + 4 + Ctrl + TAB

o para deshacer
Ctrl + shift + _

Y que el tecleado no tiene nada que ver con el comando por ejemplo pegar copiar cortar uno esperaria que se derivaran de la palabra en ingles ctrl - c copy pero no tiene una conbinacion de teclas rebuscada y por tanto dificil de recordar.

Copiar en Emacs es:
Alt + w

Pegar
Ctrl + y

Cortar
Ctrl + w

Sin embargo emacs tiene de todo, una cosa que me gusta en que tiene un cliente irc muy bacano mientras uno programa esta hablando con gente de #debian-es etc etc. dentro de la pagina que les pongo hay unos videos bien interesantes acerca de los editores de texto ara los que quieren profuncizar y un taller de lisp para como extender emacs por ejemplo.

http://es.gnu.org/cgi-bin/emacs-es.pl
 
Son dos caminos diferentes para un mismo fin, yo comence utilizando vim para los proyectos pero es necesario integrarlo con plugins (navegacion de directorios, ftp,etc ) y herramientas del sistemas (make, ant, grep, cvs) para tener toda la funcionalidad necesitada para el desarrollo. Ventajas: apropiación de la tecnología; como comence por este modelo entiendo bien las herramientas básicas y como funcionan en IDE's avanzados luego cuando ocurren errores estraños en estos IDE es posible detectarlos (herramientas escondidas por los IDE de java: java, javac, jar, appletviewer, etc).

Ahora he pasado al modelo utilizando IDE's pero con la base conceptual anterior es muy fácil el desarrollo, creo que ese es el orden para una apropiación de tecnología.
 
Yo uso vi por una razon sencilla, es el editor de texto mas poderoso que existe. El unico que tal vez podria darle la pelea es emacs pero no me gusta.

Los IDEs no me gustan porque prefiero hacer las cosas a mi forma y me parece que soy mas productivo asi, pero no por eso voy a decir que son malos, es simple cuestion de gustos. Otro problemita es que los IDEs vienen con editores muy malos (aunque algunos pueden configurarse para usar vi). Un editor de texto que necesite estar usando el mouse para todo es completamente inefectivo y pierde la razon de ser.

El problema que tiene vi es que no es sencillo de aprender pero una vez uno lo domina es otra cosa.

En cuanto a "trucos" es mejor leer el manual, pero bueno, algunos comandos importantes (todos en modo edicion):

Sustituir una palabra por otra:

:1,$ s/palabravieja/palabranueva/g

lo mismo pero preguntando por confirmacion:

:1,$ s/palabravieja/palabranueva/gc

Copiar un bloque:

marcar el comienzo del bloque con la marca 'a' : ma
moverse al final del bloque
copiar el bloque desde la marca 'a' y guardarlo en en buffer 'q' : "qy'a

Hacer el paste de ese bloque:

moverse al lugar donde quiere poner el bloque copiado
hacer 'paste' del bloque almacenado en 'q' : "qp

Se le pueden adicionar cosas a un bloque almacenado usando la letra en mayuscula, en el ejemplo se usaria 'Q' en lugar de 'q'

Cuando uno comete un error sabemos que se le puede dar el comando 'u' para deshacer lo ultimo que hicimos, dependiendo de la configuracion que tengamos dandole multiples veces 'u' iremos deshaciendo todo lo que hicimos. Pero a veces solo queremos recuperar lineas que borramos hace rato, para eso estan los bloques especiales del 1 al 9. Si por ejemplo ejecutamos:

"4p

eso nos permitira recuperar lo que boramos con 'd' / 'dd' hace 4 borradas.

Como borrar todo un bloque (los usuarios primiparos cuentan las lineas que quieren borrar, los avanzados hacemos esto) :

ir a la primera linea que quiere borrar
poner una marca en ella : mp
ir a la ultima linea que quieren borrar
borrar desde la marca 'p' : d'p

Esta parte de manejo de bloques y marcas es muy poco usada pero es muy poderosa.
 
Otra razón para usar VI es que cuando a usted le toca manejar archivos grandísimos, con muchas líneas el editor gráfico se hace ineficiente para desplazarse y ejecutar operaciones, con VI usted puede notar ventajas inmediatamente.

Otra cuestión es que por alguna razón he notado que los editores sufren con líneas larguísimas, texto bien extendido sin retorno de carro por un buen rato, por ejemplo: gedit ni puede abrirlos y otros editores se ven lentos en la gestión; en estos casos VI vuelve a ser muy cómodo.
 
Bueno, esta muy bien, pero entonces no veo porque los de Vi/Vim argumentan que con Emacs hay que tener 11 dedos para hacer los comandos, veo mas o menos la misma complejidad en los comandos. Me parece que es cuestion de gustos y otros factores, como cuando se empezo en el mundo unix la era Unix at&t y derivados o la era GNU/Linux.

Vieron los videos se ven interesantes no, se que depronto los usuarios de Vi ni lo descargaran y es entendible diran, ya para que ponerse a aprender otro editor manajando al peluche otro, pero me parece un excelente material y pues todos los dias se aprende algo nuevo. Lo que he notado es que en las listas de correo en canales irc y aqui en laneros hay muchisimos mas fans de Vi que de Emacs
 
Ambos editores de texto son orientados a teclado, lo que a ud le parece una secuencia complicada para la que se necesitan 11 dedos para mi son cosas que tienen sentido claramente. Por ejemplo "qp es una combinacion de 3 caracteres que significan:

" uso de bloque
q identificacion del bloque
p paste

Si no es asi, como mas se le podrian dar los comandos a un editor de texto?

PD. Siempre preferire vi porque es simplemente lo que es, un editor de texto. Emacs intenta ser todo en uno, solo le falta un kernel y uno podria bootear directamente en emacs y no necesitaria nada del sistema operativo para trabajar.
 
  • Me gusta
Reacciones: 2 personas
Aunque utilizó vim, emacs es un editor respetable y muy poderoso, pero el hecho de oprimir la tecla CTRL para la mayoría de comandos no lo hace apto para mí (puesto que para oprimir dicha tecla comunmente se utiliza el meñique y es desagradable para mí).
 
Yo aprendí a usar el método "no IDE" debido a que en la U nos ponían a trabajar mediante una cuenta SSH a sus servidores que tenían Unix puro. Y claro, para programar recurríamos a usar editores como el Emacs (que es en mi caso). Me parece que para el desarrollo me parece bastante práctico y eficiente, pero un usuario promedio siempre va a buscar el icono de algún editor de texto, que en el caso de Ubuntu sería el gedit.
 
Krieg dijo:
Ambos editores de texto son orientados a teclado, lo que a ud le parece una secuencia complicada para la que se necesitan 11 dedos para mi son cosas que tienen sentido claramente. Por ejemplo "qp es una combinacion de 3 caracteres que significan:

" uso de bloque
q identificacion del bloque
p paste

Si no es asi, como mas se le podrian dar los comandos a un editor de texto?

PD. Siempre preferire vi porque es simplemente lo que es, un editor de texto. Emacs intenta ser todo en uno, solo le falta un kernel y uno podria bootear directamente en emacs y no necesitaria nada del sistema operativo para trabajar.

Estas en lo cierto, emacs tiene cosas bacanas, pero personalmente prefiero vi, lo mejor es que es muy simple.
 
Krieg dijo:
Ambos editores de texto son orientados a teclado, lo que a ud le parece una secuencia complicada para la que se necesitan 11 dedos para mi son cosas que tienen sentido claramente. Por ejemplo "qp es una combinacion de 3 caracteres que significan:

" uso de bloque
q identificacion del bloque
p paste

Si no es asi, como mas se le podrian dar los comandos a un editor de texto?

PD. Siempre preferire vi porque es simplemente lo que es, un editor de texto. Emacs intenta ser todo en uno, solo le falta un kernel y uno podria bootear directamente en emacs y no necesitaria nada del sistema operativo para trabajar.

Cuando mencione lo de 11 dedos y comandos dificiles de recordar me referia a emacs no a vim los de vim tienen un poco mas de sentido y son mas faciles de recordar, sin embargo todo es cuestion de acostumbrarse, yo ya empece a aprender emacs y ya mas o menos lo domino como quiero, pero pude haber empezado a aprender vim pero no se porque termine usando emacs.

Algo que me gusta del vim es que es mas rapido y soporta de serie resaltado de sintaxis para mas tipos de archivo que emacs ademas es mas comun que las distros vengan con vim instalado que con emacs, en emacs siempre hay que buscar los modes adicionales, pero aun asi ya me quedo con emacs ya me siento mas comodo con el que con vim.

En el emule hay un par de libros sobre emacs muy bacanos sobre emacs, uno es una guia completa otro un pocket reference
 
Bueno, me estoy cambiando a vim, hay detalles de emacs que no me gustan y me parece muy incomodo, ademas lo que aprendi ha hacer en emacs ya casi lo tengo aprendido en vim.

Yo trabajo en consola con framebuffer 1024x768 y tengo ubuntu, como sabrán algunos ubuntu utiliza por defecto utf8, emacs en modo consola no soporta utf8, entonces los caracteres especiales no me salen bien, claro eso tiene solucion instalando el mule-yonoseque y soluciona, el problema es que esa vaina hace que el arranque de emacs sea super lento y pues una de las razones por las que utilizo consola es que todo funciona rapido entonces emacs con el mule-xxx instalado se demora hasta para editar un archivo corrienton.

Otra cosa es que el shell integrado en emacs me parece un poco incomodo, cuando proebo programas c o scripts y estos requieren entradas de teclado el shell emacs se bloquea, ademas el problema del utf8 hace que las salidas del compilador sean ilegibles; el shell con vim simplemente funciona :! comando y ya no hay caracteres raros funciona la entrada de teclado en los programas, y pues lo mejor no hay que hacer configuraciones extra para que funcione.

Otra cosa es que estoy aprendiendo y programando en c# con mono, emacs no resalta sintaxis c# y no existe un mode para esto en los repositorios, vim lo soporta de serie.

Bueno ademas de que vim es mucho mas rapido que emacs, viene instalado casi siempre en todas las distribuciones sobre todo en los livecd, es raro ver un livecd que venga con emacs por ejemplo. Entonces siempre es bueno conocer vim me molesta no dominar el editor de textos para editar archivos de una forma mas eficaz.
 
Aqui les dejo un documento bastante interesante de unas funciones de vim "escondidas" que son bastante utilies para los programadores.
 

Archivos adjuntos

  • vim_c_tut.pdf
    206.1 KB · Visitas: 311
  • Me gusta
Reacciones: 8 personas
difedoca dijo:
Aqui les dejo un documento bastante interesante de unas funciones de vim "escondidas" que son bastante utilies para los programadores.

Excelente tutorial, la mayoria de las funciones ahi incluidas son relativamente nuevas y no las conocia. Me toco actualizar mi viejo vim 6.1 a 7.0 para poderlas usar, pero estan muy buenas.

K++
 
hola a todos, bueno resulta que en estas vacaciones no tengo mi estacion de trabajo funcionando, entonces trrabajo en el pc de mi familia, pc que tiene de SO windows, instale recientemente emacs para windows pero tengo un problema que no se como resolver:
en windows
(Control+Alt+2)=@
en emacs seria:
(Control+Meta+2)=¿¿??nada

como hago para escribir los caracteres especiales en emacs para windows, nesecito esta ayuda urgente,

Gracias
 
Estoy tan contento con Vim que decidí reabrir este tema, creo que tome la mejor decisión al abandonar Emacs en favor de Vim. La gente de Emacs y los puristas de GNU creo que son excelentes programadores y filósofos pero creo que les falta vision, como es posible que a estas alturas emacs no tenga soporte completo para UTF-8, y ademas se siga utilizando un toolkit raro para la gui xaw3d o algo asi, es increible pero la version de Emacs para windows esta mejor integrada en el sistema que la version de Linux, ni para gnome ni para kde, un DnD no sirve de nada en Emacs.

Bueno esos son detalles molestos pero se puede vivir con ellos, lo que no me aguanto son los comandos difíciles de recordar, al principio aprendí Emacs pero despues de unos dias sin utilizarlo se me olvidaba como era cortar pegar cosas sencillas y tenia que volver a leer la guia Pocket que tenia. Ademas como dice tcpip4000 es molesto esa pulsadera de la tecla control para todo, creo que los comandos de Vim estan mucho mejor pensados tanto para recordarlos mas fácil como para el desplazamiento de las manos y los dedos, optimo en general.

Cuando empecé a leer el libro Vi Improved New Riders, vi muchas cosas que inicialmente me parecía exagerado y pensé que nunca las usaría, como el comando w para moverse entre palabras, b hacia atras, dw para eliminar una palabra el moverse con hjkl, sin embargo después de leer por encima el libro y editar con vim, sencillamente es espectacular el tiempo que uno se ahorra con todos esos detallitos, las operaciones con motion, bueno una cantidad de cosas que si me pongo a mencionarlas podría durar días aquí.

Otra cosa es la configurabilidad promedio del .vimrc y quisiera que este tema se convirtiera en algo asi como tips para Vim, yo por ejemplo como programo en Python debo tener cuidado de no mezclar espacios con tabs para que vim me ayude en esta tarea tengo esta configuración:

#para que me muestre los tabs con >- y los espacios con .
set listchars=tab:>-,trail:.
set list

#un esquema de color que me gusta para la sintaxis
colorscheme koehler

#para que los tabs y los espacios aparezcan en un tono gris que apenas se note para diferenciarlo del codigo

highlight SpecialKey ctermfg=DarkGray guifg=#3F3F3F

#para el tamaño del tabulador sea 4
set tabstop=4
set shiftwidth=4


Aqui un resumen de los comandos mas usados y utiles http://www.linode.com/wiki/index.php/Vim_Tutorial
Si tienes alguna configuración util posteala para que todos aprendamos