2012-05-24 14 views
5

¿Hay que hacer que Vim cree un comentario publicitario basado en el tipo de archivo cuando abro un nuevo archivo?Creación automática de comentarios sobre la documentación en Vim

Soy nuevo en Vim. Aquí está la funcionalidad que estoy buscando. Cuando hago:

$ vim hello.py 

Quiero el archivo para iniciar con:

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

etc. He buscado alrededor pero no puedo encontrar una solución para hacer esto.

Respuesta

4

Se podría hacer esto sin esqueleto archivos utilizando el siguiente:

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" 

poner esos en su vimrc .

Un problema potencial es que el autocmd BufWritePre añadirá la hora actual a todos los líneas que comienzan con:

#Last Modified: 
3

Esto se explica en la ayuda autocmd vim .. en particular que desea this

1

Esta respuesta se basa en la pb2q, pero hace que sea más extensible. Definir una función para hacer la creación, por lo que se puede utilizar para una variedad de tipos de comentario:

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: es mi práctica de utilizar las formas más largas siempre que sea posible en las secuencias de comandos Vim, si no me golfing, porque valoro la legibilidad del código y los comandos normales son arcanos).

continuación, se pueden definir autocommands como:

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

Tenga en cuenta que he dado un carácter de comentario vacío para Python. Eso es porque tenía ''' cadenas en mi encabezado de archivo para los comentarios. Puede usar '# ' o '## ' o lo que sea que le guste.

Puede hacer algo similar con Created.

Cuestiones relacionadas