hack-hro wiki:
title:Vim-Plugins
Author: DaMicha
css:https://wiki.hack-hro.de/talk_styles/assets/css/style2.css
description:

Vim als Text Editor bietet von Haus aus schon eine große Vielfalt an Funktionen zum Erstellen und Bearbeiten von Texten jeglicher Art. Aber es geht noch doller. Vims Funktionalität lässt sich über Vim-Skripte ausbauen, die sich als Plugins einbinden lassen. In diesem Vortrag wird gezeigt wie sich mit Hilfe eines Plugin-Managers die Plugins verwaltet werden. Es werden einige Plugins vorgestellt, die den Umgang mit Vim erleichtern und dessen Funktionalität erweitern.

Plugin Manager: pathogen Plugins: NERDTree, BufExplorer, gundo, VimWiki Hackspace Rostock e.V.

data-scale:0.7
data-transition-duration:
 1

Übersicht

  • Vim-Plugins Allgemein
  • Plugin Manager: pathogen
  • Plugins:
    • netrw
    • paren
    • BufExplorer
    • gundo
    • NERDTree
    • VimWiki

Vim Plugins im Allgemeinen

  • Plugins sind Vim Skripte die automatisch beim Vim Start geladen werden.
  • Die Skripte enden mit der Dateierweiterung *.vim.
  • Es gibt globale und dateityp spezifische Vim Skripte.
  • Die Skripte liegen in Unterverzeichnissen des Vim Installationspfades und des ~/.vim Verzeichnisses im Nutzer Home.

Mögliche Skriptverzeichnisse

  • plugin: Vim Plugins
  • ftplugin: dateityp spezifische Plugins
  • syntax: dateityp spezifische Syntaxschemas
  • indent: dateityp spezifische Indent-Definitionen
  • colors: Farbschemas
  • autoload: Funktionsdefinitionen, die bei Bedarf aufgerufen werden können
  • after: Funktionen und Einstellungen, die nach dem Laden aller Plugins direkt vor der Anzeige des Buffers geladen werden
  • doc: Dokumentationen zu Plugins (Zugriff über :help)

Globale plugins

Sind nicht in Vim einkompiliert, werden aber automatisch beim Vim Start geladen.

Aktive Plugins sind nicht einfach so anzeigbar, da sie aus einzelnen *.vim Skripte bestehen, die einfach geladen werden. Stattdessen können die geladenen *.vim Skripe aufgelistet werden.

scriptnames

Zeigt die geladenen Skripte in der Reihenfolge in der sie geladen wurden.


Standard Plugin

Werden automatisch geladen. Liegen im Vim-Installationspfad unter plugin.

  • netrw: Zugriff auf Dateien über's Netzwerk
  • paren: Zeige zugehörige Klammern

Vim-Installationspfad anzeigen:

:echo $VIMRUNTIME

User Plugins

Installationpfad im Nutzerverzeichnis: ~/.vim/plugin (Unix/Linux, Mac OS X)

Zur besseren Organisation sind Unterverzeichnisse für Plugins erlaubt.


filetype Plugins

Erweitern Vim um Funktionalitäten abhängig vom Filetyp einer geöffneten Datei. Wird aktiviert mit:

:filetype plugin on

Standard Plugins

Installationspfad: <Vim Installationspfad>/ftplugin


User Plugins

Installationspfad: ~/.vim/ftplugin


autoload

Verzeichnis das Vim-Skripte enthält, die direkt mittels:

call subpath#function(param)

aufgerufen werden können.


Einfache Vim Konfiguration

.vimrc - Teil 1:

syntax on               " syntax highlighting
filetype indent on      " activates indenting for files

" backspace in insert mode works like normal editor. allow backspace over:
set backspace=indent,eol,start

set number              " enable line numbers

" set color scheme (a light one)
colorscheme desert      " colorscheme desert

.vimrc - Teil 2:

" tabbing config
set expandtab           " insert spaces in tabs
set shiftwidth=4
set tabstop=4
set softtabstop=4       " handle (delete) softtabs (with white space) like tabs

" indenting
set smartindent         " indenting as function of filetype
set autoindent          " auto indenting

" wild mode for tab completion in command mode: like in the bash
set wildmode=longest,list

FIXME: link to file


Vim interne Plugins

  • netrw
  • paren

netrw

Zugriff auf Dateien über das Netzwerk:

Beim Vim-Start:

vim scp://hostname/path/to/file

Innerhalb von Vim:

  • Datei editieren. Hier über scp
:e scp://hostname/path/to/file
  • Datei schreiben: Hier über ftp
:w ftp://hostname/path/to/file

paren

Hebt zugehörige Klammern hervor.


Vims User Plugins

  • pathogen
  • BufExplorer
  • gundo
  • NERDTree
  • VimWiki

pathogen

FIXME: Ein Beispiel

  • einfache Vim Konfiguration
  • pathogen installieren
  • Vim Konfiguration anpassen
  • Vim starten:
    • :filetype prüfen
    • :scriptnames prüfen

Ein Vim Plugin Manager.

Es wird emfohlen einen Plugin Manager zu nutzen, da die meißten Plugins sich in den Vim Konfigurationspfaden verteilen. Mit Hilfe eines Plugin Managers wird jedes Plugin in ein eigenes Unterverzeichnis installiert.

Bei pathogen werden die Plugin-Verzeichnisse in das ~/.vim/bundle Verzeichnis installiert. Das pathogen Plugin selbst, wird in das ~/.vim/autoload installiert.


Installation laut pathogen README:

mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

Der folgende Aufruf startet pathogen und lädt alle Plugins, die in dem bundle Verzeichnis installiert sind.

execute pathogen#infect()

Zusätzliche Konfigurationen um Syntax highlighting, Plugins und Indent Konfigurationen zu aktivieren:

syntax on
filetype plugin indent on

Die aktuelle filetype Konfiguration kann mit

:filetype

ausgegeben werden.


Snippit für die .vimrc

" load pathogen
execute pathogen#infect()

syntax on                   " syntax highlighting
filetype plugin indent on   " activates plugins and indenting for files

FIXME: link to .vimrc


Später, sobald ein neues Plugin in das ~/.vim/bundle Verzeichnis installiert wurde, sollte:

:Helptags

aufgerufen werden, um die Plugin-Dokumentation verfügbar zu machen.


NERDTree

Komfortabler Datei-Browser.

  • Zeigt Dateien und Verzeichnisse in hierarchischer Baumstruktur an.
  • Unterstützt Lesezeichen.
  • Unterschiedliche Farben für verschiedene Strukturelemente wie Dateien, Links, Verzeichnisse, u.a.
  • Einfache Tastaturkomandos zum Navigieren

Installation

Installationsanweisung von: http://www.vim.org/scripts/script.php?script_id=1658

-> besser den Vim-Plugin-Manager-Ansatz nehmen.

Git Repository in das bundle Verzeichnis installieren:

cd ~/.vim/bundle
git clone https://github.com/scrooloose/nerdtree.git

Vim starten und Hilfe aktualisieren:

:Helptags

Benutzen

NERDTree öffnen/schließen:

  • :NERDTree - Side-by-Side Ansicht öffnen
  • q - NERDTree schließen
  • e . - Aktuelles Verzeichnis in neuem Buffer löschen.

Hilfe:

  • ? - Kurzhilfe anzeigen und verstecken

Navigation:

  • Cursortasten oder hjkl-Tasten
  • o, <Enter> - Verzeichnis öffnen und schließen
  • O - Verzeichnis rekursiv öffnen
  • x - übergeordnetes Verzeichnis schließen
  • p - zum Übergeordneten Verzeichnis wechseln
  • P - zur Basis des Verzeichnisbaumes wechseln

Datei zum editieren öffnen:

  • o, <Enter> - Datei öffnen
  • t - Datei in neuen Tab öffnen
  • s, i - Datei im vertikalen oder horizontalen Split öffnen

Bookmarks:

  • B - Lesezeichen anzeigen
  • o, <Enter> - zu Lesezeichen springen
  • :Bookmark <name> - neues Lesezeichen erstellen
  • D - Lesezeichen löschen

Arbeitsverzeichnis wechseln:

  • cd - setzte Arbeitsverzeichnis neu
  • C - Ändere Basis des Verzeichnisbaumes im NERDTree

Ansicht:

  • I: versteckte Dateien anzeigen oder verstecken

BufExplorer

Listet die Vim Buffers und ermöglicht die einfache Auswahl eines der Buffer.

Normales arbeiten mit Buffer:

  • :buffers - Liste vorhandene Buffer
  • :b[uffer] [N] - bearbeite Buffer N
  • :bn[ext] - wähle nächsten Buffer
  • :bp[rev] - wähle vorherigen Buffer
  • :bd[elete] [N] - schließt Buffer N

Installation

Auch hier, das Git Repository in das bundle Verzeichnis installieren:

cd ~/.vim/bundle
git clone https://github.com/jlanzarotta/bufexplorer.git

Vim starten und Hilfe aktualisieren:

:Helptags

Benutzen

BufExplorer öffnen/schließen:

  • :BufExplorer oder \be - öffnen und vorhandene Buffer anzeigen
  • q - BufExplorer schließen

Hilfe:

  • F1 - Kurzhilfe anzeigen und verstecken

Navigation:

  • Cursortasten oder hjkl-Tasten
  • o, <Enter> - Buffer öffnen
  • t - Buffer in neuem Tab öffnen
  • d - Buffer schließen

gundo

Vim legt nicht nur eine lineare Editier-History an, sondern speichert die Änderungen in einen Baum, so dass sämtliche gemachten Änderungen wiederhergestellt werden können.

Arbeiten mit der Vim-Editier-History:

  • u - (undo) letzte Änderung rückgängig machen
  • Ctrl-R - (redo) eine Rückgängig gemachte Änderung zurücknehmen
  • :undolist

gundo hingegen zeigt den Vims History-Baum und lässt den Nutzer durch die History browsen.

Installation

Git Repository in das bundle Verzeichnis installieren:

cd ~/.vim/bundle
git clone http://github.com/sjl/gundo.vim.git

Vim starten und Hilfe aktualisieren:

:Helptags

Benutzen

Öffnen/Schließen:

  • :GundoShow - öffnen
  • :GundoToggle - öffnen/schließen
  • :GundoHide, q - schließen

Navigation:

  • Cursortasten oder jk-Tasten
  • o, <Enter> - Änderung auswählen

Zusätzliche Undo Konfiguration

  • undofile - Lege Undo-Dateien an
  • undodir - Verzeichnis für undo Dateien
" undofile and undodir settings
if exists("+undofile")
  " undofile - This allows you to use undos after exiting and restarting
  " This, like swap and backups, uses .vim-undo first, then ~/.vim/undo
  " :help undo-persistence
  " This is only present in 7.3+
  if isdirectory($HOME . '/.vim/undo') == 0
    :silent !mkdir -p ~/.vim/undo > /dev/null 2>&1
  endif
  set undodir=./.vim-undo//,~/.vim/undo//
  set undofile
endif

vimwiki

Unterstützt das Anlegen und Verwalten von Projektdokumentationen.

Funktionalität:

  • Benutzt eigenen aber einfachen Markdown Syntax.
  • Einfaches anlegen und verwalten von ToDo-Listen.
  • Einfaches erstellen und bearbeiten von Tabellen.
  • VimWiki Dokumente können untereinander verlinkt werden.
  • Aus den VimWiki Dokumenten können HTML Seiten generieren werden.

Installation

Git Repository in das bundle Verzeichnis installieren:

cd ~/.vim/bundle
git clone https://github.com/vimwiki/vimwiki.git

Vim starten und Hilfe aktualisieren:

:Helptags

Benutzen anhand eines Beispiels

Markdown - Syntax:

= Header1 =
== Header2 ==
=== Header3 ===

*bold* -- bold text
_italic_ -- italic text

  * Bullet List Item
    - Bullet List item
    - Bullet List item

Markdown - Syntax:

[[VimWiki-Link|Bescheibung]]

| Nummer | Beschreibung |
|--------|--------------|
| 1      | Eins         |
| 2      | Zwei         |

Als Beispiel ein neues Projekt anlegen.

Datei: readme.wiki

Überschrift und Beschreibung einfügen.

Überschriften lassen sich mittels = und - in ihrer Hierarchiestufe festlegen.

