2010-02-12 20 views
8

Czy istnieje sposób użycia fałd lub jakiejś czarnej magii Vim-script do ukrycia bloków licencji na górze plików? Nie podoba mi się, że zajmują tak dużą część mojego okna edycyjnego; Lubię mieć poczucie, co robi plik, kiedy go po raz pierwszy otwieram, a nie twarz pełna tablicy.Czy mogę Vim zignorować blok licencji u góry pliku?

+0

Jaki jest format tekstu, który chcesz zignorować? –

Odpowiedz

4

Spróbuj tego w autokomendę.

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

Dostosuj odpowiednio zakres na linii 4. W najgorszym przypadku, gdzie zaczyna się prawo autorskie w różnych miejscach i jest zmienna długość tego wzorca powinny zrobić:

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

Polecam użycie 'cichy!' Przed komendą fold, więc jeśli blok licencji nie istnieje, Vim nie narzeka. – ereOn

0

Co powiesz na usunięcie? Poważnie.

Kod źródłowy jest chroniony prawem własności i licencjonowaniem, a nie podstawowym kodem. Nie musi tam być - przynajmniej w większości przypadków.

W przypadku GPL i innych podobnych programów, które skutecznie wymagają obecności tekstu, można go przenieść na dół pliku lub cokolwiek innego.

+0

A co, jeśli ktoś chce, aby ludzie przeczytali odpowiednie informacje o licencji ** najpierw **? Vim jest wystarczająco potężny, by składać go automatycznie i łatwo, więc to i tak nic wielkiego ... – ereOn

2

To zależy od tego, czy istnieje spójny formularz do bloku licencji i jakiego języka programujesz. Na przykład, python ma tendencję do używania 'foldexpr' do definiowania składania, więc aby dodać to musisz zastąpić istniejąca funkcja z nową (lub pozbyć się istniejącego składania). Domyślam się, że w C używam ręcznego składania (chociaż możliwe, że skonfigurowałem to w ten sposób sam: nie pamiętam), więc znacznie łatwiej jest dodać dodatkowe składanie.

Dzięki prostemu komunikatowi o prawach autorskich GPL, takim jak ten na końcu tego posta, możesz ustawić foldmethod na manualny i mieć prostą funkcję, która tworzy zgięcie. Wszystko zależy od formy prawa autorskiego i od tego, jak ważne jest utrzymanie istniejącego składania. Obawiam się, że potrzebuję nieco więcej szczegółów, by dać bardziej przydatną odpowiedź. Tak czy inaczej, oto skrypt przykład, który może być stosowany do złożenia informacji o prawach autorskich na końcu tego postu:

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() 

Zakładając o prawach autorskich jak ten:

# 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

stworzyłem brakujące wtyczki vim do tego. Dewiuje, kiedy pierwszy komentarz strony powinien zostać złożony. To działało w moich testowych przypadkach, ale oczywiście każda poprawa jest mile widziana. Powinno być łatwo dodać inne pojedyncze lub wielokrotne identyfikatory linii.

Zdobądź here. Aby zainstalować, jak każda inna wtyczka, po prostu umieść ją w swojej ~/.vim/plugin.

Edytuj: Zmieniono link do strony vim.org i oczyściłem odpowiedź

+0

Dlaczego nie przesłać tego vim.org jako skryptu? –

+0

dobre pytanie. nie wydaje się bardzo przydatne. – fotanus

Powiązane problemy