Nettigkeiten in Vim

Freitag, 26. Januar 2007

Mein immer-noch-Lieblingseditor Vim hat mich heute wieder mal positiv überrascht.
Ich hatte eine große Anzahl Dateien geöffnet (mehr als 30). Normalerweise werden in der Menüzeile unter dem Punkt „Puffer“ alle derzeit geöffneten Dateien angezeigt. Bei vielen Dateien würde aber dieses Menü länger als der Bildschirm hoch ist.
Wie wurde das in Vim gelöst? Wenn eine bestimmte Anzahl Dateien überschritten wird, werden die geöffneten Dateien alphabetisch sortiert in Untermenü-Einträge gesetzt.

Bild 1-4

TextMate vs. Vim

Donnerstag, 7. Dezember 2006

Ich habe jetzt ein paar Tage TextMate getestet. Der Editor sieht gut aus, liefert eine Menge Funktionen mit, die Syntax-Themes sind sehr leicht anpassbar(über entsprechende Einstellungsmenüs) und er ist schnell in der Darstellung.
Was mich stört: Man muss tausend Tastenkombinationen kennen, wenn man nicht ständig die Maus bewegen will. Das wäre nicht so schlimm, wenn es eben nicht Tastenkombinationen wären([Ctr]l+[$Taste], [Cmd]+[$Taste],[Cmd]+[Shift]+[$Taste],…). Damit ist man nicht viel schneller als mit der Maus, da man ständig die Finger von der normalen Schreibposition nehmen muss, vor allem auf der Powerbook-Tastatur.

Vim
sieht nicht so toll aus, liefert ebenfalls eine Unmenge an Funktionen mit, die Syntax-Themes sind eher umständlich anzupassen(kein Menü) und er ist in der neuen Version 7.0 mit eingeschalteter Zeilenhervorhebung relativ träge in der Darstellung.
Die Bedienung ist nicht intuitiv, viele Programmfunktionen sind nur über Tastaturkommandos erreichbar. Aber: Es sind einfache Tastaturkommandos, Tastenfolgen, keine Tastenkombinationen.

Um zum Beispiel einen Absatz neu zu formatieren:

In TextMate muss man [Ctrl]+[Q] drücken. Auf der Powerbook-Tastatur gibt es nur eine [Ctrl]-Taste und die sitzt links unten, [Q] ist links oben. Damit ist diese Tastenkombination nicht flüssig zu bedienen.
In Vim ist die nicht gerade leicht zu merkende Tastaturfolge [G][Q][A][P] einzugeben.
Der Unterschied ist, dass ich in Vim die Finger nicht aus der normalen Schreibposition nehmen muss und damit dieser Befehl letztendlich schneller getippt ist.

Bild 3A

Vim Kommandos – Datum und Dateiname einfügen

Dienstag, 5. September 2006

Mein Lieblingseditor vim unterstützt so nette Funktionen wie das Einfügen des aktuellen Datums oder des Dateinamens. Leider ist es recht schwierig, das in der Hilfe zu finden. Deshalb hier nochmal dokumentiert wie das geht. Die folgenden Zeilen kann man zum Beispiel in der Datei _vimrc (unter Windows) oder .vimrc (unter *n*x-Betriebssystemen) einfügen.

"Dateinamen einfügen im Einfügemodus mit <Ctrl>-<f4>
imap <C-F4> <C-R>=expand("%:t")<cr>

"Uhrzeit im Format hh:mm einfügen mit <Ctrl>-<F5>
imap <C-F5> <C-R>=strftime("%H:%M")<CR>

"Datum im Format yyyy/mm/dd einfügen mit <Ctrl>-<F6>
imap <C-F6> <C-R>=strftime("%Y/%m/%d")<Cr>

Vim 7.0

Freitag, 19. Mai 2006

Mein Lieblingseditor Vim ist seit wenigen Tagen in einer neuen Version verfügbar und bringt viele neue Funktionen mit. Unter Mac OS steht jetzt auch ein eingedeutschtes Menü zur Verfügung, die üblichen Mac OS Shortcuts funktionieren auch, obwohl Sie im Menü nicht extra aufgeführt sind.
Hier noch ein paar tolle neue Einstellungen die Vim bietet:

"Hebt die aktuelle Zeile in der der Cursor steht farbig hervor:
:set cursorline

"hebt die aktuelle Spalte in der der Cursor steht farbig hervor:
:set cursorcolumn

"Rechtschreibprüfung (Standard ist Englisch)
:set spell

"Die Sprache für die Rechtschreibprüfung einstellen (das deutsche Wörterbuch
"ist leider aber noch sehr unvollständig)
:set spelllang=de_DE

Omni completion auch unter dem Namen „Intellisense“ bekannt, eine intelligente Erkennung, wie das aktuell getippte Wort lauten könnte.
Dann gibt es noch Tabs, aber die sehen arg gruselig aus, in der Mac OS Variante von Vim.
Zusammen gehörende Klammern werden nun hervorgehoben und leuchten nicht nur kurz auf wenn man auf der zugehörigen Klammer steht, wie es bisher immer war.

Intelligentes Undo:

Undo branches *new-undo-branches*
————-

Previously there was only one line of undo-redo. If, after undoing a number
of changes, a new change was made all the undone changes were lost. This
could lead to accidentally losing work.

Vim now makes an undo branch in this situation. Thus you can go back to the
text after any change, even if they were undone. So long as you do not run
into ‚undolevels‘, when undo information is freed up to limit the memory used.

To be able to navigate the undo branches each change is numbered sequentially.
The commands |g-| and |:earlier| go back in time, to older changes. The
commands |g+| and |:later| go forward in time, to newer changes.

The changes are also timestamped. Use „:earlier 10m“ to go to the text as it
was about ten minutes earlier.

The |:undolist| command can be used to get an idea of which undo branches
exist. The |:undo| command now takes an argument to directly jump to a
specific position in this list. The |changenr()| function can be used to
obtain the change number.

There is no graphical display of the tree with changes, navigation can be
quite confusing.

Und noch vieles mehr…
Keine Ahnung ob ich das alles brauche was es neues gibt, schließlich nutze ich von den bisher vorhandenen Funktionen ganz sicher nicht mehr als 5..10 %, wenn überhaupt.