Repository für den Vim Workshop in der O-Phase 2019
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

7.2 KiB

Vim Workshop

Eine kleine Einführung in den Editor Vim

In diesem Repo befindet sich zum einen die Präsentation, zum anderen auch eine Beispiel-Configdatei, die ihr für den Anfang nutzen könnt. Diese Config setzt Neovim voraus.

Abhängigkeiten

Damit alle Plugins korrekt funktionieren, müssen noch weitere Voraussetzungen erfüllt sein.

Python

Python muss installiert sein (Auf den Rechnern im CIP-Pool der Fall). Darüber hinaus muss die Python-Erweiterung für Neovim per pip installiert werden.

pip install neovim
pip3 install neovim

Installation

Neovim erwartet die Datei im Verzeichnis ~/.config/nvim/. Folgendes Kommando lädt die Datei herunter und platziert sie im entsprechenden Verzeichnis.

curl --create-dirs -o ~/.config/nvim/init.vim https://git.schneider-hosting.de/uni/vim-workshop/raw/branch/master/init.vim

Nun kann Neovim per nvim gestartet werden und per :PlugInstall werden die Plugins installiert. Nach einem Neustart von nvim sind alle Plugins geladen und einsatzbereit

Enthaltene Plugins

Mit der Config werden einige hilfreiche Plugins mitgeliefert. Schaut euch auf jeden Fall jedes einmal genauer an.

Vundle

Packagemanage für Vim.

Neue Plugins können über einen Eintrag in der init.vim installiert werden. Schaut euch die Syntax bei den vorhandenen Beispielen an. Nachdem ihr einen Eintrag der Form Plug 'url/repo' eingetragen und gespeichert habt, startet nvim neu, führt :PlugInstall` aus und startet nvim nochmal neu. Dann sind die Plugins einsatzbereit.

NERD Commenter

Bietet die passende Kommentarsynntax für diverse Sprachen.

Im Normal Mode kann per <leader> c <space> ein Kommentar erzeugt, oder entfernt werden.

surround.vim

Verbessertes Arbeiten mit umschließenden Zeichen/Klammern.

Mit diesem Plugin können z.B Klammern geändert werden. Aus "Hallo, Welt!" wird 'Hallo, Welt!', indem innerhalb der Anführungszeichen das Kommando cs"' ausgeführt wird. Guckt in der Readme, es gibt Unterstützung für eine Vielzahl von Zeichen und Sprachen, zum Beispiel auch HTML und LaTeX.

fugitive.vim

Git-Integration.

Per :Gstatus die geänderten Dateien anzeigen lassen. <Ctrl> n lässt den Cursor zur nächsten Datei springen. Mit - wird die Datei zum Commit hinzugefügt, per cc die Commit-Message geöffnet. Wenn der Buffer gespeichert wird, wird der Commit ausgeführt.

deoplete.nvim

Codevervollständigungs-Engine

Dieses Plugin bietet das Gerüst, um Codevervollständigung für andere Sprachen anzubieten. Grob gesagt stellt es das Fenster, in dem die Vorschläge angezeigt werden, zur Verfügung. Mithilfe der Einstellungen in der init.vim kann per <TAB> zwischen den Vorschlägen gewechselt werden.

Neosnippet

Snippetunterstützung für Vim

Mit diesem Plugin werden Snippets, also kleine Templates, die erweitert werden, unterstützt. So kann z.B. in einem Markdown-Dokument aus linkurl mit <ctrl> k [link](http://) werden.

Mit <ctrl> k wird außerdem zwischen den Argumenten gewechselt.

easymotion

Noch schnellere Motions.

Einfach vor die normale Motion (z.B. w) zweimal <leader> drücken, also z.B. <leader><leader>w. Danach werden die nachfolgenden Worte mit Buchstaben markiert. Mit diesen Buchstaben kann sofort zu dem jeweiligen Wort gesprungen werden.

fzf

Extrem hilfreicher fuzzy file finder, auch auf der Kommandozeile.

Dieses Plugin installiert fzf, nicht nur in Vim. Proviert mal auf der Kommandozeile <ctrl> t aus. Oder nvim ~/.config/nvi** und drückt dann <TAB>. Es werden alle gefundenen Dateien angezeigt. Per <ENTER> übernehmt ihr den Vorschlag in die Kommandozeile. Setzt euch auf jeden Fall mit dem Programm auseinander, es kann die Produktivität ungemein steigern. In nvim bietet es per <ctrl> p die Dateisuche.

Asynchronous Lint Engine

Lintengine für diverse Linter und Sprachen

Weitere Plugins

Für fast jede Sprache und jeden Anwendungszweck gibt es reichlich Plugins, welche Codevervollständigung, erweitertes Syntaxhighlighting oder andere Funktionalitäten anbietet. Sucht einfach und lest euch in die Plugins ein. Vundle bietet die Funktion, dass Plugins nur für bestimmte Dateitypen geladen werden. JavaScript-Plugins müssen zum Beispiel nur bei JavaScript-Dateien geladen werden. Guckt dazu auch mal in meine produktive init.vim

Ausblick

Sobald ihr die Movements verinnerlicht habt, wollt ihr sie auch in anderen Programmen anwenden.

Firefox

Mit dem Plugin Vimium-FF braucht man selbst im Browser kaum noch die Maus. Mit f kann man Links auswählen, gi legt den Fokus auf das erste Inputfield, O öffnet einen neuen Tab mit Suche.

Kommandozeile (bash/zsh)

Auch auf der Kommandozeile kann man die Vim-Keybindings nutzen:

Für bash in die .bashrc einfügen:

set -o vi

Für zsh in die .zshrc eintragen:

bindkey -v

Andere Programme

Auch viele andere Programme bieten Vim-Bindings an. Sei es eine komplette Emulation per Add-On, oder simple Bewegungen per hjkl.

So kann beispielsweise eine mächtige IDE wie IntelliJ IDEA mit den gewohnten Tastaturbewegungen benutzt werden. Gerade für umfangreichere Java-Projekte (spätestens im APP) bietet sich IntelliJ IDEA mit dem Plugin IdeaVim an.

Arbeiten auf der Kommandozeile/in der Shell

Ihr werdet merken, dass ihr mit der Zeit immer mehr direkt im Terminal arbeiten werdet, nicht zuletzt weil es meist effizienter und schneller geht. Auch dafür habe ich mir viel eingerichtet um es einfacher zu machen.

Ganz besonders möchte ich euch tmux ans Herz legen. Damit könnt ihr mehrere virtuelle Terminals in einem "echten" Terminal öffnen. Guckt euch ruhig mal den Tal von Nick Nisi - vim + tmux an. In diesem seht ihr auch nocheinmal viele coole Features von Vim.

Abschließend kann ich noch zsh als Shell statt bash empfehlen. Zusammen mit oh-my-zsh habt ihr eine Vielzahl von coolen Features, die einem insgesamt das Leben auf der Kommandozeile deutlich vereinfachen. Guckt auch ruhig mal in meine dotfiles, dort findet ihr meine gesamte Konfiguration und könnt euch das ein oder andere abschauen.

Bei weiteren Fragen könnt ihr mich gerne Kontaktieren, E-Mail-Adresse findet ihr in der Präsentation. Viel Spaß!