Pregunta

Justo al frente:sí no Quiere iniciar una guerra religiosa.

he usado vi desde que tengo uso de razón, y las pocas veces que he intentado retomar Emacs He estado tan perdido que rápidamente me di por vencido.Sin embargo, mucha gente considera que Emacs es muy poderoso.Su programabilidad es algo legendaria.Principalmente me dedico al desarrollo de Solaris+Java y me gustaría hacer una pregunta sencilla:¿Aumentará mi productividad si invierto tiempo en entender Emacs?¿La funcionalidad que ofrece es superior? Empuje ¿Se va a recuperar en aumentos de productividad en un plazo razonable?

Repetir:No quiero una respuesta de "mi editor es mejor que el tuyo".Sólo quiero una respuesta sí o no sobre si vale la pena invertir tiempo o no.¿Realmente aumentará mi productividad?

¿Fue útil?

Solución

Prefiero emacs a vi, pero me siento cómodo con ambos.

Hay algunas cosas que puedes hacer en emacs que lo hacen más poderoso que vi, pero no todas están relacionadas con la programación.(¿Puedes enviar correos electrónicos o leer noticias desde vi?No, pero ¿a quién le importa?) Si te sientes cómodo con el ceceo (yo no), es posible que puedas escribir complementos, modos y demás para hacerte la vida más fácil, pero eso probablemente sea coloración y refuerzo de sintaxis. a juego y atractivos para la vista como ese.

Dejaré de divagar ahora.¿Será tu productividad aumentar el uso de emacs?No.

Actualizar:Vea mi comentario a continuación.Desde que publiqué esto, tener He descubierto formas en las que el uso de emacs me ha hecho más productivo que el uso de vi.

Otros consejos

[Descargo de responsabilidad: personalmente, prefiero Vim.Descargo de responsabilidad:sigue leyendo.]

Vim sobresale en lo pequeño:Al hacer que el movimiento y la acción sean conceptos separados y al proporcionar funciones para repeticiones complejas, puede realizar operaciones de edición increíblemente poderosas con solo una breve secuencia de pulsaciones de teclas.Puede hacer fácilmente cosas en Vim en el curso normal de la edición que requerirían que acceda a secuencias de comandos en Emacs.Además, la mayor parte de la energía que utiliza sale de la caja, por lo que incluso si tiene mucho .vimrc personalizaciones, es probable que pueda trabajar productivamente con cualquier Instalación de Vim.

Emacs sobresale en lo grande:Al mapear todos sus conceptos de UI directamente a construcciones y conceptos básicos en Elisp, resulta muy fácil introducir globalmente características para tipos específicos de archivos o circunstancias, haciendo de Emacs algo así como una forma de Excel basada en texto y mucho más estructurada y programable.Esto supone que dedicará mucho tiempo a personalizar su entorno según sus necesidades y preferencias personales.Por supuesto, Emacs hace todo lo posible para que sea fácil permanecer dentro de ese entorno para todo lo que desee hacer.

En última instancia, ninguno de los dos es superior.Ofrecen diferentes estilos y, dependiendo de tus inclinaciones, uno u otro se adaptará mejor a tus necesidades personales y a tu forma de pensar.Siempre es útil conocer ambos (y más editores), por supuesto.Pero no vas a ser apreciablemente más productivo de ninguna manera.

vi es un cuchillo de cocina.

vim es un cuchillo de chef realmente bonito, afilado y equilibrado.

Emacs es un sable de luz.

La mayor parte del tiempo, mi trabajo requiere que pique verduras.De vez en cuando tengo que enfrentarme a todo un ejército de robots.

He estado usando Emacs durante 20 años.Estoy escribiendo en Emacs ahora mismo con un widget llamado "Es todo texto" eso me permite introducir y sacar texto de los cuadros de texto en Firefox.Puedo ir muy rápido en Emacs.Soy significativamente menos productivo sin él.

Esto es muy discutible, pero también creo que aprender Emacs puede enseñarte mucho sobre programación.

Dependiendo de cómo codifiques, puede observar un aumento de la productividad.En segundo plano, también soy usuario de vim desde hace mucho tiempo, pero aprendí emacs hace aproximadamente 2 años y ahora los uso indistintamente.

