Pregunta

Hace un buen rato leí un artículo del creador de viemu, aclarando muchos conceptos erróneos sobre vi, además de explicando por qué es una buena idea (y por qué ha sido muy popular durante los últimos 30 años o más).El mismo chico también tiene un gran conjunto de hojas de referencia gráficas que enseñan lo básico poco a poco.

Estoy convencido.

De hecho, he estado convencido durante los últimos 2 años.Pero todavía no he podido obligarme a aprender vi como mi editor principal, la curva de aprendizaje es demasiado alta.Cuando me pongo a trabajar, la productividad aceptable pero inmediata (usando mi editor actual) hasta ahora ha superado a la tremenda productividad más adelante (usando vi).

¿Alguien tiene algún buen consejo para ayudar a superar la curva de aprendizaje?Pueden ser consejos simples, algún otro tutorial o artículo, lo que sea.

Editar:Tenga en cuenta que soy consciente de vim/gVim, Crema y macvim (etc.) variantes de vi.Mantuve mi pregunta sobre vi para referirme a la familia vi en su conjunto.Gracias por todas las excelentes respuestas.

Actualización (abril de 2009)

He estado usando Vim (más precisamente, MacVim) en mi día a día profesional desde diciembre pasado.No vuelvo :-)

Buena suerte a todos en su dominio de Vim.

¿Fue útil?

Solución

En primer lugar, es posible que desees adquirir Vim;tiene un conjunto de características muy superior junto con todo lo que tiene vi.

Dicho esto, se necesita disciplina para aprender.Si tiene un trabajo y no puede permitirse el lujo de reducir la productividad (sin que lo despidan), le sugiero que emprenda un proyecto de fin de semana con el único propósito de aprender a editar.Mantenga abierta su documentación mientras trabaja y sea lo suficientemente disciplinado como para no acobardarse.A medida que aprenda más, se vuelva eficiente y comience a confiar en la memoria muscular, no será tan difícil mantenerlo.

He estado usando Vim durante tanto tiempo que ni siquiera pienso en qué teclas presionar para buscar, navegar o guardar.Y mis manos nunca abandonan el teclado.Usar Vim es una de las mejores decisiones que he tomado en mi carrera de programación.

Otros consejos

Lo primero que haría es colocar una hoja de papel o un libro sobre las teclas de flecha y las teclas ins/home/end/pgup/down.Esos no son necesarios en Vi.

Luego me acostumbraría a presionar ctrl+[ cada vez que te digan que presiones escapar.Es mucho más rápido y no necesitarás quitar las manos del teclado.

Luego miraba mis screencasts:

http://www.youtube.com/watch?v=FcpQ7koECgk

http://www.youtube.com/watch?v=c6WCm6z5msk

http://www.youtube.com/watch?v=BPDoI7gflxM

http://www.youtube.com/watch?v=J1_CfIb-3X4

Entonces, simplemente practica, practica, practica.

editarLa razón para evitar las teclas de flecha es que te ralentizan.Uno de los mayores beneficios de Vim es la velocidad que te permite.Las teclas de flecha también te impiden abrazar realmente la naturaleza modal, que es muy poderosa cuando se domina.

Paso 0: aprende a escribir al tacto.En serio, si tus dedos no saben dónde están las teclas, entonces vim será una molestia.E incluso si rechaza vim, la mecanografía táctil mejora tu programación (preguntar Steve Yege ) haciendo que la mente controle el enlace sin fricción.Hay un lote de software que pueden ayudarte a mejorar tu mecanografía.

Paso 1: usar vimtutor para empezar.Está en GVIM (en el menú de ayuda, creo) o simplemente puede escribir 'vimtutor' en la línea de comando.Tomará 30-45 minutos de su tiempo y luego sus dedos sabrán los conceptos básicos de VI/VIM y debería poder editar archivos sin querer arrojar su teclado fuera de la ventana.

Paso 2: usa vim en todas partes.Ver esta preguntaPara consejos y enlaces para usar enlaces de teclas VIM y VI en la línea de comandos, desde su navegador web, para componer correos electrónicos, en su IDE ...Debe usar VIM para incrustar los enlaces clave en la memoria muscular.

Paso 3: aprende más sobre vim.Solo habrá arañado la superficie con vimtutor.Puede mira este video o leer Este artículo (Ambos sobre los "siete hábitos de edición de texto efectiva".Puedeleeracerca deconsejosytrucos enDesbordamiento de pila.puedes navegar consejos vim.Aprender un litle a menudo sería mi consejo: hay tanto que pegar a los trozos del tamaño de un bocado será la mejor manera de hacer que el conocimiento se mantenga.

Etapa 4: Ganancia :)

He sido un usuario intermitente de vim a lo largo de los años (realizando ocasionalmente trabajos de administrador del sistema).Recientemente comencé a dedicar más tiempo a mi trabajo de programación en él.Sugeriría comenzar con gvim también.Se integra bien con la mayoría de los entornos de sistema operativo y (aún mejor), puedes recurrir al mouse cuando lo necesites :).

