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?
Trả lời
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/
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
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ì.
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
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...
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
Tại sao bạn không gửi vim.org này làm tập lệnh? –
câu hỏi hay. không có vẻ rất hữu ích. – fotanus
- 1. Tôi có thể có một trường tệp ở dạng đầu vào không?
- 2. Bạn có thể "bỏ qua" một tệp trong Perforce không?
- 3. Tôi có thể cài đặt VS trên hai máy với một giấy phép không?
- 4. Tôi có thể có vim chỉnh sửa nhiều dòng không?
- 5. Có hoàn tác khối trong VIM không?
- 6. Bỏ qua SVN bỏ qua ... có thể?
- 7. Tôi có phải sao chép một khối ở đây không?
- 8. RFC có giấy phép gì?
- 9. Tôi có thể bỏ qua BeanCreationException và tiêm null không?
- 10. Giấy phép cho tài liệu không có giấy phép là gì?
- 11. Tôi có thể đặt giấy phép tùy chỉnh bằng WiX không?
- 12. Kiểm tra giấy phép bên trong một mẫu ở Django
- 13. Phông chữ đã thay đổi tay - Tôi có giấy phép cũ - tôi vẫn có thể sử dụng phông chữ này?
- 14. sscanf bỏ qua không gian trắng ở đầu
- 15. Tôi có thể xác định động một phương thức Ruby có một khối không?
- 16. c/C++ Thư viện FFT không có giấy phép GPL
- 17. Có ray bỏ qua một đường dẫn cụ thể
- 18. Tôi có thể tìm đầu đọc Lisp ở đâu?
- 19. Có thể sử dụng EPL (Giấy phép Công cộng Eclipse) trong ngữ cảnh thương mại không?
- 20. Tôi có thể có khối IF trong tệp lô DOS không?
- 21. Tôi có thể bỏ qua toàn cầu .gitignore?
- 22. Có thể "mở rộng" IntelliJ sao cho tôi có thể mở tệp hiện tại trong VIM
- 23. Tôi có thể thực hiện nhiều khối catch tương ứng với một khối thử không?
- 24. Làm cách nào để tôi có thể nhận xét một dòng hoặc một khối dòng trong Vim?
- 25. Tôi có thể làm cho vim tôn trọng các tệp .gitignore của tôi không?
- 26. Tôi có nên vứt bỏ Mutex không?
- 27. Cắt bỏ dữ liệu từ một bảng có giấy vụn
- 28. Tôi có thể bỏ qua các tham số ủy nhiệm bằng cú pháp lambda không?
- 29. #!/Usr/bin/... ở đầu tệp có nghĩa là gì?
- 30. Bỏ qua giấy phép/Tín dụng Nhận xét khi rút gọn JavaScript bằng YUIcompressor
Định dạng của văn bản bạn muốn bỏ qua là gì? –