Die Projektbeschreibung als fetter Text.


TODO Liste anlegen:

  • Unterseite für
    • Liste
    • Tabelle
  • HTML generieren
  • Tagebucheintrag anlegen
  • Auf's readme verlinken

Checkboxen in Listen

Checkbox hinzufügen:

  • <C-Space> - Checkbox an, toggle Status: offen, erledigt
  • gl<Space> - Checkbox entfernen

Hierarchieebene des Listeneintrag ändern:

  • gll - Listen Eintrag nach Rechts verschieben (gLl - mit Untereinträgen)
  • glh - Listen Eintrag nach Links verschieben (gLh - mit Untereinträgen)

Unterseiten anlegen

Unterseite für Liste:

Seite erstellen:

  • <Enter>, + auf Wort oder Markierung - Link anlegen
  • <Enter> auf Link - Link folgen
  • <BS> - Seite zurück gehen
  • <Tab>, <S-Tab> - gehe zum nächsten oder vorherigen Link der Seite

Liste mit -, * und Nummern erstellen.


Unterseite für Tabelle:

Seite erstellen

Einfache Tabelle manuell erstellen.

| Nr | Name |
|----|------|
| 1  | eins |
| 2  | zwei |

Sich zwischen den Zellen bewegen (im Insert Mode):

  • <Enter> - nächste Zeile, oder neue Zeile erstellen
  • <Tab> - zur nächsten Zelle springen
  • <S-Tab> - zur vorherigen Zelle springen

Die Größe der Zellen wird automatisch an den deren Inhalt angepasst.


Tabelle mit 3 Spalten und 4 Zeilen erstellen.

:VimwikiTable 3 4

Lässt sich dann füllen mit:

| Nr  | Name | Beschreibung |
|-----|------|--------------|
| 1   | eins | ne eins      |
| 2   | zwei | ne zwei      |
| ... |      |              |
|     |      |              |

HTML generieren

generieren:

:Vimwiki2HTML

generieren und im Browser aufrufen:

:Vimwiki2HTMLBrowse

Extra Konfigurationen

Zum einfacheren Aufrufen der Pluginfunktionen.

nmap \g :GundoToggle<CR>
nmap \n :NERDTreeToggle<CR>

" \bs, \be, .. Are already used by BufExplorer
nmap \bb :b#<CR>

Alternativ können die Funktionen auf die F-Tasten gemappt werden.


/* HINWEIS: Die nachfolgende Textzeile bitte nicht löschen. */ Diese Seite dient der Dokumentation des Workshops. Die Präsentationsinhalte sind unter dem Punkt ''Materialien'' verlinkt.

System Message: WARNING/2 (<string>, line 746); backlink

Inline emphasis start-string without end-string.

/* HINWEIS. Dies ist eine Vorlage, die du selbst ausfüllen musst. / / Dazu einfach den Text in (Klammern) durch entsprechenden Text ersetzen. */ = Info =

System Message: WARNING/2 (<string>, line 749); backlink

Inline emphasis start-string without end-string.

System Message: ERROR/3 (<string>, line 752)

Unexpected indentation.

Workshoptitel:: VIM-Plugins Workshopleiter:: DaMicha Datum:: 17.02.2016 Beschreibung:: Vim als Text Editor bietet von Haus aus schon eine große Vielfalt an Funktionen zum Erstellen und Bearbeiten von Texten jeglicher Art. Aber es geht noch doller. Vims Funktionalität lässt sich über Vim-Skripte ausbauen, die sich als Plugins einbinden lassen. In diesem Vortrag wird gezeigt wie sich mit Hilfe eines Plugin-Managers die Plugins verwaltet werden. Es werden ein paar Plugins vorgestellt, die den Umgang mit Vim erleichtern und dessen Funktionalität erweitern.

  • Plugin Manager: pathogen
  • Plugins: NERDTree, Buf``Explorer, gundo, Vim``Wiki

= Materialien =

  • (Hier Materialien verlinken; Präsentationsinhalte für Hovercraft bitte auf Unterseiten dieser Seite)

hack-hro wiki: Workshops/vim-plugins (zuletzt geƤndert am 2016-02-15 19:44:27 durch damicha)