Есть ли способ добавить текст авторского права в новые файлы в Vim? - PullRequest
6 голосов
/ 14 мая 2009

Например, если я открываю новый файл в 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.
*/

Раздражает необходимость набирать / копировать и вставлять его для каждого нового файла.

Ответы [ 5 ]

21 голосов
/ 14 мая 2009

Как насчет создания текстового файла ~ / .vim / mit.txt, который содержит лицензию MIT? Тогда следующее в .vimrc:

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

... так что вам нужно только ввести: mit для вставки лицензии.

Или, если вы действительно хотите такое поведение постоянно:

autocmd BufNewFile *
\ 0r ~/.vim/mit.txt
augroup END
5 голосов
/ 20 мая 2009

Как говорит 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 голосов
/ 14 мая 2009

Вероятно, в конечном итоге это будет раздражать при попытке создать файл, для которого вы не хотите иметь эту лицензию.

Пара других опций, которые все еще облегчают, но дают вам контроль над этим:

  1. Храните текст лицензии где-нибудь, скажем, в ~/mitlicense. Затем при запуске нового файла выполните команду ":r ~/mitlicense", которая вставит содержимое файла в новый. Если вы хотите еще больше ускорить это, сопоставьте команду, которая это делает, или даже назначьте ей сочетание клавиш.
  2. Определите «аббревиатуру» для лицензии ( инструкции здесь ). Затем все, что вам нужно сделать, это ввести короткий идентификатор, и vim заменит этот идентификатор лицензией. То, что вы не напечатаете случайно, например, "#mit", вероятно, сделает эту работу.
2 голосов
/ 20 мая 2014

Я написал плагин, предоставляющий команды для вставки лицензий в верхнюю часть буфера.

Вот оно.

Вы можете использовать autocmd для автоматизации этого поведения:

autocmd BufNewFile * Gpl

Преимущество перед альтернативами других ответов заключается в том, что этот плагин поддерживает несколько языков программирования (он будет комментировать текст лицензии, используя опцию comments).

Также автоматически вставляется текущий год.

Отказ от ответственности: я являюсь автором этого проекта.

2 голосов
/ 14 мая 2009

Или посмотрите на несколько шаблонных систем: http://www.google.hu/search?&q=vim+templating. И вы можете использовать автокоманду для автоматического выполнения рекомендованной команды ': map' для каждого нового файла. И вы можете сузить это для определенных типов файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...