2010-02-12 10 views
8

Gibt es eine Möglichkeit, Falten oder eine andere schwarze Magie von Vim-Script zu verwenden, um Lizenzblöcke am Anfang von Dateien zu verbergen? Ich mag es nicht, dass sie einen so großen Ausschnitt meines Bearbeitungsfensters einnehmen; Ich möchte mir ein Gefühl dafür verschaffen, was eine Datei macht, wenn ich sie zum ersten Mal öffne, anstatt ein Gesicht voll mit Textplatten zu haben.Kann Vim einen Lizenzblock am Anfang einer Datei ignorieren?

+0

Was ist das Format des Textes, den Sie ignorieren mögen? –

Antwort

4

die Sie interessieren in einem automatischen Befehl.

Stellen Sie den Bereich in Zeile 4 entsprechend ein. Im schlimmsten Fall, in dem das Urheberrecht an verschiedenen Orten beginnt und ist ein variabler Länge sollte dieses Muster tun:

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

Ich empfehle ''silent!' Vor dem Befehl falten, damit Vim nicht klagt, wenn der Lizenzblock nicht existiert. – ereOn

0

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

Der Quellcode ist durch Rechtebesitz und Lizenzierung geschützt, nicht durch das Muster. Es muss nicht dort sein - zumindest in den meisten Fällen.

Im Fall von GPL und anderen ähnlichen Schemata, die den Text tatsächlich benötigen, kann es an den unteren Rand der Datei oder was auch immer verschoben werden.

+0

Und was, wenn man möchte, dass Leute die relevanten Lizenzinformationen ** zuerst ** lesen? Vim ist mächtig genug, um es automatisch und einfach zu falten, so dass es sowieso keine große Sache ist ... – ereOn

2

Es hängt davon ab, ob es eine konsistente Form für den Lizenzblock gibt und in welcher Sprache Sie programmieren. Zum Beispiel verwendet Python einen 'foldexpr', um die Faltung zu definieren, also müssen Sie diese ersetzen die bestehende Funktion mit einer neuen (oder die bestehende Faltung loswerden). Ich glaube, der Standard in C ist das manuelle Falten (obwohl es möglich ist, dass ich es selbst so konfiguriere: ich kann mich nicht erinnern), also ist es viel einfacher, zusätzliches Falten hinzuzufügen.

Mit einer einfachen GPL-Copyright-Nachricht wie der am Ende dieses Beitrags, könnten Sie foldmethod auf manuell einstellen und eine einfache Funktion haben, die eine Faltung erzeugt. Es hängt alles von der Form des Copyrights ab und wie wichtig es für Sie ist, die bestehende Faltung beizubehalten. Ich fürchte, ich brauche etwas mehr Details, um eine nützlichere Antwort zu geben. Wie auch immer, hier ist ein Beispiel-Skript, das verwendet werden könnte, den Copyright-Hinweis am Ende dieses Beitrags zu falten:

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

einen Copyright-Hinweises wie diesen Angenommen:

# 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

Ich habe ein kleines vim Plugin dafür. Es wird bestimmt, wenn der erste Kommentar der Seite gefaltet werden soll. Es hat bei meinen Testfällen funktioniert, aber natürlich ist jede Verbesserung willkommen. Es sollte einfach sein, andere einzelne oder mehrere Zeilenidentifikatoren hinzuzufügen.

Holen Sie es here. Um es wie jedes andere Plugin zu installieren, legen Sie es einfach in Ihr ~/.vim/plugin.

Edit: Changed den Link zu vim.org und aufgeräumt die Antwort

+0

Warum reichen Sie diesen vim.org nicht als Skript ein? –

+0

gute Frage. scheint nicht sehr nützlich. – fotanus

Verwandte Themen