2010-01-28 14 views
50

He usado VIM por más de 10 años, pero nunca he usado el scripting VIM (siempre subjetivamente creyendo que esta era un área donde VIM era más débil que Emacs).¿Una buena guía sobre scripting VIM?

Recientemente, la realización "en un script VIM, puedo ejecutar comandos de modo normal" me hizo pensar "a-ha" y de repente comencé a darme cuenta de por qué partes de un script VIM son como son.

normal ma10jd'a20kp 

es mucho más elegante que

Marker m = currentLocation(); 
advanceLines(10); 
Buffer b = delete(currentLocation(), m); 
advanceLines(-20); 
insertBuffer(b); 

Ahora la pregunta es - ¿qué es un buen recurso para aprender secuencias de comandos de vim?

Gracias!

Respuesta

50

El mejor consejo que puedo dar es que lea:

:help usr_41.txt 

el cual le dará una buena visión general de los conceptos básicos. Luego encuentre algunas cosas que desea hacer y cree funciones para ellas. Mientras hace esto, hacer un uso intensivo de:

:help function-list 

para tener una idea de lo que todo el construido en funciones son. La mayor parte es bastante similar a otros lenguajes de scripting (aunque una sintaxis más dura), por lo que cualquier experiencia que tenga de manipulación de texto en python o lo que sea será útil.

Además, consulte vim scripts page y Google para obtener ejemplos de scripts existentes para ayudar a expandir su conocimiento.

Finalmente (y probablemente lo más importante), no dude en preguntar en stackoverflow o Vim mailing list y habrá suficiente apoyo para cualquier problema que pueda tener.

14

Estoy en una situación similar. Todavía está en mi lista de "lectura", pero acabo de encontrar Scripting the Vim editor hoy. Los artículos de DeveloperWorks de IBM suelen ser muy buenos, por lo que probablemente valga la pena echarle un vistazo.

+2

lo hice un poco de Vimscript hoy y la guía DevWorks IBM fue genial, pero yo comenzamos con la Parte 1. (Los enlaces respuesta a la Parte 3.) http://www.ibm.com/developerworks /linux/library/l-vim-script-1/index.html –

+0

Muchas gracias por ese artículo, @RichardMichael: ¡ese es precisamente el tipo de material de lectura que he estado buscando todo el día! –

14

Al le dio good answer. También agregaría vim.wikia que tiene algunos consejos relacionados con su pregunta.

En una nota lateral.

No diría que ma10jd'a20kp es más elegante. Veo a los siguientes problemas:

  • que es bastante difícil de mantener (? ¿Y si el número de líneas se convertirá en un parámetro),
  • la gente le gusta anular teclas que nunca aprendieron a usar (esto podría ser fijado con un golpe :normal!),
  • algunos comandos en modo normal, tienen un comportamiento extraño en el lado de los casos (como <esc> cuando el cursor está en la primera columna),
  • se mete la marca un, y el registro sin nombre - otros scripts, o incluso el usuario puede esperar que sus valores no sean alt el guión.
+3

+1: Leí mal la publicación original ya que "es menos elegante que", como pensé que era claramente. De lo contrario, habría comentado sobre la línea ': normal' inmanejable. Tiendo a usar ': normal' solo cuando no puedo encontrar una buena manera de hacerlo con construcciones de scripting. Ingrese las teclas una a la vez manualmente o escriba una función adecuada que pueda mantenerse. – DrAl

Cuestiones relacionadas