para - modo comando vim
Estoy buscando consejos para aprender Vim o Emacs de la manera más inteligente (18)
Soy un usuario bastante feliz de Eclipse (desarrollo principalmente en PHP y Python), sin embargo, encontré las respuestas a "¿Qué ventajas de productividad específicas ofrece Vim / Emacs sobre los editores de texto GUI?" lo suficientemente interesante como para hacerme desear probar también Vim o Emacs y ver si resultaría ser una mejor solución para mí.
Tengo la sensación general de que Vim y Emacs no son el tipo de editor que se aprende al "jugar con eso". Tengo la impresión de que debes dedicar algo de tiempo y esfuerzo para "estudiarlos" un poco, antes de que puedas beneficiarte de su poder.
Entonces, tengo dos preguntas para la comunidad:
En el hilo enlazado, los respondedores han respondido esencialmente comentando sobre Vim (a menudo mencionando: "Estoy seguro de que Emacs tiene lo mismo"). Las tendencias de Google parecen indicar que Vim es el más adoptado entre los dos, sin embargo, mi primera pregunta es: saber que no tengo experiencia previa en ninguno de los dos, y que uso y desarrollo (principalmente PHP y Python) en GNU / Linux sistemas (Ubuntu, Arch Linux ), ¿hay alguna de las dos que represente una mejor opción para comenzar? (Para ser claros: mi pregunta no es sobre la calidad de los editores, sino sobre qué es estratégicamente mejor aprender en mi situación).
¿Qué consejo me darías sobre cómo aprender a usarlo? Sé que esta es una pregunta amplia, pero deliberadamente. Eche un vistazo a esta respuesta (tema no relacionado) para obtener una idea del tipo de información / estilo de respuesta que estoy buscando [pero no me siento obligado a responder de esa manera ... ¡cualquier contribución será bienvenida, en cualquier forma!]
EDITAR (al elegir la "respuesta aceptada")
Escogí una respuesta como aceptada hace un momento, pero me gustaría decir "gracias" a todos aquellos que compartieron su experiencia y consejos: casi todo me ha sido útil de alguna manera. ¡El hilo ha excedido definitivamente mis expectativas! ¡Gracias! :)
Tengo la sensación general de que vim y emacs no son el tipo de editor que aprendes "jugando con eso".
Mi experiencia con emacs es realmente todo lo contrario. Traté de seguir el tutorial, pero no pareció ayudar mucho. La forma en que finalmente terminé aprendiendo es con una tarjeta de referencia y me obligué a usar emacs en mi código hasta que lo obtuve correcto *. Por otra parte, también tengo un tornillo suelto. Tu kilometraje puede variar. Oferta nula donde esté prohibido. Entiendes la idea.
Otro consejo que recuerdo haber leído en alguna parte es intentar escribir una lista de aproximadamente 10 comandos que desea aprender y guardarlos mientras codifica. Una vez que hayas dominado esos comandos, haz otra lista de 10 más. Sigue haciendo esto hasta que tengas una gran cantidad de editor comprometido con la memoria.
* Tenga en cuenta que la tarjeta de referencia vinculada está desactualizada. Si busca en google, puede obtener una tarjeta de referencia más actualizada.
sabiendo que no tengo experiencia previa en ninguno de los dos, y que uso y desarrollo (principalmente PHP y Python) en sistemas GNU / Linux (ubuntu, archlinux), ¿hay alguno de los dos que represente una mejor opción para ¿Empezar con?
Soy un chico de emacs, así que mi opinión debería ser obvia. Dicho esto, es probable que lo mejor sea probar el que más personas que conoces parecen usar. Tener a alguien que tenga experiencia con emacs (y supongo que será vim) es de gran ayuda.
Si no conoces a nadie que use ninguno de ellos, elige el que creas que es el más bonito o el que tiene el mejor nombre. No sabrá lo suficiente como para saber cuál le gustará, así que también puede elegir arbitrariamente.
Aconsejaría que revisar los dos valga la pena debido a varias razones ya cubiertas por otras respuestas o por los hilos "Emacs vs vim vs XY".
Aún así, si tuviera que elegir uno de ellos, iría con vim por una sola razón:
Disponibilidad
Vi (m) tiene la ventaja de que está instalado (no solo disponible) de forma predeterminada en casi cualquier sistema * nix. Entonces, no importa si es tu sistema o el de otra persona o si puedes cambiarlo o no, tu editor de texto y amigo favorito está esperándote.
Una vez que sepa vi (m), se siente increíble en esas situaciones en las que ingresa a una máquina y necesita hacer algo con el texto (navegando por un archivo, editando, lo que sea). Te sentirás como un Rey. Recuerdo varias veces cuando casi me asusté porque nano o pico no estaban instalados y tuve que usar "este feo bestia vi" que hacía cosas impredecibles cuando comencé a tipear (porque no estaba en el modo de inserción y ni siquiera sabía qué fue eso) y cuando estaba feliz de haberlo buscado en Google: "¡wq!" me saca del infierno. Ahora puedo mirar hacia atrás y sonreír al respecto.
Tengo la sensación general de que vim y emacs no son el tipo de editor que aprendes "jugando con eso", aunque
Vim y Emacs son ciertamente editores que " aprenden haciendo ".
Por supuesto, la pregunta llora por incluir estos gráficos de curvas de aprendizaje altamente editoriales de editor de texto =)
Vim podría ser un poco más difícil al principio porque su edición modal puede parecerle poco familiar al principio. Creo que la motivación es la clave aquí. El artículo " ¿Por qué, oh POR QUÉ, esos #? @! Nutheads usan vi? ", Explica las ventajas bastante bien, creo. En mi opinión, realmente vale la pena intentarlo, aunque la curva de aprendizaje sea más pronunciada que con otros editores y parece que aportas la motivación necesaria.
Volver a aprender haciendo .
Algo que desearía haber hecho la primera vez:
Echa un vistazo a Vimtutor . Es un tutorial interactivo que demuestra el poder de vim al mostrar sus comandos básicos y cómo se pueden componer. Simplemente escriba vimtutor
en su terminal.
Esto me ayudó a realmente " entenderlo " después de tratar de aprender a editar con vim varias veces en el pasado. El tutorial facilita enormemente la curva de aprendizaje ya que explica los comandos y hace que realmente los realices para que se conviertan en un hábito. Realmente hace la diferencia en comparación con sentirse frustrado por sentirse discapacitado. Usando vimtutor
también verá cuáles son los beneficios de la edición modal y, en lugar de luchar o ignorarla, la vimtutor
porque ha experimentado las ventajas de primera mano. Supongo que sería bastante difícil aprender eso solo. Entonces estos 30 minutos valen la pena.
Al usar VIM, encuentro que la siguiente tarjeta de referencia rápida es muy útil, especialmente para las cosas que no hago todos los días: VIM QuickReference
Para emacs, debe leer el Manual de GNU Emacs . No intentes hacer todo de una vez. Comience con las cosas básicas y luego pase a las funciones más potentes una vez que se sienta cómodo con las cosas más fáciles.
Antes que nada, sé humilde.
Siempre y cuando seas consciente de que son herramientas muy poderosas, estarás bien. Si encuentra que una tarea es muy difícil, y está pensando "soy yo el que no apesta, no el editor", está en la mente correcta para aprender y mejorar.
Los 7 hábitos de Bram son un buen principio para ir por http://www.moolenaar.net/habits.html
También recomiendo probar un plugin. No importa lo que haga. Le da el impulso de profundizar en los manuales.
Así es como aprendes: comienza a escribir. Cuando llegue a un punto donde desea hacer algo más que escribir, busque cómo hacerlo. Repetir. Ayuda comenzar con algunos conceptos básicos, digamos 7 comandos fundamentales. Aparte de eso, cuando te encuentres queriendo hacer alguna operación, búscala y úsala.
Casi todo lo que ve o con lo que interactúa en Emacs puede contarle sobre sí mismo, solo necesita saber cómo hacerlo.
Para aprender Emacs, aprenda sobre el contexto actual de Emacs: cuáles son los valores de las cosas, cuáles son las relaciones entre ellos, cómo se indican, cómo puede cambiarlos o interactuar con ellos.
Lo más importante que aprender es que Emacs es Emacs Lisp, es un ecosistema Lisp. Aprender Emacs significa también aprender Emacs Lisp: cuanto más sepa, mejor. Lisp es la forma más flexible y poderosa en la que Emacs se da cuenta de sí mismo como "el editor extensible y autodocumentado" .
Icicles puede ayudarte a aprender Emacs y Emacs Lisp. Te ayuda a preguntarle a Emacs sobre sí mismo. Esta página ofrece una descripción general de las formas en que lo hace: Emacs Newbie with Icicles .
Este gran Tutorial fue de gran ayuda para mis primeros pasos en Vim. Es una introducción suave y explica al mismo tiempo la filosofía de vim de una manera agradable:
Esto realmente debería ser solo un comentario, pero contra qué respuesta ...
Con Vim le sugiero que utilice la versión de GUI para empezar, simplemente sumérjase, la ayuda integrada es excelente ( : h y la pantalla se divide agregando un panel con páginas de ayuda "hipervinculadas"). Con vim la única operación potencialmente peligrosa es una escritura, todo lo demás que haces es recuperable por comando o edición (deshacer y rehacer).
El poder adquirido incentiva fácilmente el aprendizaje.
Hace algún tiempo, decidí aprender vim junto a Eclipse también debido a sus potentes funciones de edición textual, búsqueda y navegación. Pero, al mismo tiempo, me gustaron las funciones de gestión de proyectos, finalización de código, refactorización y depuración de Eclipse y no quería perderlas.
Hoy en día utilizo un plugin de Eclipse llamado vrapper que me proporciona casi todas las características básicas de vim dentro de Eclipse sin perder ninguna funcionalidad de Eclipse. Por supuesto, no es un vim con todas las funciones, pero me dio la ganancia de productividad que ''esperaba'' (movimientos, el operador punto, registros y marcas). Además, este complemento se puede considerar la versión "de prueba" de vim, donde puedes aprender todo lo básico y algo avanzado dentro de tu entorno "más conocido".
Hay otro enfoque interesante llamado eclim . Eclim integra Eclipse con vim desde el lado vim para que pueda usar muchas características de Eclipse dentro de vim.
Para aprender los conceptos básicos de vim, esta hoja de trucos gráfica me ayudó mucho.
La forma en que aprendí emacs fue principalmente al hacer las dos cosas siguientes:
- Todos los menús de la GUI le muestran los enlaces de teclas que puede usar para ejecutar el mismo comando que ese elemento del menú. Preste atención a los enlaces de los elementos de menú que seleccione mucho, y pruébelos manualmente la próxima vez que tenga la oportunidad.
- ctrl-h ctrl-h (piense en "¡Ayuda! ¡Ayuda!") muestra un búfer que muestra los distintos tipos de ayuda disponibles. Si luego presiona la tecla "b" (el búfer lo llama "describe-bindings"), obtendrá una lista de todos los enlaces de teclas disponibles en el búfer en el que está trabajando. Solo lea detenidamente eso de vez en cuando con un ojo para los comandos que parecen útiles. Pruébalos cuando tengas oportunidad.
En cuanto a vi
, lo aprendí en los días previos a vim
, así que casi tuve que usar el man vi
para resolverlo. La mayoría de los usuarios de emacs le diremos que todo lo que necesita saber es :q!
("renuncia, y realmente lo digo en serio"). :-)
Pero, en verdad, si usted es usuario de Unix, necesita aprender al menos lo suficiente para hacer ediciones simples para configurar archivos y guardarlos. Nunca se sabe exactamente qué (si hay algo) obtendrá cuando intente iniciar emacs en un extraño sistema Unix del sistema, pero vi siempre está ahí.
Llegué a Vim cuando comencé a usar Linux después de años de desarrollo de Windows y tuve que trabajar mucho en sistemas remotos a través de ssh. Durante las primeras dos semanas lo odié. Después de eso no podría vivir sin eso.
Probablemente la mejor manera de comenzar es usar Vim en el modo fácil ([g] vim -y), la mayoría de las instalaciones tienen un atajo llamado evim. Esto ejecuta vim en un modo que está en modo de inserción por defecto y vuelve a asignar claves a las habituales de Windows (ctrl-S para guardar, ctrl-X para cortar, etc.). A continuación, puede utilizarlo como un editor de Windows normal, pero aún así acceder al poder de Vim.
También está Cream que es Vim + un conjunto de scripts para que se comporte aún más como un editor de Windows.
Empecé usando evim y Cream, pero descubrí que gradualmente pasé a utilizar 100% vim.
Además, si usa gvim, la mayoría de las funciones también estarán disponibles a través de los menús y podrá ver las teclas para la misma funcionalidad.
Lea también los documentos: hay muchos archivos de ayuda disponibles en cada aspecto. Todavía los veo de vez en cuando y encuentro algo nuevo.
Mi consejo para aprender emacs es comprender que todo se hace mediante un comando (escrito en elisp) que está conectado (vinculado) a las pulsaciones de tecla que realice. El poder de emacs proviene de poder escribir nuevos comandos y usar comandos que no están vinculados a las teclas (hay demasiados comandos para unir cada uno a un comando). También, por supuesto, lee y modifica los comandos que ya están en emacs.
Luego, aprenda cómo usar la tecla Ayuda y cómo hacer una lista de enlaces clave, luego cómo buscar los comandos relevantes (apropos) y vea si ya están vinculados.
Esté preparado para llevar diversiones de aprendizaje al manual de emacs (Ayuda, Manual de lectura, manual de Emacs).
No te dejes atrapar en la guerra religiosa vi (m) versus emacs. Ambos son excelentes editores. Originalmente comencé con VI (real VI no VIM) y luego comencé a usar Emacs. En estos días, tiendo a usar ambos, pero emacs más porque emacs tiene algunas características que necesito que no están en vim.
El verdadero desafío y lo que debe apuntar es cómo ser lo más eficiente, rápido y preciso posible con su editor de elección. Tanto VI como Emacs tienen mucho que ofrecer a este respecto. Sin embargo, gran parte se reduce a dos hábitos principales que necesita desarrollar
No uses el mouse Ambos editores se crearon cuando los ratones no eran la plaga que son ahora. Cuando se trata de editar, cortar, pegar, resaltar, etc., ambos editores ofrecen equivalentes de teclado. Úselos y mantenga sus dedos sobre el teclado. Te sorprenderá cuánto más rápido te convertirás
Evita las teclas de flecha. Esto es por una razón similar. Las teclas de flecha tienden a hacer que mueva sus manos fuera del teclado principal. Al final, esto también te ralentiza y te hace menos eficiente. Ambos editores proporcionan funciones mucho más convenientes que son más rápidas.
Estas son las dos cosas principales en las que debemos enfocarnos al aprender cualquiera de estos editores. Hay muchas más, pero para empezar, simplemente comienza centrándote en usar el teclado principal.
Una vez que haya comprendido eso, entonces comience a pensar en cómo puede modificar su entorno para adaptarlo a sus necesidades. En este momento, estarás familiarizado con el poder del editor que has elegido y probablemente tengas algunas ideas. Ambos editores son muy configurables. Encuentro que emacs es el más configurable, pero puedes perderlo fácilmente escribiendo elisp para configurar las cosas y, antes de que te des cuenta, eres un programador de elisp que hace un poco de PHP y Python. Hasta cierto punto, lo mismo puede suceder con VIM, pero en menor grado. Sin embargo, tenga en cuenta que los valores predeterminados por lo general han sido establecidos por personas con mucha experiencia y que probablemente saben algo que usted no sabe. Evite cometer el error de tratar de modificar cualquiera de los editores para que sea su uso. Aprenda primero cómo funciona con configuración mínima y luego cambie una vez que tenga una idea de por qué se hizo de alguna manera; conozca las reglas antes de romperlas.
Si te tomas en serio la programación, tu editor será tu herramienta más importante. Otras herramientas importantes son su pantalla, su silla y su teclado. El resto es incidental.
Para vim try vimtutor
Un argumento a favor de Vim si conoce Python es que puede escribir scripts de Vim en Python. Ver :h python
. Emacs requiere que aprendas elisp.
Me encuentro gravitando hacia Vim para los lenguajes de guiones como Ruby / Perl / Python / PHP, y para Emacs para los idiomas que son más interactivos (Lisp, en esencia). Si desarrolla su código de Python utilizando un shell interactivo de Python, Emacs podría ser bueno, ya que puede insertar un shell de Python directamente en Emacs. Si escribe código y lo ejecuta mucho desde la línea de comandos, Vim puede manejarlo con facilidad a través de :make
o :!
.
Realmente te recomiendo que aprendas ambas cosas y escojas la que más te guste. Ambos son dignos de saber.
Wow, vi / vim vs emacs, qué tentación ...
Desde la perspectiva de un usuario vi ...
- Siempre allí
vi está disponible sobre cada sistema Unix que se haya lanzado, en la instalación predeterminada y disponible para Win - Puede salvarte de RSI
vi usa claves de la fila de inicio para casi todo, los modificadores como control y meta se usan solo para las funciones que rara vez se invocan e incluso el uso de la tecla de mayúsculas es moderado. Probablemente todo fue un accidente afortunado, pero no te rías de RSI. Le puede pasar a cualquiera, es muy doloroso, puede terminar su carrera y es difícil de tratar. - Comienza al instante .
En el pasado, esta era una gran ventaja sobre emacs. Los usuarios de Emacs tuvieron que iniciarse solo una vez y navegar por todas partes dentro de emacs. Hoy comienza más rápido, pero en vi, es perfectamente razonable abandonarlo por completo en cada compilación o ciclo de prueba. - Tiene un impresionante modo de línea
El modo de línea en vi es retrocompatible con el programa original de Unix ed (1), un editor que solo tenía un modo de línea. Es decir, el editor de línea regular de expresión-sustitución-motor de vi - / - fue alguna vez un editor por sí mismo. - Fácilmente scriptable
¿Tienes algo que quieras hacer para cada archivo.whatever
en tu proyecto? Es fácil escribir un script declarativo que editará una secuencia de archivos. No hay necesidad de programación imperativa o de procedimiento. - Fácilmente extensible
Vim, al menos, puede extenderse en Python.
Yo iría por Emacs. El nombre de comando explícito hará que su tarea sea más fácil. Cambié a emacs después de tener años de experiencia con vi y nunca miré hacia atrás. Ve con el tutorial primero. Pasar el rato en #emacs en irc y las personas estarán encantadas de ayudarte en tiempo real, para cualquier otra cosa que necesites.