2012-05-24 5 views
5

È possibile creare un commento blast in base al tipo di file durante l'apertura di un nuovo file?Creazione automatica di commenti di documentazione in Vim

Sono nuovo di Vim. Ecco la funzionalità che sto cercando. Quando faccio:

$ vim hello.py 

voglio il file per cominciare:

#Date Created: 24 May 2012 
#Last Modified: (This is optional, really) 
#Summary: (enter short summary of program here) 
#Author: My Name 
#License: ... 

ecc Ho cercato in giro ma non riesco a trovare una soluzione per fare questo.

risposta

4

Si potrebbe fare questo senza scheletro dei file utilizzando la seguente:

autocmd BufNewFile *.py exe "normal O#Date Created: " . strftime("%d %b %Y") . "\r#Last Modified:\r#Summary:\r#Author:\r#License:\r" 
autocmd BufWritePre *.py exe "%s/^#Last Modified:.*$/#Last Modified: " . strftime("%d %b %Y (%T)") . "/e" 

mettere quelle nella vostra vimrc.

Un potenziale problema è che il autocmd BufWritePre aggiungerà l'ora attuale per tutti le linee che iniziano con:

#Last Modified: 
3

Questo è trattato nella guida in autocmd vim .. in particolare che si desidera this

1

Questa risposta si basa su pb2q di, ma lo rende più estensibile. Definire una funzione per fare la creazione, in modo da poterlo utilizzare per una varietà di tipi di commento:

function UpdateModifiedTime(comment) 
    let savedPosition = getpos(".") 
    call cursor(1, 1) 
    let modified = a:comment . 'Modified:' 
    if search(modified, 'e') > 0 
     execute 'substitute/' . modified . '.*/' . modified . ' ' . strftime('%b %d, %Y %T') . '/' 
    endif 
    call setpos(".", savedPosition) 
endfunction 

(Nota: è la mia pratica di utilizzare le forme più lunghi se possibile script Vim, se non mi golfing, perché apprezzo la leggibilità del codice e comandi normali sono arcani).

Si può quindi definire autocomandi quali:

autocmd BufWrite *.sh,*.ksh,*.bash  call UpdateModifiedTime('## ') 
autocmd BufWrite *.vim     call UpdateModifiedTime('" ') 
autocmd BufWrite *.py     call UpdateModifiedTime('') 
autocmd BufWrite *.c      call UpdateModifiedTime('// ') 

Si noti che ho dato un carattere di commento vuoto per Python. Questo perché avevo le stringhe ''' nell'intestazione del mio file per il commento. Puoi usare '# ' o '## ' o qualsiasi altra cosa ti piaccia.

È possibile eseguire operazioni simili con Created.