Para empezar con vim, ejecutar el vimtutor (incluido con gVim) una o dos veces (tarda aproximadamente una hora).¡No puedo exagerar lo útil que fue para mí!Especialmente las primeras partes sobre las diferentes formas de moverse por un documento, y cómo se graban las acciones de edición con comandos de movimiento, etc, etc.Después de eso, las cosas serán MUCHO más claras.

Luego, comience a realizar ediciones rápidas y menores con él (reemplazo del bloc de notas) hasta que se sienta lo suficientemente cómodo como para realizar ediciones útiles en un clip rápido.Entonces intenta realizar tu trabajo diario en él.¡Te encontrarás añorando el comando "repetir la última acción" en otros editores en poco tiempo!

Solicitó buenos consejos para ayudar a superar la curva de aprendizaje en el editor de texto vi.Muchas de las respuestas anteriores sugieren que no utilice otros editores.Creo que es un buen consejo.Cambiar a vi desde un editor más gráfico requiere un cambio de mentalidad.Requiere pensar en términos de comandos, en lugar de cambios visuales.

No utilicé nada más que vi durante muchos años y creo que la única forma de ser productivo es memorizar los comandos que utiliza habitualmente.La forma en que hice esto fue hacer una breve lista de los comandos de teclado más comunes.Agrupé y codifiqué por colores estos comandos por función, es decir, Mover el cursor, editar, buscar, etc.Tuve cuidado de incluir sólo los comandos más utilizados que no conocía.La idea es crear una referencia rápida que también ayude a la memorización, no reemplazar las pantallas de ayuda disponibles.Luego imprimí esta lista y la pegué con cinta adhesiva en la pared detrás de mi monitor para poder verla fácilmente.(Las hojas de trucos gráficas que mencionaste pueden funcionar mejor para algunos, pero probablemente sean una mejor fuente de referencia que una herramienta de memorización).

Aquí está la clave. Cuando me sentí cómodo con uno de los comandos, tracé una línea a través de él con un lápiz.Todavía podía verlo si lo necesitaba, pero para mí era simbólico que había dominado ese comando.Eso me dio confianza y motivación, ya que pude ver un progreso regular.Una vez que taché la mayoría de ellos, los eliminé y agregué algunos de los comandos que se usan con menos frecuencia.Continué este proceso hasta que estuve satisfecho con mi dominio de vi.Supe que había llegado a ese punto cuando me di cuenta de que no había tachado ningún comando ni siquiera había mirado la lista en mucho tiempo.

Hace un par de años tuve que trabajar en una plataforma UNIX donde vi era el único editor disponible.Compré un pequeño libro de referencia de bolsillo en vi, pero apenas lo usé.Terminé haciendo listas y publicándolas en la pared como lo hice la primera vez que usé vi.Al final de la primera semana, me sentí muy cómodo a pesar de que habían pasado cinco años desde que usé vi.

Para mí, VI es un buen editor de emergencia, pero no es algo que quiera usar si hay alguna otra alternativa disponible.Sin embargo, me doy cuenta de que esto no es para todos, no digo que sea horrible ni nada por el estilo, simplemente prefiero una interfaz de usuario reconocible.

¡Pero realmente tienes que saber VI si haces algo importante en Linux!

Así que aprende lo básico:i = Modo insertar ESC = dejar el modo de inserción: WQ = Guardar y salir: Q! = No guarde y renuncie x = Cuando no esté en modo de inserción, elimine el carácter./=buscar

Eso le ayudará a superar cualquier emergencia de edición.No hay nada que no puedas hacer con esos pocos comandos (y la navegación, por supuesto).El resto lo puedes "añadir" cuando lo necesites.

Sin embargo, mantenga una referencia o un libro disponible (cuando NECESITE usar VI, probablemente no podrá navegar por la web), pero la página de manual puede ser algo útil.

No te fuerces.el camino hacia la maestría es el amor.

