2010-01-28 15 views
50

Ich habe VIM seit über 10 Jahren verwendet, aber nie wirklich in VIM-Skripting (immer subjektiv glauben, dass dies ein Bereich war, in dem VIM schwächer als Emacs war).Gute Anleitung für VIM Scripting?

Kürzlich, die Realisierung "in einem VIM-Skript, kann ich normale Modusbefehle ausführen" machte meine Meinung gehen "a-ha" und plötzlich beginnen zu erkennen, warum Teile von VIM-Skript ist so wie es ist.

normal ma10jd'a20kp 

ist viel eleganter als

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

Jetzt Frage ist - was eine gute Ressource ist von Vim-Scripting zu lernen?

Danke!

Antwort

50

Der beste Rat, den ich geben kann ist, dass man lesen:

:help usr_41.txt 

, die Ihnen einen guten Überblick über die Grundlagen. Dann finden Sie einige Dinge, die Sie tun möchten, und erstellen Sie Funktionen für sie. Während Sie dies tun, schwer Gebrauch machen:

:help function-list 

eine Vorstellung davon zu bekommen, was alle sind in Funktionen eingebaut. Das meiste davon ist ziemlich ähnlich zu anderen Skriptsprachen (wenn auch eine schärfere Syntax), so dass jede Erfahrung, die Sie mit Textmanipulation in Python oder was auch immer haben, nützlich sein wird.

Schauen Sie auch auf vim scripts page und Google, um Beispiele für vorhandene Skripts zu erhalten, um Ihr Wissen zu erweitern.

Schließlich (und wahrscheinlich am wichtigsten), haben Sie keine Angst zu fragen auf stackoverflow oder die Vim mailing list und es wird reichlich Unterstützung für alle Probleme, die Sie haben können.

14

Ich bin in einer ähnlichen Situation. Es ist immer noch auf meiner "zu lesen" -Liste, aber ich habe gerade gefunden Scripting the Vim editor heute. Die Artikel von IBM's DeveloperWorks sind in der Regel sehr gut, also lohnt sich ein Blick darauf.

+2

Ich habe ein bisschen vimscript heute und der IBM DevWorks Führer war groß, aber ich begann mit Teil 1. (Die Antwort Links zu Teil 3) http://www.ibm.com/developerworks /linux/library/l-vim-script-1/index.html –

+0

Vielen Dank für diesen Artikel, @RichardMichael - genau das ist das Lesematerial, nach dem ich den ganzen Tag gesucht habe! –

14

Al gab Ihnen eine good answer. Ich würde auch hinzufügen vim.wikia, die ein paar Tipps im Zusammenhang mit Ihrer Frage hat.

Auf einer Randnotiz.

Ich würde nicht sagen, dass ma10jd'a20kp ist eleganter. Ich sehe die folgenden Probleme:

  • es ziemlich schwierig ist, zu halten (? Was ist, wenn die Anzahl der Zeilen wird ein Parameter werden),
  • Leute mögen Tasten außer Kraft setzen sie nie gelernt, zu verwenden (dies behoben werden könnte, mit a schlug :normal!),
  • einige Normal-Mode-Befehle haben seltsame Verhalten auf Neben Fall (wie <esc> wenn der Cursor auf der ersten Spalte) ist,
  • es verunstaltet die Markierung ein und die unnamed Register - Andere Skripte oder sogar der Benutzer erwarten möglicherweise, dass ihre Werte nicht alt sind durch Ihr Skript.
+3

+1: Ich habe den ursprünglichen Beitrag falsch gelesen als "ist weniger elegant als", wie ich dachte, es war eindeutig! Ansonsten hätte ich die nicht wartbare ': normale' Zeile kommentiert. Ich neige dazu, ': normal' nur dann zu verwenden, wenn ich mit Skriptkonstrukten keinen guten Weg finde. Entweder geben Sie die Schlüssel manuell einzeln ein oder schreiben eine korrekte Funktion, die beibehalten werden kann. – DrAl

Verwandte Themen