Re: Vim beim Beenden ein Script ausfuehren lassen
Hallo Andreas!
Andreas Pakulat schrieb am Dienstag, den 11. März 2008:
> kann man vim beim Beenden ein Skript ausfuehren lassen und dann
> entsprechend des Rueckgabewertes das Beended evtl. abbrechen (aehnlich
> dem Feature dass das Beenden abbricht wenn Aenderungen an der Datei noch
> nicht geschrieben wurden)?
Ja, hier mal ein Beispiel, gerade zusammengehackt. Das Script prüft,
ob ein Author angegeben ist und ob dieser "erlaubt" ist, zu speichern.
,----
| " Script to test for Author Name
| " when saving
| " When allowed, save, else do not save
| "
| "Author: AuthorA
|
| function! CheckName()
| " Allowed Authors
| let allowed='AuthorA, AuthorB, AuthorC'
| let oldPos=getpos('.')
| let aList=split(allowed, '\w\zs,\s*')
| let index=0
| while index < len(aList)
| let item=aList[index]
| let aList[index]='\%(\<'.escape(item, ' \.+*').'\>\)'
| let index = index + 1
| endwhile
| let val = join(aList,'\|')
| :1
| if search('^\s*"Author:\s*\%('.val.'\)\s*$','cpW')
| exe ":write ". expand("<amatch>")
| else
| echo "Author not allowed to save\nNot saved!"
| endif
| call setpos('.', oldPos)
| endfu
|
| augroup script
| au!
| au BufWriteCmd,FileWriteCmd * :call CheckName()
| augroup END
`----
einfach mal speichern und :so % und dann mit dem Author spielen.
> Wenn das geht, wo erfahre ich wie? Welche Stichworte brauche ich fuer
> die vim-Hilfe oder Google?
:h autocmd.txt
:h usr_40.txt
:h template
:h BufWriteCmd
Grüße
Christian
--
hundred-and-one symptoms of being an internet addict:
81. At social functions you introduce your husband as "my domain server."
Reply to: