[linux-l] vim - :au + :fun

Sven Guckes guckes at math.fu-berlin.de
Mo Mär 4 14:58:47 CET 2002


* Steffen Dettmer <steffen at dett.de> [020228 20:02]:
> Jetzt hab ich einfach:
> au BufEnter *.[ch]      set ai si cin et sw=4 ts=4
> au BufWrite *.cc        :%s/ \+$//
> Funktioniert prima, *wenn* die Datei trailing whitspaces hat.

nee - damit erwischt Du nur trailing *spaces*.  Mit
"\s\+" erwischt du auch Kombinationen von Spaces+Tabs:

  au BufWrite *.cc        :%s/\s\+$//

> Man könnte auch noch ein ^o anhängen. Aber meistens
> enthalten die Dateien ja keine trailing whitspaces,
> und dann kommt ne Fehlermeldung. Das wäre dann ein Anfang...
> Jetzt muß ich leider immer neidisch auf die Emacs-User
> schielen, da hat das jemand alles schon konfiguriert...

Du koenntest ja auch eine *Funktion* definieren
und mit "branches" (if then else) arbeiten.

> > willst, dann reicht doch sowas:
> > " Delete trailing whitespace:
> >  nmap <f9> :%s/\s\+$//
> >  vmap <f9>  :s/\s\+$//
> Na ja, dann vergesse ich ja immer, f9 zu drücken.

  au BufWritePre * :echo "whitespace entfernen!"

> Vermutlich passiert es [trailing spaces] dann, wenn ich nach dem
> automatischen Umbruch <ESC>J mache und an anderer Stelle umbrechen
> lasse.  Dann bleibt natürlich das space hinten dran.

Daher breche ich eine Zeile auch um indem ich das
Leerzeichen zwischen Woertern durch ein EOL ersetze. ;-)

>   au BufReadPre *.c :normal :confirm :!cvs edit %
> kommt schon sehr sehr nahe, nur das es eben immer gefragt
> wird, also auch, wenn die datei write-permissions hat

nun, dann willst Du sicherlich eine Funktion aufrufen
in der Du eben noch den Test auf Schreibbarkeit machst.

> ...    was teils an meinem alten vim 5.6 liegt.
> Na ja, was heißt alt. So alt ja nu auch nicht.

Nunja,   Vim-5.6 ist vom Januar 2000 - also erst zwei Jahre alt.
Zwischen Vim-5.6 und Vim-6.1 liegen aber mehrere hundert patches...

> > ich gebe tips - aber ich habe keine zeit, um
> > die aller vim user probleme zu loesen.  sorry.
> Ja, klar, danke! Ich dachte nur, Du weißt auswendig, was
> "test -w || $action" in vim-Sprache heißt oder sowas.
> Ich hab was von filereadable() gefunden, klingt nach
> "test -r", aber nix mit writabale.

Haettest Du weitergesucht, dann haettest
Du auch ":filewritable()" gefunden.  ;-)

> Aber selbst:
> au BufReadPre *.c :if (filereadable("main.c"))
>   :normal :confirm :!cvs status %
> :endif
> funktioniert nicht.

Kommandos werden auf der Komamndozeile durch '|" getrennt.
Aber Du kannst (wie gesagt) ueber das Autokommando auch
eine von Dir definierte Funktion aufrufen lassen.
Das macht die Struktur auch wesentlich lesbarer.

> > wohlgemerkt:  auf den mailinglisten zu vim findest du
> > weitaus mehr leute sich um dein problem kuemmern koennten:
> ja, das ist vielleicht ne gute Idee. Bloß komisch, das solche
> Dinge hier keiner weiß, ich meine, vim ist ja nix exotisches.

Stimmt. Auch LISP ist taeglich Brot fuer viele.
Und C.  Und Fortran.  Und ...  ;-)

Sven  [geht sonst noch jemand zum LinuxTag nach Chemnitz?]

-- 
Sven Guckes     guckes-chemnit2002 at math.fu-berlin.de
LinuxTag Chemnitz             2002-03-09+ 2002-03-10
siehe dazu: http://www.tu-chemnitz.de/linux/tag/ und
http://www.math.fu-berlin.de/~guckes/chemnitz2002/



Mehr Informationen über die Mailingliste linux-l