【问题标题】:Is there a way to have copyright text prepended to new files in Vim?有没有办法在 Vim 的新文件中添加版权文本?
【发布时间】:2010-10-26 05:36:50
【问题描述】:

例如,如果我在 vim 中打开一个全新的文件,其中已经包含以下文本:

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

必须为每个新文件键入/复制并粘贴它会很烦人。

【问题讨论】:

  • 就纯粹的美学观点而言...您为什么觉得有必要将其放入每个文件中?您不能将它放在一个单独的文件中(例如 LICENSE.txt),然后将它包含在您分发的任何内容中吗?源代码分发中每个文件顶部的许可证对于那些阅读/检查您的代码文件的人来说本来就很烦人。

标签: vim


【解决方案1】:

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

Here it is.

您可以使用 autocmd 自动执行此行为:

autocmd BufNewFile * Gpl

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

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

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

【讨论】:

    【解决方案2】:

    正如http://www.gnu.org/copyleft/gpl.html 所说,

    为此,请附上以下通知 到程序。贴上去最安全 它们到每个源文件的开头 最有效地陈述 排除保修;和每个文件 至少应该拥有“版权” 行和指向完整位置的指针 发现通知。

    因此,能够自动插入一些文本可能很有用。 snipMate 插件可用于此目的。虽然它是为代码 sn-ps 设计的,但它也可以用来自动插入一些任意文本。

    安装 snipMate 后,将以下代码块附加到 ~.vim\sn-ps_.sn-ps 文件中的文件中。

    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】:

      创建一个拥有 MIT 许可证的文本文件 ~/.vim/mit.txt 怎么样?然后在.vimrc中如下:

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

      ...所以您只需输入 :mit 即可插入许可证。

      或者,如果你真的一直想要这种行为:

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

      【讨论】:

      • 我推荐 ":0r ~/.vim/mit.txt" 将其插入文件顶部。
      【解决方案4】:

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

      【讨论】:

      【解决方案5】:

      当您尝试创建一个您不想拥有此许可证的文件时,您最终可能会觉得这很烦人。

      其他几个选项仍然可以让您更轻松,但让您可以控制它:

      1. 将许可文本存储在某处,比如~/mitlicense。然后当你开始一个新文件时,运行命令“:r ~/mitlicense”,它将文件的内容插入到新文件中。如果您想进一步加快速度,请映射执行此操作的命令,甚至为其分配键盘快捷键。
      2. 为许可证定义一个“缩写”(instructions here)。然后你所要做的就是输入一个简短的标识符,vim 会用许可证替换那个标识符。您不会偶然输入的内容,例如“#mit”,可能会完成这项工作。

      【讨论】:

        猜你喜欢
        • 2021-03-08
        • 2014-04-17
        • 2010-09-11
        • 1970-01-01
        • 2020-08-19
        • 2018-07-06
        • 2010-12-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多