Deberías empezar con empuje (Vi mejorado) y especialmente su GUI - gVim.La GUI tiene menús y en Windows puedes usar los atajos de copiar, cortar y pegar, para que puedas reemplazar el Bloc de notas inmediatamente.Y dado que los menús muestran los accesos directos (comandos vim), podrías aprender mucho.

Otra cosa que debes hacer desde el principio es configurar vi según tus necesidades.Por ejemplo, puedes transformar vim en un IDE de Python.Al hacer esto, no tendrás excusa para utilizar otro editor, porque vi te ofrecerá todo lo que necesitas.

elimine todas las demás aplicaciones de edición de texto.

Entonces tendrás que aprenderlo.

La forma más sencilla de fuerza usted mismo podría simplemente eliminar todos los demás editores de su máquina.Deshazte de la tentación :)

Cada vez que realice una tarea de edición compleja, siga preguntándose si existe una forma más eficiente de hacerlo.La mayoría de las veces, cuando es algo que puedes describir en términos simples (como "intercambiar párrafos de texto" o "eliminar todo después del carácter X en las líneas comentadas"), es algo que puedes hacer con solo un par de teclas en vim.

Hay algunas funciones clave que son extremadamente útiles y terminarás usándolas todo el tiempo.Los que más amo son:

  • Selección de bloque (Ctrl-V)
  • Grabación de macros (q)
  • Edición virtual (:set ve=all)
  • Expresiones regulares
  • Tubería a programas Unix externos
  • Asignaciones clave
  • Autocompletar (C-p, C-x C-p, C-x C-f)
  • La combinación operación+movimiento (esto es increíblemente poderoso)

Pregunte a otros programadores qué funciones les resultan más útiles y adopte las que se adapten mejor a su cerebro.Robar ideas de otras personas. .vimrcs (Aquí está el mío)

EDITAR:he creado una tarjeta didáctica colocada en el sitio de repetición espaciada en línea flashcarddb.com, por si te interesa...

  1. Utilice un programa de tarjeta flash de repetición espaciada como mnemosina, supermemo, o anki para incorporar el aprendizaje y la retención de nuevos comandos en su rutina diaria.No es suficiente usar vim como editor diario.Para dominarlo, debes almacenar esos códigos en tu cabeza, esperando el momento en que sean la solución ideal para la tarea en cuestión.
  2. Mantener un .vimrc con personalizaciones
  3. Escribir o editar un complemento vim

Escribí una guía para edición eficiente con Vim hace un tiempo.Puede que le resulte útil.

Retrocedería un momento y me preguntaría "¿por qué quiero aprender a editar?¿Qué me hace pensar que será más rápido o mejor que mi editor de texto actual?" Luego, conozca las características que harán que Vi(m) sea indispensable para usted.

Por ejemplo, la integración CTags de Vim es completamente indispensable para mí.Trabajo con una base de código muy, muy grande, y la capacidad de saltar a una función o definición de clase con solo presionar una tecla (independientemente del archivo en el que se encuentre) es una característica absolutamente excelente, sin la cual tengo problemas para trabajar.

Utilice su archivo .vimrc para crear macros que automaticen tareas comunes.

Su selector de editores en piloto automático elegirá el editor que hará el trabajo más rápido y con la menor cantidad de esfuerzo mental.Un poco de trabajo de preparación asegurará que el editor sea Vim.:-)

Dos cosas que mejorarán enormemente tus habilidades vi:

  1. Práctica práctica práctica
  2. Nethack

Mi sugerencia:empieza pequeño.Empiece por memorizar un pequeño conjunto de los comandos más útiles.Cuando comencé vi, estos eran mis 10 mejores:

  • (Esc) para volver al modo comando (¡lo más importante!)
  • a para agregar texto después del cursor
  • A para agregar texto al final de la línea actual
  • x para eliminar 1 carácter
  • dd para eliminar 1 línea
  • R para reemplazar texto (sobrescribir)
  • tu para deshacer
  • :q!(Entrar) para salir sin guardar
  • :w (Entrar) para guardar
  • ZZ para guardar y salir

Se pueden realizar muchas ediciones básicas usando solo estos comandos.Una vez que te sientas cómodo, el resto no parece demasiado difícil.

Por cierto, me gustaría agregar que solía confiar en vi como mi editor de texto principal, pero ahora solo si es necesario.En mi caso, la productividad es mejor cuando uso herramientas como Emacs o Visual Studio (tenga en cuenta:"en mi caso").Pruebe más de una herramienta y elija la que más le ayude a su productividad.¡Buena suerte!