Lo que me llevó al punto de aprender emacs fue su útil capacidad para tener una gran cantidad de archivos abiertos a la vez y cambiar fácilmente entre ellos.Estaba en medio de la introducción de una característica que agregaba y afectaba a una gran cantidad de clases.(Esto era C++, por lo que normalmente había dos archivos por clase). Como todavía estaba reafirmando la interfaz, normalmente estaba en medio de la actualización de un archivo cuando me daba cuenta de que necesitaba cambiar otro.

Con gvim, era más fácil abrir una nueva ventana para cada archivo, lo que empezaba a resultar difícil de manejar.Sin embargo, con Emacs era sencillo abrir un nuevo archivo en la misma ventana (Ctrl-x, Ctrl-f).Una vez que Emacs tiene un archivo abierto, es muy fácil alternar entre los búferes abiertos (Ctrl-x, Ctrl-b).

Yendo un paso más allá, una sola sesión de emacs puede abrir muchas ventanas, por lo que además de dividir la ventana verticalmente, podría decidir, sin interrumpir el trabajo en un archivo, abrir otro al lado, permitiéndome trabajar efectivamente uno al lado del otro. lado mientras se mantiene cada ventana con el ancho predeterminado de 80 caracteres.

Todavía hay algunas cosas que encuentro más fáciles en vim (p. ej.modo de selección de bloque, grabación de macro simple, modo diff) y cosas que son más fáciles en Emacs (alineación de líneas, administración de archivos/búfer, administración de ventanas/pantallas).Por lo tanto, me encuentro alternando entre los dos (y a veces usando ambos simultáneamente), dependiendo de la tarea de edición que anticipo.

Si aún no estás seguro, te sugiero que lo pruebes.Ejecute el tutorial de Emacs y luego utilícelo para escribir código durante una mañana o un día, apoyándose en gran medida en la ayuda.Si aún no te gusta lo que ves, quédate con vim.Independientemente de lo que el editor aporte, su familiaridad y conocimiento de la herramienta serán, con diferencia, el factor más importante en su productividad.

No quiero una guerra santa, pero responda una pregunta muy subjetiva con un sí o un no.

Sí, es posible que observe un aumento de la productividad gracias a su poderosa funcionalidad.

No, no verá un aumento de productividad porque es posible que los patrones y metáforas utilizados en emacs no se alineen con su cerebro.

La respuesta corta a su pregunta es "SÍ".Más detalles a continuación.

Utilicé vi casi exclusivamente desde 1980 hasta 1991.La única vez que no usé vi fue cuando estaba lidiando con una instalación mínima de Unix que era demasiado pequeña para incluir vi, así que tuve que volver a ed, que es el subconjunto mínimo de funcionalidad de edición que se creó en el vi original. encima de.

Desde aproximadamente 1985 en adelante, otros programadores donde trabajé constantemente elogiaban a emacs.Pero cada vez que intentaba aprenderlo no llegaba muy lejos.Pasaría una hora repasando el tutorial de emacs (C-h t) y al final todo lo que sabría sería cómo insertar y modificar texto y moverme por la pantalla.Podía hacer mucho más con vi de lo que había aprendido en esa hora con emacs y no pude hacer el cambio.Tres meses después encontraba tiempo para dedicar una hora más y terminaba leyendo el mismo material.Emacs tiene una curva de aprendizaje con "L" mayúscula.No fue hasta que estuve haciendo un contrato en el que todos los demás usaban emacs que finalmente decidí que necesitaba dedicar más de una hora seguida a aprenderlo.Después de pasar un poco más de un día sin hacer nada más que trabajar en el tutorial y la documentación incluida, finalmente llegué al punto en el que podía hacer cosas con emacs que no podía con vi.A partir de entonces no quise volver nunca más.Todavía puedo escribir comandos vi mientras duermo, pero puedo hacer mucho más con emacs.

Comprenda que estoy comparando emacs y vi, no vim.Nunca conocí las extensiones que vim ha agregado a vi, y es probable que muchas de ellas sean características copiadas de emacs.Si es así, y si ya domina vim, es posible que emacs no tenga tantas ventajas para usted.

