2009-05-14 18 views
5

Ví dụ nếu tôi mở một file mới trong vim nó có văn bản sau đây đã có trong nó:Có cách nào để có văn bản bản quyền được thêm vào các tệp mới trong Vim không?

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

Sẽ là khó chịu khi phải gõ/sao chép & dán nó vào cho mỗi tập tin mới.

+4

Trên một điểm hoàn toàn thẩm mỹ ... tại sao bạn cảm thấy cần phải đặt điều này trong mỗi tệp? Bạn không thể đặt nó vào một tệp riêng biệt, (ví dụ: LICENSE.txt) và bao gồm nó với bất kỳ thứ gì bạn đang phân phối? Giấy phép ở trên cùng của mỗi tập tin trong một phân phối mã nguồn vốn đã gây phiền nhiễu cho những người đọc/kiểm tra các tập tin mã của bạn. –

Trả lời

19

Cách tạo tệp văn bản ~/.vim/mit.txt giữ giấy phép MIT? Sau đó, sau đây trong .vimrc:

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

... vì vậy bạn chỉ phải nhập: mit để chèn giấy phép.

Hoặc, nếu bạn thực sự muốn hành vi này tất cả các thời gian:

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

Tôi khuyên bạn nên ": 0r ~/.vim/mit.txt" để chèn nó ở đầu tệp. – Tomalak

+0

Cảm ơn, đã sửa. –

3

Có thể bạn muốn cảm thấy bực bội cuối cùng khi bạn cố gắng để tạo ra một tập tin mà bạn không muốn có giấy phép này.

Một vài lựa chọn khác mà vẫn làm cho nó dễ dàng hơn, nhưng cung cấp cho bạn kiểm soát nó:

  1. Store giấy phép văn bản nơi nào đó, giả sử trong ~/mitlicense. Sau đó, khi bạn bắt đầu một tệp mới, hãy chạy lệnh ":r ~/mitlicense", sẽ chèn nội dung của tệp vào tệp mới. Nếu bạn muốn tăng tốc độ này hơn nữa, hãy ánh xạ một lệnh thực hiện điều đó hoặc thậm chí gán cho nó một phím tắt.
  2. Xác định chữ "viết tắt" cho giấy phép (instructions here). Sau đó, tất cả những gì bạn phải làm là nhập một số nhận dạng ngắn và vim sẽ thay thế số nhận dạng đó bằng giấy phép. Một cái gì đó bạn sẽ không gõ một cách tình cờ, như "#mit" có lẽ sẽ làm công việc đó.
2

Hoặc xem một số hệ thống templating: http://www.google.hu/search?&q=vim+templating. Và bạn có thể sử dụng autocommand để tự động thực hiện lệnh ': map' đã được đề xuất cho mỗi tệp mới. Và bạn có thể thu hẹp điều này thành các loại tệp cụ thể.

+1

Thậm chí tốt hơn có một loại mẹo dành riêng cho chủ đề này trên wiki: http://vim.wikia.com/wiki/Category:Automated_Text_Insertion, nơi hầu hết các plugin mở rộng mẫu đã được liệt kê. –

5

Như http://www.gnu.org/copyleft/gpl.html nói,

Để làm như vậy, đính kèm thông báo sau vào chương trình. An toàn nhất là đính kèm chúng vào đầu mỗi tệp nguồn để loại bỏ hiệu quả nhất việc bảo hành ; và mỗi tệp phải có ít nhất là dòng "bản quyền" và một con trỏ đến nơi có thông báo đầy đủ .

Vì vậy, có thể hữu ích khi có thể tự động chèn một số văn bản. Plugin snipMate có thể được sử dụng cho mục đích đó. Mặc dù nó được thiết kế cho đoạn mã, nó có thể được sử dụng để tự động chèn một số văn bản tùy ý quá.

Sau khi cài đặt snipMate, hãy thêm khối mã sau vào tệp trong tệp ~ .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. 
    */ 

Bây giờ, khi bạn gõ

mit 

và nhấn

<Tab> 

nó sẽ chèn văn bản trên. Nó cũng sẽ điều chỉnh ngày, và nó sẽ tự động di chuyển con trỏ đến tên và phần e-mail.

Vì vậy, bạn có thể thêm giấy phép của mình (GNU, MIT, bạn đặt tên nó) vào tệp đó và sử dụng bất cứ khi nào bạn cần chúng.

2

Tôi đã viết một plugin cung cấp các lệnh để chèn giấy phép ở đầu bộ đệm.

Here it is.

Bạn có thể sử dụng một autocmd để tự động hóa hành vi này:

autocmd BufNewFile * Gpl 

Ưu điểm so với giải pháp thay thế trong những câu trả lời khác là hỗ trợ plugin này nhiều ngôn ngữ lập trình (nó sẽ bình luận nội dung giấy phép sử dụng tùy chọn comments).

Nó cũng tự động chèn năm hiện tại.

Tuyên bố từ chối trách nhiệm: Tôi là tác giả của dự án này.

Các vấn đề liên quan