Suena tonto, pero jugar pícaro juegos (como Nethack o Angband) es una manera divertida de sentirse cómodo usando el h/j/k/l Teclas para la navegación del cursor.

Escriba todos los atajos y funciones que utiliza en su editor actual mientras lo usa en el trabajo.Luego, siéntese el sábado por la mañana y utilice Google y el desbordamiento de pila para descubrir cómo hacer cada uno de ellos en vi.Probablemente sea mejor si utilizas una hoja (u hojas) de papel para esto.

Ahora deshabilite/elimine los otros editores en el trabajo para que le lleve más tiempo encontrarlos y reinstalarlos que mirar su hoja de comparación y hacerlo en vi, es decir.no tienes elección.

Por último, publique su lista de atajos cruzados desde su antiguo editor al nuevo en su blog.

¡Buena suerte!

no usar X11?

$ sudu rm /usr/local/bin/emacs

Cambie su shell de inicio de sesión a vi?

Primero, oblígate a usar ed, entonces vi ¿Te parecerá un lujo?

Utilizar el vi combinaciones de teclas en intento?

Simplemente comienza a usar vi ¿todo el tiempo?

Me parece que aprender a editar no es muy diferente de aprender un idioma.La inmersión funciona mejor.

yo suelo vi para ediciones realmente rápidas o cuando no puedo usar X11 por alguna razón, pero vivo en emacs.Vale la pena tomarse el tiempo para aprender a editar editores realmente poderosos.

Mi recomendación es idear algunos programas simples y escribirlos, de principio a fin, usando VI.

Lo más probable es que al principio te sientas demasiado frustrado por la curva de aprendizaje como para obligarte a usarlos en el trabajo o en cualquier entorno en el que el tiempo sea urgente.

He hecho esto antes para familiarizarme con los entornos/editores y funciona bastante bien.

Si tienes problemas para pensar en cosas para escribir, te recomiendo que rehagas los proyectos que hiciste en la escuela (o cualquier otra cosa que hayas hecho anteriormente).Este método tiene la ventaja adicional de permitirle ver en qué medida se ha convertido en un mejor desarrollador.:)

Editar:¡Olvidé mencionar que debes hacer esto completamente desde la consola para evitar cualquier tentación de usar el mouse!

Recuerdo que cuando comencé a aprender emacs, fue después de que ya me sentía muy cómodo con Vim y estaba en el mismo barco o similar que tú, donde sabía cómo hacer muchas cosas en otro editor, así que cuando comencé Al usar emacs, siempre fue tremendamente lento.

Sin embargo, creo que lo que tendrás que hacer es absorber un poco del dolor y siempre, siempre, SIEMPRE asegurarte de buscar la documentación para hacer algo que saber puedes hacer en tu editor anterior, como moverte al final de una línea o seleccionar una región de texto.

También ayuda si tiene un vi-experto local a mano al que pueda hacer preguntas, o si es como nuestra empresa, promueve la programación en pareja.De esa manera, cuando intentes hacer algo que debería ser fácil, simplemente puedes preguntarle a alguien, él te mostrará cómo, y si usas el editor regularmente durante algunas semanas, no deberías tener que preguntar más. luego un par de veces antes de que se convierta en algo natural.

Si no tiene ningún recurso local, hay muchos libros, tutoriales y hojas de referencia en línea que deberían poder responder la mayoría de sus preguntas.

En última instancia, aprender Vi es como aprender otras habilidades, no existe una solución milagrosa y tendrás que aceptar que, por un tiempo, serás menos productivo que tu editor actual.Sigue diciéndote a ti mismo: "Otras personas han podido aprender Vi y yo soy al menos tan inteligente como ellos" (Eso es lo que me digo a mí mismo de todos modos :))

La razón principal por la que uso vi es ssh (o masilla en Windows):Cuando inicia sesión en un servidor Unix de forma remota, entonces vi siempre está disponible.Y funciona con VT100 cuando no se asignan las teclas del cursor ni la tecla de retroceso/eliminación.

También tener un libro como Referencia de bolsillo del VI Editor ayuda mucho.

gVIM tiene un tutorial realmente bueno (enlace en el grupo del menú Inicio).

Descubrí que trabajar en eso me ayudó a superar el obstáculo inicial del aprendizaje;y luego cambiar mi Visual Studio a ViEMU me ayudó a perfeccionar mis habilidades VI.

Además, los screencasts en http://vimcasts.org/ ¡son geniales!

