vim - para - ¿Cuál es la mejor manera de obligarte a dominar vi?
vim linux (30)
Hace un buen rato, leí un artículo del creador de viemu , aclarando muchos de los conceptos erróneos acerca de vi y explicando por qué es una buena idea (y por qué ha sido muy popular durante los últimos 30 años). El mismo tipo también tiene un gran conjunto de hojas de trucos gráficas que enseñan lo básico unos pocos bits a la vez.
Estoy convencido.
He estado convencido de los últimos 2 años, de hecho. Pero todavía no he logrado forzarme 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 ganado sobre la tremenda productividad más adelante (usando vi).
¿Alguien tiene buenos consejos para superar la curva de aprendizaje? Puede ser directamente consejos, algún otro tutorial o artículo, lo que sea.
Edición: Tenga en cuenta que soy consciente de las vim/gVim , Cream y MacVim (etc.) de vi. Mantuve mi pregunta sobre vi para referirme a la familia vi en general. Gracias por todas las grandes respuestas.
Actualización (abril 2009)
He estado usando Vim (más precisamente, MacVim) en mi vida profesional diaria desde el pasado diciembre. No voy a volver :-)
Buena suerte a todos en su dominio de Vim.
¿No usas X11 ?
$ sudu rm /usr/local/bin/emacs
¿Cambiar su shell de inicio de sesión a vi ?
Primero, ¿forzarte a usar ed , luego vi parecerá un lujo?
Utilice los enlaces de clave vi en bash ?
¿Empezar a usar vi todo el tiempo?
Me parece que aprender un editor no es terriblemente diferente de aprender un idioma. La inmersión funciona mejor.
Uso vi para ediciones realmente rápidas o cuando no puedo usar X11 por algún motivo, pero vivo en emacs . Los editores realmente poderosos merecen tomarse el tiempo para aprender.
A lo largo de los años, he sido un usuario de vim de nuevo, de nuevo, de nuevo (haciendo el trabajo ocasional de administrador de sistemas). Recientemente empecé a pasar más tiempo haciendo mi trabajo de programación en él. Yo sugeriría comenzar con gvim también. Se integra bien con la mayoría de los entornos de SO, y (aún mejor), puede recurrir al mouse cuando lo necesite :).
Para comenzar con vim, ejecute 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 a través de un documento, y cómo se graban las acciones de edición con los comandos de movimiento, etc. Después de eso, las cosas serán MUCHO más claras.
Luego, comience a realizar ediciones rápidas y menores con él (material de reemplazo del bloc de notas) hasta que esté lo suficientemente cómodo como para hacer una edición útil a un clip rápido. Luego trata de hacer tu trabajo diario en él. ¡Te encontrarás con ganas de "repetir la última acción" en otros editores en muy poco tiempo!
Anote todos los atajos y funciones que usa en su editor actual mientras lo usa en el trabajo. Luego siéntese el sábado por la mañana y, utilizando Google y el desbordamiento de pila, descubra cómo hacer cada uno de los de vi. Probablemente sea mejor si usa una hoja (o hojas) de papel para esto.
Ahora deshabilite / elimine los otros editores en el trabajo para que le lleve más tiempo encontrarlos y volver a instalarlos que mirar su hoja de comparación y hacerlo en vi, es decir, no tiene otra opción.
Por último, publique su lista de accesos directos cruzados desde su antiguo editor a su nuevo en su blog.
¡Buena suerte!
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 puede describir en términos simples (como "intercambiar párrafos de texto" o "eliminar todo después del carácter X en líneas comentadas"), es algo que puede hacer con solo pulsar un par de teclas en vim.
Hay algunas características clave que son extremadamente útiles, y terminarás usando 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
- Canalización a programas Unix externos.
- Mapeos clave
- Autocompletar (Cp, Cx Cp, Cx Cf)
- La combinación de operación + movimiento (esto es increíblemente poderoso)
Pregunte a otros programadores qué funciones les resultan más útiles y adopte las que se ajusten mejor a su cerebro. Roba ideas de .vimrc
s de otras personas ( aquí está la mía )
Debe comenzar con vim/gVim (Vi IMproved) y especialmente su GUI - gVim . La GUI tiene menús y en Windows puede usar los accesos directos para copiar, cortar y pegar, por lo que puede reemplazar el Bloc de notas inmediatamente. Y como los menús muestran los accesos directos (comandos vim), puedes aprender mucho.
Otra cosa que debe hacer desde el principio es configurar vi para sus necesidades. Por ejemplo, puede transformar vim en un IDE de Python . Al hacer esto, no tendrá excusa para usar otro editor, porque vi le ofrecerá todo lo que necesita.
Dos cosas que mejorarán enormemente tus habilidades de vi:
- Práctica práctica práctica
- Nethack
EDITAR: He creado un conjunto de tarjetas de memoria flash en el sitio de repetición espaciada en línea flashcarddb.com , en caso de que esté interesado ...
- Use un programa de tarjeta de memoria flash de repetición espaciada como mnemosyne , supermemo o anki para incorporar el aprendizaje y la retención de nuevos comandos en su rutina diaria. No es suficiente usar vim como tu 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.
- Mantener un .vimrc con personalizaciones.
- Escribe o edita un plugin vim
El motivo principal por el que uso vi
es ssh
(o Putty en Windows): cuando inicia sesión en un servidor Unix de forma remota, vi
siempre está disponible. Y funciona con VT100 cuando no se asignan las teclas de cursor ni el retroceso / eliminación.
También tener un libro como VI Editor Pocket Reference ayuda mucho.
En primer lugar, es posible que desee recoger 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 impacto de la productividad (sin ser despedido), sugiero encargarse de un proyecto de fin de semana con el único propósito de aprender el editor. Mantenga su documentación abierta mientras trabaja, y sea lo suficientemente disciplinado como para no volverse loco. A medida que aprendas más, hazte eficiente y comienza a confiar en la memoria muscular, no será tan difícil seguir con ella.
He estado usando Vim durante tanto tiempo que ni siquiera pienso en qué teclas presionar para buscar, navegar o guardar. Y mis manos nunca dejan el teclado. Usar Vim es una de las mejores elecciones que he hecho en mi carrera de programación.
Enfrenta el hecho de que creará un éxito de rendimiento inmediato. Al aprender una nueva herramienta, debe poder hacer algo que sepa hacer con otras herramientas para que el problema no sea su problema. Después de usar la nueva herramienta por un tiempo, desaparecerá y solo se enfocará en el problema subyacente.
Con algo como vim (como han dicho otros, vim es muy superior a vi) es importante volver a leer y examinar la documentación periódicamente. La interfaz es completamente indiscutible sin ella. Con cada nueva lectura, verás una función y dirás "ah ja, eso habría resuelto este problema que estaba tratando de resolver la semana pasada", y lo archivaré en tu cerebro. Las soluciones conectadas a los problemas reales que ha tenido son mucho más fáciles de recordar que los accesos directos aleatorios.
Al final, puedes usar vim con un subconjunto bastante pequeño de sus características, así que no te sientas abrumado con todas las campanas y silbidos. Piense en todas las funciones de Word, ¿el 99% de las personas las usa?
Es fácil escribir una gran lista de comandos / atajos, pero es difícil recordarlos todos sin práctica.
Concéntrese en un nuevo comando a la vez. Cuando se convierta en automático, por ejemplo, después de usarlo durante una o dos semanas, agregue otro a su repertorio.
Tomará el camino más largo para lograr ciertas cosas a corto plazo: estas son oportunidades obvias para que aprendan nuevos atajos.
En mi experiencia, fue más fácil cuando intenté no tomar demasiado a la vez.
Es posible que desee comenzar con crema. 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 para todos los propósitos prácticos. Pero habilite el "modo experto" y tendrá todo el poder y el comportamiento de vim.
Así que puedes comenzar a usar Cream como un editor de texto regular y luego experimentar con el "modo experto" hasta que te sientas lo suficientemente cómodo como para cambiar completamente a vim.
Escribí una guía para la edición eficiente con Vim hace un tiempo. Puede que le resulte útil.
Daría un paso atrás por un minuto y me preguntaba "¿por qué quiero aprender este editor? ¿Qué me hace pensar que será más rápido o mejor que mi editor de texto actual?" Luego, aprenda 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 en una pulsación de tecla (independientemente del archivo en el que esté) es una característica absolutamente asesina, una con la que tengo problemas para trabajar.
Use su archivo .vimrc para hacer macros que automaticen tareas comunes.
Su editor-selector de 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. :-)
Instala gVim
en todas las plataformas que uses.
Luego ejecute el vimtutor ( :help vimtutor
o vimtutor
en la línea de comandos).
Mire la siguiente conferencia y siga sus consejos: 7 hábitos para la edición eficaz de texto 2.0
Digo que definitivamente quieres comenzar a usarlo para toda tu edición. Si temes una pérdida de productividad, tómate un fin de semana para practicarlo de manera sólida (una vez hice esto para cambiar a dvorak desde qwerty y tuve mi productividad lo suficientemente alta para el lunes y logré seguir adelante).
¡Vale la pena el esfuerzo y no mirarás atrás!
La forma más sencilla de forzarte es simplemente eliminar a todos los demás editores de tu máquina. Deshazte de la tentación :)
Lo primero que haría es poner un pedazo de papel o un libro sobre sus teclas de flecha y sus teclas de entrada / inicio / fin / pgup / abajo. Esos no son necesarios en Vi.
A continuación, me acostumbraría a presionar ctrl + [cuando te digan que golpees escapar. Es mucho más rápido y no tendrá que quitarse las manos del teclado.
Entonces 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, sólo practica la práctica práctica.
editar La 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 le impiden abrazar realmente la naturaleza modal, que es muy poderosa cuando se domina.
Mi recomendación es crear 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 para obligarte a usarlos en el trabajo o en cualquier entorno sensible al tiempo.
He hecho esto antes para familiarizarme con los entornos / editores, y funciona bastante bien.
Si tiene problemas para encontrar cosas para escribir, recomiendo rehacer proyectos que hizo en la escuela (o cualquier otra cosa que haya hecho anteriormente). Este método tiene la ventaja adicional de permitirle ver en qué medida se ha convertido en un mejor desarrollador. :)
Edición: olvidé mencionar que debes hacer esto completamente desde la consola para evitar cualquier tentación de usar el mouse.
Mi sugerencia número uno: aprender a escribir rápido, sin necesidad de mirar el teclado.
Si no puedes tocar el tipo y siempre estás buscando y buscando el colon o el hjkl o:% s / foo / bar, olvídalo. Escribir puede ser más rápido que usar el mouse, pero si ese no es el caso para ti, vi no va a funcionar.
Pero combinar buenas habilidades de escritura, ssh y screen y vi será natural.
Mi sugerencia: empezar poco a poco. Simplemente comienza por memorizar un pequeño conjunto de comandos más útiles. Cuando empecé vi, estos eran mis 10 mejores:
- (Esc) para volver al modo de comando (¡lo más importante!)
- a para agregar texto despues del cursor
- A para agregar texto al final de la línea actual
- x para borrar 1 caracter
- dd para borrar 1 linea
- R para reemplazar texto (sobrescribir)
- tu para deshacer
- : q! (Entrar) para salir sin guardar
- : w (Enter) para guardar
- ZZ para guardar y salir
Se puede hacer mucha edición básica utilizando 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 para mi editor de texto principal, pero ahora solo si tengo que hacerlo. 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 ayude a su productividad. ¡Buena suerte!
Para mí, VI es un buen editor de emergencias, pero no es algo que quiera usar si hay alguna otra alternativa disponible. Me doy cuenta de que esto no es para todos, sin embargo, no estoy diciendo que sea horrible o algo así, personalmente prefiero una interfaz de usuario visible.
¡Pero realmente tienes que saber VI si haces algo significativo en Linux!
Entonces, aprenda lo básico: i = modo de inserción esc = salir del modo de inserción: wq = guardar y salir: q! = No guardar y salir de x = cuando no esté en el modo de inserción, elimine el carácter. / = buscar
Eso te llevará a través de cualquier edición de emergencia. No hay nada que no puedas hacer con esos pocos comandos (y la navegación, por supuesto). El resto puedes "pegar" cuando lo necesites.
Sin embargo, mantenga una referencia o un libro disponible (cuando NECESITA usar VI, probablemente no podrá navegar por la web), pero la página de manual puede ser algo útil.
Personalmente, lo que tenía que hacer era asegurarme de que podía usar los enlaces de teclas Vim (o al menos, lo suficientemente cerca) en varias aplicaciones. Tener que cambiar por completo la forma en que edité el texto cada vez que cambiaba los editores hacía que fuera demasiado difícil lograr que el estilo de edición Vim se comprometiera con la memoria muscular.
En mi caso, Viemu + vimperator hizo el truco.
Pidió 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 en que puede ser productivo es memorizar los comandos que usa habitualmente. La forma en que lo hice 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, moviendo el cursor, editando, buscando , etc. Tuve cuidado de incluir solo los comandos más utilizados que no conocía. La idea es crear una referencia rápida que también sea una ayuda para la memorización, no para reemplazar las pantallas de ayuda disponibles. Luego imprimí esta lista y la pegué en la pared detrás de mi monitor para poder verla fácilmente. (Las hojas de trucos gráficas que mencionó podrían funcionar mejor para algunos, pero probablemente son 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, dibujé una línea con un lápiz. Todavía podía verlo si lo necesitaba, pero para mí era simbólico que yo hubiera dominado ese comando. Eso me dio confianza y motivación, ya que podía ver el progreso regular. Una vez que tuve la mayoría de ellos tachados, los quité y añadí algunos de los comandos más raramente usados. Continué este proceso hasta que estuve satisfecho con mi orden de vi. Sabía 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.
Puede obtener uno de los teclados originales de Happy Hacker (sin teclas de flecha) y colocar el mouse (inalámbrico) fuera de su alcance cada vez que comience a editar.
Recuerdo que cuando empecé a aprender emacs, fue después de que ya estaba muy cómodo con Vim, y estaba en el mismo barco o similar en el que estabas, donde sabía cómo hacer mucho en otro editor, así que empecé utilizando emacs, siempre fue dolorosamente lento.
Sin embargo, creo que lo que tendrá que hacer es absorber un poco el dolor, y siempre, SIEMPRE asegúrese de consultar la documentación para hacer algo que sabe que puede hacer en su editor anterior, como como moverse al final de una línea, o seleccionar una región de texto.
También es útil si tiene a mano un vi-experto local que puede hacer preguntas, o si es como nuestra empresa, promueve la programación de pares. De esa manera, cuando intenta hacer algo que debería ser fácil, simplemente puede preguntar a alguien, le mostrarán cómo, y si usa el editor regularmente durante algunas semanas, no debería tener que preguntar más. luego un par de veces antes de que se convierta en una segunda naturaleza.
Si no tiene recursos locales, hay muchos libros / tutoriales / 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 hay ninguna bala de plata, y tendrás que aceptar que, por un tiempo, serás menos productivo en eso que tu editor actual. Solo sigue diciéndote: "Otras personas han podido aprender Vi, y al menos soy tan inteligente como ellos" (Eso es lo que me digo a mí mismo de todos modos :))
eliminar todas las demás aplicaciones de editor de texto.
Entonces tendrás que aprenderlo.
gVIM tiene un tutorial realmente bueno (enlace en el grupo del menú Inicio).
Encontré que trabajar a través de eso ayudó a superar la joroba de aprendizaje inicial; y luego cambiar mi Visual Studio a ViEMU me ayudó a perfeccionar mis habilidades de VI.
Además, los screencast en http://vimcasts.org/ son excelentes!
no te fuerces El camino al dominio del amor es.
ESC gg=G
para :retab
a :retab
código y :retab
a convertir para convertir las pestañas en espacios o espacios en las pestañas fue lo que me enganchó a vim. Así que en realidad no es necesario que te veas obligado a usarlo, solo debes aprender cuándo puede ayudarte a aumentar tu velocidad.
Ir a través de vimtutor
.
Comience a usar vim para una edición simple, como archivos de configuración o html. Aprende los comandos a medida que los necesites.
Busque en Google un buen .vimrc utilizado por alguien que use una cadena de herramientas que se parezca a la suya. Active el resaltado de sintaxis. Encuentra una buena 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.
Paso 0: aprende a tocar el tipo. En serio, si tus dedos no saben dónde están las llaves, entonces Vim va a ser un dolor. E incluso si rechaza Vim, la escritura táctil mejorará su programación (pregúntele a Steve Yegge ) al hacer que la mente monitoree la fricción de enlaces. Existe una lot de software que puede ayudarte a mejorar tu escritura.
Paso 1: usa vimtutor para empezar. Está en gvim (creo que en el menú de ayuda) o simplemente puede escribir ''vimtutor'' en la línea de comandos. Tomará de 30 a 45 minutos de su tiempo y luego sus dedos sabrán lo básico de vi / vim y podrá editar archivos sin querer tirar su teclado por la ventana.
Paso 2: usa vim en todas partes. Consulte esta pregunta para obtener sugerencias y enlaces sobre el uso de enlaces de teclas vim y vi en la línea de comandos, desde su navegador web, para redactar correos electrónicos, en su IDE ... Debe usar vim para incrustar enlaces de teclas en su memoria muscular.
Paso 3: aprender más sobre vim. Solo habrás arañado la superficie con vimtutor. Puede ver este video o leer este artículo (ambos sobre los "Siete hábitos de edición efectiva de texto". Puede read sobre tips y tricks en . Puede buscar vimtips . Aprender un poco a menudo sería mi consejo. Hay mucho por ahí que apegarse a trozos pequeños será la mejor manera de hacer que el conocimiento se mantenga.
Paso 4: Beneficio :)