Frage

Gibt es eine Möglichkeit, Falten oder andere schwarze Vim-Skriptmagie zu verwenden, um Lizenzblöcke oben in Dateien zu verbergen? Ich mag es nicht, dass sie einen so großen Teil meines Bearbeitungsbereichs in Anspruch nehmen; Ich mag es, ein Gefühl dafür zu bekommen, was eine Datei tut, wenn ich sie zum ersten Mal öffne, und nicht ein Gesichtsfreund von Kesselplatten.

War es hilfreich?

Lösung

Versuchen Sie dies in einem AutoCommand.

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

Passen Sie den Bereich in Zeile 4 angemessen an. Im schlimmsten Fall, in dem das Urheberrecht an verschiedenen Orten beginnt und eine variable Länge ist, sollte dieses Muster:

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

Andere Tipps

Es hängt davon ab, ob es ein konsistentes Formular für den Lizenzblock gibt und in welcher Sprache Sie programmieren. Beispielsweise nutzt Python dazu, ein "FoldExpr" zu verwenden, um das Falten zu definieren. Um dies hinzuzufügen, müssen Sie die vorhandene Funktion durch die vorhandene Funktion ersetzen. eine neue (oder die vorhandene Faltung loswerden). Ich glaube, die Standardeinstellung in C besteht darin, eine manuelle Faltung zu verwenden (obwohl ich es selbst so konfiguriert habe: Ich kann mich nicht erinnern). Dies ist also viel einfacher, zusätzliche Falten hinzuzufügen.

Mit einer einfachen GPL -Copyright -Nachricht wie der am Ende dieses Beitrags können Sie FoldMethod auf Handbuch festlegen und eine einfache Funktion haben, die eine Falte erstellt. Es hängt alles von der Form des Urheberrechts ab und wie wichtig es ist, dass Sie die vorhandene Faltung beibehalten. Ich fürchte, ich würde ein bisschen mehr Details brauchen, um eine nützlichere Antwort zu geben. Hier finden Sie hier ein Beispielskript, mit dem die Copyright -Mitteilung am Ende dieses Beitrags faltet:

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

Angenommen, eine Urheberrechtsbescheid wie diese:

# 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...

Ich habe dafür ein kleines VIM -Plugin erstellt. Es göttlich, wenn der erste Kommentar der Seite gefaltet werden sollte. Es hat an meinen Testfällen funktioniert, aber natürlich ist jede Verbesserung willkommen. Es sollte einfach sein, andere einzelne oder mehrere Zeilenkennungen hinzuzufügen.

Kapiert hier. Zum Installieren wie jedes andere Plugin einfach in Ihr ~/.vim/Plugin.

Bearbeiten: Ändern Sie den Link auf vim.org und räumen Sie die Antwort auf

Wie wäre es, sie zu löschen? Ernsthaft.

Der Quellcode wird durch Rechte Eigentümer und Lizenzierung geschützt, nicht durch das Boilerplate. Es muss nicht da sein - zumindest in den meisten Fällen.

Bei GPL und anderen ähnlichen Schemata, die den Text effektiv erfordern, kann er auf den Ende der Datei oder was auch immer verschoben werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top