Flattr this

Das Narrow Region Plugin für Vim

Das Narrow Region Plugin habe ich aufgrund einer Diskussion im Usenet geschrieben.
Narrowing kommt vom Emacs und bedeutet, sich auf eine bestimmte Region zu konzentrieren und den Rest des Buffers unverändert zu lassen. So lassen sich auch größere Änderungen an einer Stelle durchführen (z.B. eine Funktion umschreiben, und den Rest der Datei geschützt lassen).

Man selektiert eine Region (Zeilen oder Blöcke) und dann tippt man ein :NR und es öffnet sich ein neues Fenster, in dem die ausgewählte Region enthalten ist.

Das Originalfenster dagegen wird schreibgeschützt gesetzt, so dass man dort nicht versehentlich etwas ändert.

Wenn man mit dem Bearbeiten fertig ist, speichert man einfach die Änderungen (:w) und schon werden sie in die Originaldatei übernommen.

Download


Das offizielle stabile Plugin gibt sich auf der vim.org Seite:
    http://www.vim.org/scripts/script.php?script_id=3075

Das  Entwicklungs-Repo befindet  sich bei Github:
      https://github.com/chrisbra/NrrwRgn


Features


Wenn das Plugin installiert ist,  sind die folgenden Kommandos verfügbar:

:NR

Die gewählte Region auswählen und in einem neuen Fenster öffnen. Wenn keine Region selektiert ist, wird die aktuelle Zeile ausgewählt.

:NW

Die Region, die im aktuellen Fenster sichtbar ist auswählen und in einem neuen Fenster öffnen.

:NRV

Die zuletzt ausgewählte Region neu auswählen und in einem neuen Fenster öffnen.

:NUD

Wenn man Patche im Unified Diff Format ansieht, kann man den aktuellen Chunk in einem Diff-Modus öffnen.

:NRP

Markiert bestimmte Regionen, die dann später mittels :NRM ausgewählt werden können.

:NRM

Alle durch :NRP selektierten Regionen in einem neuen Fenster öffnen. So kann man z.B. in einer Konfigurationsdatei alle Zeilen kommentieren, die keine Kommentare sind und nur den Inhalt bearbeiten. Beim Zurückschreiben bleiben die Kommentare erhalten:
     :v/^#/NRP
  :NRP

:NRS

Beim Schreiben den Inhalt des Narrowed Windows in die Ursprungsdatei zurückschreiben (normales Narrowing).

:NRN

Narrowing deaktivieren. Fensterinhalt kann wie eine Datei überall hin geschrieben werden.

:WidenRegion

Den Inhalt des selektierten Buffers in die ursprüngliche Datei zurückschreiben. Alternativ kann man auch mit :w den Inhalt zurückschreiben.

Für die ausführliche Beschreibung der Kommandos, sei auf die beiliegende Hilfedatei verwiesen, die mittels  
:h NarrowRegion erreichbar ist (siehe auch unten für die Online Hilfe).



Konfiguration


Es existieren verschiedene Variablen, mit denen man das Plugin konfigurieren kann.

Vertikales Fenster
Wenn man ein vertikales Fenster öffnen möchte, setzt man die Veriable g:nrrw_rgn_vert

Breite/Höhe des Fensters
Mittels der Variable g:nrrw_rgn_wdth kann man die gewünschte Höhe/Breite des Narrow Fensters definieren.

Highlighting der selektierten Region
Per default wird mit WildMenu Highlighting die Region im originalen Fenster markiert, die gerade in einem anderen Fenster geöffnet wurde. Eine anderes Highlighting kann man mit g:nrrw_rgn_hl definieren. Möchte man das Highlighting komplett abschalten, setzt man die Variable g:nrrw_rgn_nohl

Spezielle Optionen im neuen Fenster
Man kann angeben, dass bestimmte Optionen im sich öffnenden Fenster gesetzt werden. Z.B. möchte man in einer PHP Datei den HTML Teil in einem extra Fenster bearbeiten und dort soll natürlich der Dateityp auf HTML gesetzt werden. Dafür existiert die Variable g:nrrw_custom_options, z.B:
:let g:nrrw_custom_options = {}
:let g:nrrw_custom_options['filetype'] = 'html'

Das Fenster unten bzw. rechts öffnen
Normalerweise öffnet sich das Fenster horizontal über dem aktuellen Buffer. Wer das nicht möchte, setzt die Variable g:nrrw_topbot_leftright.


Hilfe


ausführliche Hilfe gibt es hier.

Bugtracking


Bugs/Probleme können hier gemeldet werden.

TL;DR


Mit dem Plugin NrrwRgn ist es sehr einfach möglich, bestimmte Bereiche einer Datei zu selektieren und sich nur auf einen Teilbereich zu konzentrieren. Dabei ist es sogar möglich, Narrowed Fenster ebenfalls in einem neuen eigenen Narrowed Fenster zu öffnen.

Die umfangreichen Optionen erlauben eine einfache Konfiguration des Plugins.