2009-05-14 11 views
5

Por ejemplo si abrir un nuevo archivo en vim marca que tiene el texto siguiente ya en ella:¿Hay alguna manera de tener el texto de copyright antepuesto a los nuevos archivos en Vim?

/* 
    The MIT License 

    Copyright (c) 2009 Apphacker [email protected] 

    Permission is hereby granted, free of charge, to any person obtaining a copy 
    of this software and associated documentation files (the "Software"), to deal 
    in the Software without restriction, including without limitation the rights 
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
    copies of the Software, and to permit persons to whom the Software is 
    furnished to do so, subject to the following conditions: 

    The above copyright notice and this permission notice shall be included in 
    all copies or substantial portions of the Software. 

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 
    THE SOFTWARE. 
*/ 

sería molesto tener que escribir/copiar & pegarlo en para cada archivo nuevo.

+4

En un punto puramente estético ... ¿por qué sientes la necesidad de poner esto en cada archivo? ¿No puedes ponerlo en un archivo aparte (por ejemplo, LICENSE.txt) e incluirlo con lo que sea que estés distribuyendo? Las licencias en la parte superior de cada archivo en una distribución de código fuente son inherentemente molestas para quienes leen/examinan sus archivos de código. –

Respuesta

19

¿Qué tal crear un archivo de texto ~/.vim/mit.txt que contenga la licencia de MIT? A continuación, el siguiente en .vimrc:

map :mit :0r ~/.vim/mit.txt 

... por lo que sólo tiene que introducir: mit para la inserción de la licencia.

O, si realmente desea este comportamiento todo el tiempo:

autocmd BufNewFile * 
\ 0r ~/.vim/mit.txt 
augroup END 
+4

Recomiendo ": 0r ~/.vim/mit.txt" para insertarlo en la parte superior del archivo. – Tomalak

+0

Gracias, corregido. –

3

lo que probablemente resulta molesto con el tiempo cuando se intenta crear un archivo que no desea tener esta licencia.

Un par de otras opciones que aún hacen que sea más fácil, pero le permiten controlar que:

  1. tienda de texto de la licencia alguna parte, digamos que en ~/mitlicense. Luego, cuando inicie un nuevo archivo, ejecute el comando ":r ~/mitlicense", que insertará el contenido del archivo en el nuevo. Si desea acelerar esto aún más, asigne un comando que lo haga, o incluso asígnele un atajo de teclado.
  2. Defina una "abreviatura" para la licencia (instructions here). Entonces, todo lo que tiene que hacer es escribir un identificador corto, y vim reemplazará ese identificador con la licencia. Algo que no escribirías por accidente, como "#mit" probablemente haría el trabajo.
2

O mira los diversos sistemas de plantillas: http://www.google.hu/search?&q=vim+templating. Y puede usar un autocomando para hacer automáticamente el comando ': map' ya recomendado para cada archivo nuevo. Y puede restringir esto a tipos de archivos específicos.

+1

Aún mejor, hay una categoría de consejos dedicados a este tema en wikia: http://vim.wikia.com/wiki/Category:Automated_Text_Insertion, donde se han enumerado la mayoría de los complementos de plantilla-expansor. –

5

Como dice http://www.gnu.org/copyleft/gpl.html,

Para hacerlo, añada los siguientes avisos al programa. Es más seguro adjuntar al inicio de cada archivo fuente para declarar de manera más efectiva la exclusión de la garantía ; y cada archivo debe tener al menos la línea "copyright" y un puntero a donde se encuentra el aviso completo .

Así que puede ser útil poder insertar texto automáticamente. El complemento snipMate se puede usar para ese propósito. Aunque está diseñado para fragmentos de código, también se puede utilizar para insertar automáticamente texto arbitrario.

Después de instalar el snipMate, agregue el siguiente bloque de código en el archivo en el archivo ~ .vim \ snippets_.snippets.

snippet mit 
    /* 
     The MIT License 

     Copyright (c) `strftime("%Y")` ${1:Your name here} ${2:Your email here} 

     Permission is hereby granted, free of charge, to any person obtaining a copy 
     of this software and associated documentation files (the "Software"), to deal 
     in the Software without restriction, including without limitation the rights 
     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
     copies of the Software, and to permit persons to whom the Software is 
     furnished to do so, subject to the following conditions: 

     The above copyright notice and this permission notice shall be included in 
     all copies or substantial portions of the Software. 

     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 
     THE SOFTWARE. 
    */ 

Ahora, cuando se escribe

mit 

y presiona

<Tab> 

que se inserte el texto anterior. También ajustará la fecha y moverá automáticamente el cursor al nombre y la parte del correo electrónico.

Por lo tanto, puede agregar sus licencias (GNU, MIT, lo que sea) en ese archivo y usarlas siempre que las necesite.

2

Escribí un complemento que proporciona comandos para insertar licencias en la parte superior del búfer.

Here it is.

Puede utilizar un autocmd para automatizar este comportamiento:

autocmd BufNewFile * Gpl 

La ventaja sobre las alternativas de las otras respuestas es que este apoyo plugin de múltiples lenguajes de programación (se comentarán el texto de la licencia usando la opción comments).

También inserta automáticamente el año actual.

Descargo de responsabilidad: soy el autor de este proyecto.

Cuestiones relacionadas