Entre las cosas de las que dependo todo el tiempo en emacs se encuentran:

  1. Cuando usas emacs, todo se trata como texto.Esto significa que puedes manipular cualquier dato en cualquier búfer con prácticamente los mismos comandos.Y en los casos en que un búfer esté en un modo en el que algunos de los comandos estándar no estén disponibles, puede copiar texto a otro búfer que se ejecute en modo fundamental y usar los comandos estándar allí.

  2. Emacs proporciona un entorno de múltiples "ventanas" que se puede visualizar en una terminal de celda de caracteres.En los días anteriores a los gráficos de mapa de bits y las ventanas reales, emacs se escribía para simular un comportamiento similar al de una ventana utilizando nada más que caracteres ascii y la posición del cursor.Probablemente estés pensando: "Eso es historia antigua.¿Por qué alguien debería preocuparse por eso hoy?" Todavía uso esa capacidad todos los días.Utilizo una empresa de alojamiento web que me permite acceso SSH.Entonces puedo iniciar sesión en un host Linux a través de Internet y ejecutar comandos de shell.Si bien eso es bastante poderoso, es mucho más poderoso poder dividir mi emulador de terminal en "ventanas" usando emacs, ejecutar shells en varias de esas "ventanas", editar archivos en otras ventanas y ver y editar directorios en otras "ventanas". ventanas".

    En realidad, cuando dije "ventana" en el párrafo anterior, en realidad quise decir "búfer".La emulación de celdas de caracteres de Windows de Emacs es una forma de dividir el espacio de la pantalla.Un búfer de emacs está asociado con contenido (un archivo, un shell bash, un directorio, texto arbitrario no asociado con un archivo, etc.) que puede o no mostrarse actualmente.Para ver lo que hay en un búfer, elige una ventana y le dice qué búfer desea ver.Por lo tanto, puede trabajar en muchas más cosas de las que tiene espacio en la pantalla para mostrar.Es más o menos análogo a lo que se hace en una GUI moderna de gráficos de mapa de bits cuando iconifica/desiconifica una ventana.

  3. Ya he aludido al hecho de que puedes ejecutar un shell dentro de un buffer de emacs.Puede tener tantos buffers ejecutando shells como desee.Puede copiar y pegar texto entre un búfer de shell y un archivo de texto, o comparar una porción de texto entre un búfer de shell y un archivo de texto usando exactamente las mismas secuencias de pulsaciones de teclas que usaría para copiar texto o comparar texto entre dos diferentes. archivos de texto.En realidad, esto es cierto para la mayoría de los tipos de buffers, no sólo para los buffers de shell y los buffers asociados con archivos.

  4. Cuando usa el comando de emacs para abrir un archivo, pero lo que ha seleccionado es en realidad un directorio, el búfer se ejecuta en modo dired (editor de directorio).En este modo, una sola pulsación de tecla abrirá lo que sea que esté apuntando el cursor actualmente, ya sea un archivo o un subdirectorio.Un búfer en modo directo es un administrador de archivos: un terminal de celdas de caracteres orientado de manera análoga al Finder en Mac o Windows Explorer.

  5. Una de las funciones de emacs que uso casi constantemente es "comparar ventanas".Prefiero esto a las herramientas de comparación de GUI o "diff" de línea de comandos como las que están integradas en Eclipse.Diff o Eclipse comparan archivos completos y le muestran qué líneas difieren.Pero, ¿qué sucede cuando tienes dos líneas diferentes que se parecen mucho?Considera lo siguiente:

    ¿Cuál es la diferencia entre esta línea y la otra?

    ¿Cuál es la diferencia entre esta línea y la otra?

    ¿Cuánto tiempo te tomaría notar la diferencia?(Pista:El apóstrofo ASCII y Unicode se parecen bastante).

    A diferencia de diff y Eclipse, que solo muestran las líneas que difieren, la función "comparar ventanas" de emacs es interactiva.Coloca el cursor en cada una de las dos ventanas una al lado de la otra en un punto donde el contenido de la ventana es el mismo.Ejecute "comparar-ventanas" y el cursor en cada ventana se moverá al primer carácter que difiera.Vuelva a colocar el cursor en una de las ventanas hasta el punto en que sea igual que la otra ventana y vuelva a ejecutar "comparar ventanas" para encontrar la siguiente diferencia.Esto facilita la comparación de subporciones de archivos.

    Otra cosa para la que uso habitualmente "ventanas de comparación" es para comparar sumas de comprobación.Muchos proyectos de software distribuyen un tarball de la aplicación en una página que también incluye un hash MD5 del tarball.Entonces, ¿cómo se compara el hash MD5 en la página de distribución con el hash MD5 calculado a partir del archivo descargado?Emacs hace que esto sea trivial.

    Primero copie el hash MD5 de la página web en un nuevo búfer de emacs.Luego, después de descargar el archivo .tar.gz, ejecute:

    md5sum archivo descargado.tar.gz

    en un búfer de shell.Con esos dos buffers mostrados en ventanas de emacs una al lado de la otra, coloque el cursor en cada ventana al comienzo de la suma de verificación y ejecute "comparar-ventanas".Si son iguales, el cursor en cada ventana se ubicará al final de cada suma de verificación.

  6. En el punto anterior, di el ejemplo de ejecutar "comparar-ventanas" en las líneas:

    ¿Cuál es la diferencia entre esta línea y la otra?

    ¿Cuál es la diferencia entre esta línea y la otra?

    "comparar-ventanas" dejará el cursor posicionado sobre el apóstrofo en cada línea.Entonces, ahora sabes qué personajes difieren.¿Pero qué personajes son?Escriba el comando de dos teclas CTRL-x = y emacs mostrará el carácter, su valor ascii en octal, decimal y hexadecimal, el desplazamiento del carácter desde el principio del archivo y el desplazamiento del carácter desde el principio de la línea.Dado que ASCII es una codificación de 7 bits, todos los caracteres ASCII tienen su bit de orden superior desactivado.Una vez que veas que el valor del primer apóstrofe es 0x27 y el segundo es 0x92, es obvio que el primero está en el juego de caracteres ASCII y el segundo no.

  7. Emacs fue uno de los primeros IDE, quizás el primero.Tiene modos para idiomas específicos.Los encuentro útiles para imponer una sangría consistente en mi código para hacerlo más legible.También hay una funcionalidad integrada para compilar y depurar código.No uso mucho la funcionalidad de compilación porque cuando escribía para un lenguaje compilado como C, estaba acostumbrado a hacerlo en el símbolo del shell.La funcionalidad de depuración fue muy buena para C y C++.Integró gdb con el editor de tal manera que obtuvo prácticamente la misma funcionalidad que las capacidades de depuración ahora en Eclipse, pero no desperdició espacio en la pantalla como lo hacen los IDE modernos basados ​​en GUI.En teoría, la integración del depurador debería ser fácil de aplicar a prácticamente cualquier otro idioma, pero no he comprobado con qué otros idiomas funciona hoy en día.

  8. Emacs le permite crear macros diciéndole cuándo comenzar a recordar lo que está escribiendo y cuándo detenerse.Esto es extremadamente poderoso para las tareas que realiza con frecuencia.

  9. Emacs es infinitamente extensible si conoces Lisp.Pero aunque nunca aprendí Emacs Lisp, todavía considero que Emacs es una de las herramientas más poderosas que he usado.

  10. Combinaciones de teclas de Emacs.Seré el primero en admitir que las combinaciones de teclas de Emacs apestan.Pero es mucho más poderoso que cualquier otra cosa que haya usado, por lo que estoy dispuesto a soportar las combinaciones de teclas.

  11. Con humor, hace años, el autor de Emacs, Richard Stallman (también creador de la GPL, fundador del proyecto GNU y fundador de la FSF), satirizó a quienes tratan vi vs.emacs como guerra santa.Inventó el personaje "San IGNUcio" de la Iglesia de Emacs.En ese sentido, Stallman comentó: "A veces la gente me pregunta si es pecado en la Iglesia de Emacs usar el otro editor de texto vi.Bueno, es cierto que vi vi vi es el editor de la bestia, pero usar una versión gratuita de vi no es pecado, es una penitencia." (Ver http://stallman.org/saint.html.También hay una linda foto de él, pero como soy nuevo en StackOverflow, no me permite publicar más de una URL.Así que ve al mismo dominio, pero busca el archivo saintignucius.jpg)

Utilicé Vim durante 10 años antes de profundizar en Emacs hace 2 años.Tengo un recuerdo razonablemente reciente de cómo mi curva de productividad modificó con el tiempo.

Todos mis puntos son condicionales, YMMV dependiendo de tus fortalezas y experiencia.

Si ha usado Unix y la línea de comando durante suficiente tiempo como para estar familiarizado con C-a, C-e, C-n, C-p, C-k, C-y, etc. tal como funcionan en el shell, no le tomará mucho tiempo hacer la transición al uso de esos mismos enlaces (los valores predeterminados) en Emacs.Recientemente descubrí que XCode también usa estos enlaces.

Si se siente cómodo con un editor siempre en ejecución, cuidando los buffers (como lo haría con las pestañas del navegador) y, por lo tanto, viviendo en la aplicación (como lo haría con las aplicaciones Web2.0 en el navegador), es probable que Emacs muestre mejoras inmediatas en la productividad.

Si generalmente trabaja en proyectos de muchos archivos relacionados, esta persistencia ofrece algunos beneficios adicionales al mantener el contexto de ese búfer.Cada búfer está contextualizado en su archivo abierto, lo que permite el uso conveniente de varias herramientas que aumentan la productividad para ese proyecto (como grep-find, eshell, run-python y slime).Esto, junto con la finalización de texto, yasnippets, etc., comienza a parecerse una pequeña fracción a un IDE, aunque ad hoc y muy individualizado por su configuración.Esto es aparte de servicios más civilizados similares a Emacs IDE como ECB.

Mi productividad se vio afectada inicialmente cuando escribí "jjjkkk" constantemente Esc-Esc-Esc-Esc durante la primera semana más o menos.La semana siguiente comencé a usar con cautela las teclas de navegación correctas.Entonces descubrí el archivo de configuración...Sinceramente, si hubiera tenido Kit de inicio de Emacs Desde el principio, habría dicho que mi productividad lentamente volvió a la paridad durante la tercera o cuarta semana, pero bajé a la madriguera del archivo de configuración.Sin embargo, un compañero de trabajo mío acaba de hacer la transición de vim a emacs, acaba de tomar el kit de inicio y está en camino.Primera semana y parece cómodo y disfrutando de todos los beneficios sorpresa (esa sensación probablemente durará una década).

Finalmente, si comete errores, inmediatamente ganará productividad (y confianza) gracias al anillo circular de matar/tirar y deshacer.Personalmente, también soy un fanático de las operaciones de deshacer específicas de cada región.

Mi respuesta corta es Sí, vale la pena tomarse de 3 a 4 semanas de productividad cada vez menor para aprender Emacs.Incluso si decide que prefiere una combinación de utilidades Unix optimizada en lugar de Emacs para el desarrollo, obtendrá de ella una educación ampliamente aplicable más allá del editor.

La documentación de Emacs es un bosque.Pasé de Emacs a Vim cuando me di cuenta de lo organizada que está la documentación de Vim y de lo adaptables que son muchas de sus características.No sé qué le espera a un experto en Emacs, pero le advertiré que aprender a hacer algo útil lleva mucho tiempo y no le hará mejorar en nethack.Quédate con Vim.

compañero de texto es un mejor Emacs para Mac, aunque eso no le ayudará con Solaris.Eclipse es genial y tiene muchos complementos.

Emacs proporcionará una ganancia de productividad si está dispuesto a aprenderlo y personalizarlo para que se ajuste a sus necesidades.La mayoría de la gente no lo es.Para aumentar su productividad, debe utilizar la herramienta para algo más que la simple edición: la mayoría de las personas nunca pasan de la simple edición.

Aquí hay una prueba rápida:¿Ha personalizado su administrador de ventanas para que su entorno sea más eficiente (adaptado a sus necesidades)?Si la respuesta es 'no', es probable que no obtenga el retorno de la inversión aprendiendo emacs.

Dicho esto, si estás desarrollando Java, Eclipse es la respuesta estándar, por lo que tu pregunta es bastante discutible.

Estaba muy feliz con mi Vim, pero una vez que escuché de modo organización, Comencé a aprender Emacs.El modo org podría ser una razón importante para aprender Emacs.

Me encanta emacs y lo uso todos los días.

Dicho esto, no creo que el costo de aprenderlo se recupere con ganancias de productividad en el futuro.

Si estás programando Java, necesitas un buen IDE.Emacs va bastante lejos para serlo, pero seamos realistas, IDEA et al lo superaron sin lugar a dudas.(Emacs probablemente inspiró muchos de esos IDE, pero esa es otra historia).

Dos veces intenté aprender Emacs.Simplemente no se ajusta a cómo funciona mi cerebro y por eso no lo uso.

Emacs (o vim) no es significativamente mejor que vim (o Emacs).Ambos tienen muchas opciones para agregar que les permiten hacer cosas increíbles.No tengo ninguna duda de que cualquier cosa que puedas hacer en Emacs también puedes hacerlo en Vim, pero no de forma estándar.

Pruebe Emacs.A ver si encaja mejor.Es una situación sin pérdidas.

Quiero investigar más sobre emacs, pero simplemente no puedo usarlo durante largos períodos de tiempo;me duelen las manos.¿Estoy haciendo algo terriblemente mal?

vim y emacs, son LOS editores más capaces y lo han sido durante bastante tiempo.Si conoces uno muy bien, dudo que ganes tanto en el proceso...

Sin embargo, siempre es una buena idea analizar qué complemento está disponible, ya que un par de complementos nuevos pueden hacer maravillas para la productividad.

/Johan

No (y he usado ambos).

En la misma línea de no buscar una guerra religiosa (pero adelante y votame negativamente si crees que debes hacerlo), ¿por qué crees que la única opción para vi es emacs?¿Es el sistema operativo en el que desarrollas o simplemente las opciones que exploraste?

El panorama de desarrollo de Java disfruta de algunos de los mejores IDE en estos días (tanto gratuitos como de pago), si no el mejor en lo que respecta a edición de código y soporte de refactorización. IntelliJ IDEA incluso tiene un complemento vi que puede ayudarlo a sentirse más como en casa. por ejemplo (no estoy seguro si hay algo similar disponible para Eclipse).Si bien cambiar las herramientas implica una curva de aprendizaje, el tiempo dedicado a hacerlo podría valer la pena si el salto es lo suficientemente grande.

¿Qué tan rápido escribes?Si cazas y picoteas, entonces emacs no es para ti.Aunque si eres rápido, puede ser útil no tener que agarrar el mouse todo el tiempo.

Generalmente, emacs es más poderoso que vi.Podrías hacer muchas más cosas en emacs.

Su productividad aumentará si decide dedicar tiempo a programar su editor de texto.De los dos editores, emacs presenta un mejor marco o personalización constante.Si no programas tu editor de texto, quédate con lo que te resulte cómodo.

Una buena razón para aprender Emacs es que otros programas también usan combinaciones de teclas de Emacs.Puede usar combinaciones de teclas de Emacs en un símbolo del sistema bash, por ejemplo, o cualquier otra cosa que use GNU readline.Es bueno aprender el movimiento básico y la eliminación de palabras/líneas y deshacer/rehacer acordes en Emacs para poder usarlos en otros programas.Su productividad aumentará en esas otras herramientas incluso si nunca vuelve a utilizar Emacs.

Conozco Vim y Emacs, y Vim se adapta mejor a mi cerebro y a mis hábitos.Pero otras personas afirman lo mismo sobre Emacs.Nunca lo sabrás por ti mismo a menos que lo intentes.No lleva mucho tiempo aprender Emacs lo suficientemente bien como para ver si te va a gustar.

¿Realmente aumentará mi productividad?

Durante los primeros días/semanas, absolutamente no.

Después de que dejes de tener que leer el tutorial cada vez que quieras editar algo, seguro...

Emacs es Es más "potente" que vim, su motor de scripting es mucho más flexible y hay muchos más scripts, modos y similares creados en torno a emacs.

Dicho esto, es todo lo contrario.Si dedicaras la misma cantidad de tiempo a mejorar tu conocimiento de vim, podrías ser igual de productivo.

Quizás no sea productivo de la misma manera: yo diría que vim es más rápido para editar archivos, emacs es mejor para hacer todo lo demás (nuevamente, personalmente diría cosas como flymake-mode, los enlaces VCS son más rápidos de usar que el equivalente de vim)

Estoy de acuerdo con Alan Storm:"porque los patrones y metáforas utilizados en Emacs pueden no alinearse con tu cerebro"

Este es un factor muy importante.Diferentes cerebros se adaptan de manera diferente a diferentes interfaces.

Algunas de las características principales, y fácilmente disponibles, que realmente me encantan de Emacs y que considero como potenciadoras de la productividad:
1.Función "yank-pop": cada corte/copia se guarda en una pila para que luego puedas elegir cuál pegar (no sé si vi/Vim tiene esto, pero la mayoría de los IDE de Java no).
2.el mapeo de navegación con la tecla Ctrl: esto le permite navegar por su archivo sin mover las manos para usar las teclas de flecha.(la combinación de teclas en otros editores ayuda, por supuesto)
3.disponible en casi todas las plataformas (también es cierto para vi/Vim, por supuesto), ya sea que estén basadas en GUI o en texto (los IDE de Java también están disponibles en la mayoría de las plataformas, pero solo en modo GUI, y son significativamente más grandes y deben instalarse por separado, mientras que Emacs generalmente está más disponible: sistemas BSD / *nix / Linux / Mac
4.Prefiero que mi editor permanezca fuera del camino hasta que lo necesite: la pantalla espartana de Emacs me obliga a pensar antes de escribir.
5.Las teclas de navegación básicas en Emacs están disponibles universalmente: en mi Mac OS, puedo usar estas teclas en la terminal, mac mail, etc.

En última instancia, si la filosofía de Emacs le atrae, hará un esfuerzo adicional para aprenderla.Y te recompensará.

Dado que vi/Vim y Emacs están bastante cerca en términos de lo que pueden o no hacer, la productividad con estos dos editores proviene de la experiencia en su uso.

En mi opinión, como programador no te llevará mucho tiempo tener una idea general sobre Emacs una vez que empieces a usarlo.Otros sólo pueden decir mucho, tienes que probarlo por ti mismo para saberlo.

En cuanto a mí, uso ambos.Es como llevar más de un arma a una guerra: usar la correcta en las circunstancias adecuadas.;)

Me gusta Emacs, puedes ampliarlo según tus necesidades; en mi opinión, cualquier sistema que puedas ampliar tú mismo es digno de premio.

Descargo de responsabilidad: Soy ignorante.He sido usuario de emacs durante aproximadamente 4 años y usuario de vim durante aproximadamente 6 meses, tal vez más como 15 si cuentas todas las veces que intenté aprenderlo y lo odié.(La distinción entre modo escritura y modo movimiento me mata.Cada vez.Entonces, si no te mata, entonces mi opinión podría no tener ningún valor). Dicho esto, creo que mi opinión es interesantemente diferente de las otras 26 que he visto aquí, así que voy a expresarla.:Descargo de responsabilidad

Mi opinión:

  • Emacs es mejor para escribir, especialmente a gran escala "Estoy escribiendo una nueva función y pasará un tiempo antes de que pueda escribir". intentar para ver si corre".
  • Vim es mejor para editar, especialmente para ediciones rápidas.

Cuando necesito comprender y piratear 8 archivos simultáneamente, las propiedades de Emacs como administrador de ventanas en mosaico con múltiples búfer (los búferes tienen una correspondencia 1.2:1 con los archivos, a menudo son lo mismo, pero no necesariamente) regexp -buscar (y reemplazar) son increíbles.

Si no me gusta alguna pequeña cosa por git diff en el shell (no uso las funciones VC de emacs muy a menudo, aunque cuando lo hago me encantan) lo abro con vim y salgo más rápido de lo que podría presionar Alt-TAB.

El hecho de que los comandos de edición de Emacs estén más disponibles mientras se escribe hace que escribir sea más sencillo. mucho más rápido que en Vim. Ctrl+a es mucho más rápido que ESC ^ i, y no tienes la carga cognitiva de "¿quiero?" a o i o o o O..." en lo cual, Dios, odio pensar.Y lo mismo para todos los demás comandos de movimiento.

Escribo más rápido, mucho más rápido, en Emacs.Eso significa cosas como Modo de organización (que uso para todo:Listas de tareas pendientes, seguimiento de errores, notas, correos electrónicos largos, documentación...) tienen más sentido (para mí) en Emacs que en Vim.

Y Elisp es increíble, aunque apesta.Compensa totalmente las expresiones regulares rotas de Emacs:puedes usar todo el poder de emacs en todos lados, incluso en un reemplazo de expresiones regulares de varios archivos.Y en fragmentos de texto.

Si estás preocupado por la salud de tus manos Elige Vim.

Sufrí un ataque de RSI en el pasado y descubrí que uno de los principales culpables era el "acorde", es decir.manteniendo presionadas muchas teclas al mismo tiempo.Emacs usa ampliamente acordes, mientras que VIM usa comandos de una sola letra encadenados en rápida sucesión.Esto supone mucha menos tensión para las manos, ya que los músculos no tienen que torcerse ni contorsionarse para ejecutar comandos en el editor.Las lesiones debidas al RSI pueden arruinar su productividad, así que asegúrese de tenerlo en cuenta en sus cálculos.

Realmente no veo ninguna razón para cambiar.He usado vi durante mucho tiempo y me siento bastante cómodo con él;aproximadamente cada seis meses instalaba emacs para probarlo y luego rápidamente volvía a cambiar.Sí, había cosas que prefería mucho de vi, pero la razón principal por la que nunca me quedé con él es porque no vale la pena invertir tiempo en aprender completamente a otro editor cuando ya conozco uno extremadamente capaz.
Me acuerdo de esto estudio bastante anticuado.

En mi opinión, SLIME es la única razón para cambiar a emacs si ya domina vi.

No

He estado usando emacs durante años, soy un converso de VIM y me encanta.

Pero cualquier ganancia de productividad derivada de tener un editor mejor y programable será totalmente aniquilada por la enorme cantidad de trabajo que se necesita para dominar emacs.Fue diseñado como un editor de consola y su idea de interfaz no es la suya.

E incluso cuando lo tenga por completo, su productividad adicional se expresará principalmente en el lisp adicional de emacs que pueda escribir.

¿A quién le importa?¡Es muy divertido y los perros cecean!Si quieres "hacer las cosas", olvídate de la programación.Siempre puedes contratar programadores para "hacer" "cosas".

La única circunstancia bajo la cual recomendaría aprender emacs por razones de productividad es si eres un programador lisp/scheme/clojure.Crea un entorno de ceceo tan bueno que los pocos segundos que te ahorrará cada vez que quieras hacer algo se convertirán rápidamente en una ganancia real.Y elisp (que se relaciona con el ceceo como las macros de Excel se relacionan con ALGOL) parecerá mucho menos extraño si ya utiliza un ceceo real.

Si lo intentas, úsalo en una consola virtual donde parezca una forma más sensata de organizar un editor.Sólo cuando eso tenga sentido, intente usarlo bajo un sistema de ventanas, que lo combatirá.

En una respuesta anterior, Aristóteles Pagaltzis escribió:"Vim sobresale en lo pequeño...Puedes hacer fácilmente cosas en Vim en el curso normal de la edición que requerirían que accedas a secuencias de comandos en Emacs".

Cambié a Emacs después de más de una década de uso exclusivo de VI, e inicialmente habría acordado con el reclamo: "Puedes hacer las cosas fácilmente en Vim en el curso normal de la edición que requeriría que te caigas a las secuencias de comandos en emacs". Pero luego descubrí que al usar la capacidad de macro de Emacs y un gran recuento de repeticiones, fácilmente podría hacer que los emacs hicieran casi todo lo que VI había hecho fácil, y mucho más.

La funcionalidad macro de Emacs implica tres comandos:

C-x (       start remembering keystrokes
C-x )       stop remembering keystrokes
C-x e       replay the remembered keystrokes

Por ejemplo, en vi si quisiera encontrar todos <a> etiquetas en un archivo html y agregue un target atributo, podría hacer algo como lo siguiente:

:g/^<a/s/>/ target="_blank">/

Este ejemplo no es perfecto, ya que supone que todos <a> Las etiquetas están en una línea por sí mismas.Pero es lo suficientemente bueno para ilustrar cómo se realiza la tarea equivalente en dos editores diferentes.

Para lograr el mismo efecto fácilmente en emacs, esto es lo que hago:

1.  C-x (
2.  M-C-s <a\>
3.  C-b
4.  C-s >
5.  C-b
6.   target="_blank"
7.  C-x )
8.  C-u 10000 C-x e

Aquí hay una descripción de lo que hace cada pulsación de tecla anterior:

1.  start remembering keystrokes
2.  regex search for <a.  Note that the "\>" after the "a" is not HTML.  It's emacs regex notation for end-of-word.
3.  back up one character - as a side-effect this gets you out of search mode
4.  search for the next ">"
5.  back up over the ">"
6.  enter space as an attribute-delimiter followed by the target="_blank" attribute
7.  stop remembering keystrokes
8.  replay the remembered keystrokes 10,000 times or until the search fails

Parece complicado, pero en realidad es muy fácil de escribir.Y puedes usar este enfoque para hacer muchas cosas que vi no puede hacer, sin tener que recurrir al código Lisp.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top