Puedes conseguir uno de los teclados originales de Happy Hacker (sin teclas de flecha) y colocar tu mouse (inalámbrico) fuera de tu alcance cada vez que comiences a editar.

Es fácil escribir una gran lista de comandos/atajos, pero es difícil recordarlos todos sin práctica.

Concéntrese en un comando nuevo a la vez.Cuando se vuelva automático, digamos después de usarlo durante una o dos semanas, agregue otro a su repertorio.

Tomará el camino más largo para lograr ciertas cosas en el corto plazo; estas son oportunidades obvias para aprender nuevos atajos.

En mi experiencia, fue más fácil cuando intenté no abordar demasiadas cosas a la vez.

Mi sugerencia número uno:aprende a escribir rápido, sin necesidad de mirar el teclado.

Si no puedes escribir con teclado y siempre estás buscando y picoteando los dos puntos o el hjkl o :%s/foo/bar, olvídalo.Mecanografía poder ser más rápido que usar el mouse, pero si ese no es tu caso, vi no funcionará.

Pero combine buenas habilidades de mecanografía, ssh y pantalla y vi será natural.

Afronte el hecho de que creará un impacto inmediato en el rendimiento.Cuando aprendes una nueva herramienta, necesitas poder hacer algo que sabes hacer con otras herramientas para que el problema no sea tuyo.Después de usar la nueva herramienta por un tiempo, desaparecerá y usted solo se concentrará en el problema subyacente.

Con algo como vim (como han dicho otros, vim es muy superior a vi) es importante releer y explorar la documentación periódicamente.La interfaz es completamente imposible de descubrir sin él.Con cada nueva lectura, verás una característica y dirás: "Ah, ja, eso habría resuelto este problema que estaba tratando de resolver la semana pasada", y la archivarás en tu cerebro.Las soluciones relacionadas con problemas del mundo real que haya tenido son mucho más fáciles de recordar que los atajos aleatorios.

Al final, puedes usar vim con un subconjunto bastante pequeño de sus características, así que no te abrumes con todas las comodidades.Piense en todas las funciones de Word: ¿las utiliza el 99% de la gente?

ESC gg=G para reindentar el código y :retab convertir pestañas en espacios o espacios en pestañas fue lo que me enganchó a vim.Así que, en realidad, no es necesario que te obliguen a usarlo, sólo tienes que aprender cuándo puede ayudarte a aumentar tu velocidad.

Atravesar vimtutor.

Comience a usar vim para realizar ediciones sencillas, como archivos de configuración o html.Aprenda los comandos a medida que los necesite.

Busque en Google un buen .vimrc utilizado por alguien que utilice una cadena de herramientas similar a la suya.Activa el resaltado de sintaxis.Encuentra una bonita combinación de colores.

Aprenda macros porque Vim es el mejor para tareas automatizadas e inserción de fragmentos, como formatear algunas palabras en una etiqueta XML compleja o convertir un CSV en una tabla HTML.

Quizás quieras empezar con Cream.Cream se describe a sí misma como "una configuración moderna" de vim.Básicamente, es una versión especial de vim que se ve y se siente como cualquier otro editor de texto a todos los efectos prácticos.Pero habilite el "modo experto" y tendrá todo el poder y comportamiento de vim.

Así que puedes empezar a usar Cream como un editor de texto normal y luego experimentar con el "modo experto" hasta que te sientas lo suficientemente cómodo como para cambiar completamente a vim.

Instalar gVim en todas las plataformas que utilices.

Luego ejecute el vimtutor (:help vimtutor o vimtutor en la línea de comando).

Mire la siguiente conferencia y siga sus consejos: 7 hábitos para una edición de texto eficaz 2.0

Digo que definitivamente quieres comenzar a usarlo para todas tus ediciones.Si temes perder productividad, tómate un fin de semana para practicarlo de forma sólida (una vez hice esto para cambiar de qwerty a dvorak y el lunes tuve mi productividad lo suficientemente alta y logré seguir así después).

¡Vale la pena el esfuerzo y no mirarás atrás!

Personalmente, lo que tenía que hacer era asegurarme de poder usar las combinaciones de teclas de Vim (o al menos, lo suficientemente cerca) en varias aplicaciones.Tener que cambiar completamente la forma en que editaba el texto cada vez que cambiaba de editor hizo que fuera demasiado difícil lograr que el estilo de edición de Vim se comprometiera con la memoria muscular.

En mi caso, Viemu + vimperator funcionó.

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