2010-02-12 39 views
8

Có cách nào để sử dụng nếp gấp hoặc một số ma thuật đen Vim-script khác để ẩn khối giấy phép ở đầu tệp không? Tôi không thích rằng họ chiếm một phần lớn như vậy trong cửa sổ chỉnh sửa của tôi; Tôi thích có được một cảm giác cho những gì một tập tin đang làm khi tôi lần đầu tiên mở nó, chứ không phải là một khuôn mặt đầy đủ của boilerplate.Tôi có thể có Vim bỏ qua một khối giấy phép ở đầu tệp không?

+0

Định dạng của văn bản bạn muốn bỏ qua là gì? –

Trả lời

4

Hãy thử điều này trong một autocommand.

function! FoldCopyright 
    if !exists("b:foldedCopyright") 
    let b:foldedCopyright = 1 
    1,15fold 
    endif 
endfunction 

Điều chỉnh phạm vi trên dòng 4 một cách thích hợp. Trong trường hợp xấu nhất mà bản quyền bắt đầu ở những vị trí khác nhau và có độ dài thay đổi, mẫu này nên làm:

1,/Beginning of copyright/;/End of copyright/ 
+2

Tôi recommand sử dụng 'im lặng!' Trước lệnh gấp để nếu khối giấy phép không tồn tại, Vim không phàn nàn. – ereOn

0

Làm thế nào để xóa chúng? Nghiêm túc.

Mã nguồn được bảo vệ bởi quyền sở hữu và cấp phép, chứ không phải bản mẫu. Nó không cần phải có mặt ở đó - ít nhất là trong hầu hết các trường hợp.

Trong trường hợp của GPL và các chương trình tương tự khác có hiệu quả yêu cầu văn bản có mặt, nó có thể được chuyển xuống dưới cùng của tệp hoặc bất kỳ điều gì.

+0

Và điều gì sẽ xảy ra nếu người ta muốn mọi người đọc thông tin giấy phép liên quan ** trước **? Vim đủ mạnh để gấp nó một cách tự động và dễ dàng vì vậy nó không có vấn đề gì lớn ... – ereOn

2

Phụ thuộc vào việc có một biểu mẫu nhất quán đối với khối giấy phép và ngôn ngữ bạn đang lập trình hay không. Ví dụ: python có xu hướng sử dụng 'foldexpr' để xác định gấp, để thêm phần này, bạn phải thay thế chức năng hiện tại với một chức năng mới (hoặc loại bỏ các nếp gấp hiện có). Tôi tin rằng mặc định trong C là sử dụng gấp thủ công (mặc dù có thể là tôi đã định cấu hình theo cách đó: tôi không thể nhớ), do đó, việc thêm khung gấp này dễ dàng hơn nhiều.

Với một thông điệp bản quyền GPL đơn giản giống như ở cuối bài đăng này, bạn có thể đặt phương pháp đo lường thành thủ công và có chức năng đơn giản tạo nếp gấp. Tất cả phụ thuộc vào hình thức bản quyền và mức độ quan trọng của bạn đối với việc duy trì nếp gấp hiện có. Tôi e rằng tôi cần chi tiết hơn một chút để đưa ra một câu trả lời hữu ích hơn. Dù sao, đây là một kịch bản ví dụ mà có thể được sử dụng để gấp thông báo bản quyền ở phần cuối của bài viết này:

function! CreateCopyrightFold() 
    let InCopyright = 0 
    set foldmethod=manual 
    for Line in range(1,line('$')) 
     let LineContents = getline(Line) 
     if LineContents !~ "^#" 
      if InCopyright 
       let CopyrightEnd = Line - 1 
       exe CopyrightStart . ',' . CopyrightEnd . 'fold' 
      endif 
      break 
     elseif LineContents =~ "Copyright" 
      let InCopyright = 1 
      let CopyrightStart = Line 
     endif 
    endfor 
endfunction 
au BufRead *.py call CreateCopyrightFold() 

Giả sử một thông báo bản quyền như thế này:

# Copyright (C) 2009 Some Company or Something 
# 
# This program is free software; you can redistribute it and/or modify 
# it under the terms of the GNU General Public License as published by 
# the Free Software Foundation; either version 2 of the License, or 
# (at your option) any later version. 
# 
# This program is distributed in the hope that it will be useful, 
# but WITHOUT ANY WARRANTY; without even the implied warranty of 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
# GNU General Public License for more details. 
# 
# You should have received a copy of the GNU General Public License 
# along with this program; if not, write to the Free Software 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 

import sys 
# Code continues... 
2

Tôi đã tạo một plugin vim nhỏ cho việc này. Nó chia sẻ khi bình luận đầu tiên của trang nên được gấp lại. Nó hoạt động trên các trường hợp thử nghiệm của tôi, nhưng, tất nhiên, mọi cải tiến đều được hoan nghênh. Sẽ dễ dàng thêm các số nhận dạng đơn hoặc nhiều dòng khác.

Tải xuống here. Để cài đặt, giống như bất kỳ plugin nào khác, chỉ cần thả nó vào ~/.vim/plugin của bạn.

Chỉnh sửa: Đã thay đổi liên kết thành vim.org và làm sạch câu trả lời

+0

Tại sao bạn không gửi vim.org này làm tập lệnh? –

+0

câu hỏi hay. không có vẻ rất hữu ích. – fotanus

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