在Vim中,有没有一种方法可以在新文件中添加版权文本?

7
例如,如果我在vim中打开一个全新的文件,它已经有以下文本:
``` " ============================================================================ " Netrw Directory Listing (netrw v162) " /home/user/Desktop " Sorted by name " Sort sequence: [\/]$,\,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$ " Quick Help: :help -:go updir D:delete R:rename s:sort-by x:exec " ============================================================================ ```
/*
  The MIT License

  Copyright (c) 2009 Apphacker apphacker@gmail.com

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

每次新建文件都要手动输入/复制粘贴会很麻烦。


4
仅就美学角度而言,为什么你觉得需要在每个文件中都加入这个呢?你不能把它放到一个单独的文件中(例如LICENSE.txt),并将其与你要分发的内容一起包含吗?在源代码分发中,在每个文件的顶部都有许可证是对那些阅读/检查你的代码文件的人本质上是非常烦人的。 - James B
5个回答

22

创建一个名为~/.vim/mit.txt的文本文件来存储MIT许可证怎么样?然后在.vimrc中添加以下内容:

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

...所以你只需要输入 :mit 就可以插入许可证。

或者,如果你真的希望每次都有这种行为:

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

4
我建议使用":0r ~/.vim/mit.txt"将其插入到文件顶部。 - Tomalak

6
根据http://www.gnu.org/copyleft/gpl.html的说法:
为了这样做,请将以下通知附加到程序中。最安全的方法是将它们附加到每个源文件的开头,以最有效地声明排除保证;并且每个文件都应该至少有“版权”行和指向完整通知所在位置的指针。
因此,自动插入一些文本可能会很有用。可以使用snipMate插件来实现这个目的。尽管它是为代码片段设计的,但也可以用于自动插入任意文本。
安装snipMate后,将以下代码块附加到~.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.
    */

现在,当您输入时
mit

并按下

<Tab>

它会在上面插入文本。它还会调整日期,并自动将光标移动到姓名和电子邮件部分。

因此,您可以将许可证(GNU、MIT等)添加到该文件中,并在需要时使用它们。


3
您创建不带此授权许可证的文件时可能会感到烦恼。
还有其他选项,这些选项可以使操作更容易,并且您可以对其进行控制:
1. 将许可证文本存储在某个位置,比如在~/mitlicense中。然后,在启动新文件时,运行命令":r ~/mitlicense",它将把文件内容插入到新文件中。如果您想进一步加快速度,请映射一个执行该操作的命令,甚至为其分配一个键盘快捷方式。
2. 为许可证定义一个“缩写”(请参阅此处说明)。然后,您只需输入一个简短的标识符,vim就会用许可证替换它。像 "#mit" 这样的东西可能做得到,并且您不会意外输入。

2
我写了一个插件,提供命令在缓冲区顶部插入许可证。

这是插件。

你可以使用自动命令来自动化这个行为:
autocmd BufNewFile * Gpl

与其他答案的替代方案相比,这个插件的优点在于它支持多种编程语言(它将使用comments选项注释许可证文本)。

它还会自动插入当前年份。

免责声明:我是该项目的作者。


2
或者看看几个模板系统:http://www.google.hu/search?&q=vim+templating。您可以使用自动命令,自动执行已推荐的“:map”命令来处理每个新文件。您还可以将其缩小到特定文件类型。

1
更好的是,在wikia上有一个专门针对此主题的提示类别:http://vim.wikia.com/wiki/Category:Automated_Text_Insertion,其中列出了大多数模板扩展插件。 - Luc Hermitte

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接