[linux-l] VIM-Fragen -> Vim Mailinglisten

Steffen Dettmer steffen at dett.de
Do Feb 28 20:10:50 CET 2002


* Sven Guckes wrote on Thu, Feb 28, 2002 at 14:24 +0100:
> * Steffen Dettmer <steffen at dett.de> [020227 10:25]:
> > > alle spruenge werden sowieso in einer liste gesprichert,

> > Leider machen beide Tasten bei mir genau nix.
> > Was mache ich falsch?
> 
> Die Liste zum Vorwaertsspringen koennte leer sein.
> Spring mal ein bischen weiter zurueck, dann
> kannste auch wieder vorwaerts springen. ;-)

Ich weiß jetzt, was ich falsch mache. Ich hab auf 0 rumgehämmert,
nicht auf o... Ups.

> > > > ein :if / \+$/ oder so führt zu einem Syntaxfehler.
> > > dann machst du was falsch.  (was soll man zu "oder so" sonst sagen?)
> > Ja, aber wie ist es richtig? Ich denke, es ist klar,
> > was ich hier meine (in perl wäre es "if (m/ \+$/)"),
> > ich weiß nur nicht, wie ich das schreiben muß.
> 
> nun, ich weiss auch nicht was Du vorhast.

Na, sicherstellen, daß eine Datei ohne trailing whitespaces (oder
auch Leerzeichen, weil TABs darf es auch nicht geben) gespeichert
wird, weil ich sie sonst nicht einchecken kann.

> denk halt mal drueber nach und formuliere das problem und deine
> vorgehensweise.

Jetzt hab ich einfach:

au BufEnter *.[ch]      set ai si cin et sw=4 ts=4
 [...] 
au BufWrite *.cc        :%s/ \+$//
 [...] 

gesagt. Funktioniert prima, *wenn* die Datei trailing whitspaces
hat. 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... 

> 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. Ist genau mit
mit ":map ,edit :!cvs edit %": ich vergesse es eben... Aber ich
sollte mir wohl sowieso mal ne neue Version installieren und ein
paar cvs Plugins von vim-online ausprobieren, man muß ja das Rad
nicht neuerfinden...

> > Stimmt, vermutlich ist das der eigentliche Fehler. Ich habe
> 
> Vim nimmt beim Zeilenumbruch die trailing spaces wirder weg.

Ja, tatsächlich. Das ist's also nicht. Dann haue ich die
Vermutlich beim manuellen source-reformatieren um. Mist, bin
ich auch noch selbst Schuld...

> Ich nehme mal an, dass Du generell was falscha machst.
> Du hast nicht beshrieben welches Komamndo Du benutzt -
> kannst Du mal eine genaue Beshreibung mit Beispiel geben?

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

> > > > Frage. Kann man konfigurieren, daß beim öffnen von read-only
> > > > Dateien .cc, .h usw. gefragt wird (also "vorgeschlagen"),
> > > > cvs edit % und :e zu machen?
> > > ja.  siehe ":help :confirm"
> > Wenn ich das richtig lese:
> > 	Can be used on the ":q", ":qa" and ":w" commands 
> > geht das aber nicht beim Öffnen? Du meinst, ich sollte das dann
> > beim Speicherversuch (w) von schreibgeschützen Dateien machen?
> 
> Bau das ein indem Du ein autocommand mit entsprechendem "event" benutzt,
> also in etwa "au BufReadPre :normal :confirm" (so ungefaehr).

Ja, klar. Also:

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 (und cvs edit
demzufolge vermutlich bereits ausgeführt wurde, oder es
vielleicht nichtmal unter Revisioncontrol steht). Na, dann muß ich
eben damit leben.

> > > ja.  siehe ":help write-readonly"
> > So wie ich das gelesen und probiert habe, kann ich trozdem die
> > Datei ändern - nur eben nicht speichern.
> 
> So wie Du es ausdrueckst isses ein Widerspruch in sich. ;-)

cvs edit soll ja nicht nur vor dem Speichern passieren, sondern
eben vor dem Änderen der Speicher-Kopie der Datei-Kopie der Datei
aus dem Repository. Auch wenn ich vielleicht erstmal überhaupt
nicht speichere, soll jemand anders, der auch cvs edit macht, ne
Warnung kriegen. Wäre jedenfalls schön, wenn das ginge. Ich kann
mir ja auch ein shell script machen mit test -r $f || cvs edit $f
oder sowas.

> also in einem "edit buffer".  Diese Kopie kannst Du natuerlich
> aendern - aber bei "write-readonly" nicht in die damit
> assoziierte Datei zurueckspeichern.

Na ja, kann ja aus'm Buffer nicht compilieren, muß also schon
speichern :)

> Du kannst natuerlich die (geaenderte) Kopie in eine neue Datei
> speichern - das geht.

Ich will ja eben, das ich mich vorher entscheiden muß: cvs edit
gleich beim ersten Änderen der Datei im Buffer, oder gar nicht
ändern. Wenn ich geändert habe, muß ich eh speichern, bloß dann
kommt ein cvs edit vielleicht schon zu spät (d.h., ich kriege
dann ne Warnung, daß schon jemand anders editiert).

> > Na ja, müßte ich also hier cvs edit machen. Wäre natürlich
> > eleganter, wenn bei Öffnen gefragt werden würde
> > "Attempt to edit r/o file. Execute cmd "cvs edit %" an reopen?"
> > Bei N ist dann eben r/o mit cpotions+=W,
> > und sonst wird cvs edit gemacht.
> 
> whatever.  it's up to you.

Hum, ja. Ich spreche aber eben zu wenig vim, um das
vim-verständlich auszudrücken. Und von dem, was ich im Internet
finde, funktioniert fast alles nicht, was teils an meinem alten
vim 5.6 liegt. Na ja, was heißt alt. So alt ja nu auch nicht. 

> > Vielen Dank für Deine Tipps, aber die Lösungen waren
> > noch nicht dabei (oder hab ich schlecht gelesen?).
> 
> 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, aner nix mit writabale.
Aber selbst:


au BufReadPre *.c :if (filereadable("main.c")) 
	:normal :confirm :!cvs status % 
:endif

funktioniert nicht. 

> 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. 

> "dort wird euch geholfen"  ;-)

Danke jedenfalls für Deine Mühe!

oki,

Steffen

-- 
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.



Mehr Informationen über die Mailingliste linux-l