Schneider
6b2d35fadb
|
5 years ago | |
---|---|---|
img | 6 years ago | |
.gitignore | 6 years ago | |
README.md | 5 years ago | |
how-to-vim.pdf | 5 years ago | |
how-to-vim.tex | 5 years ago | |
init.vim | 5 years ago |
README.md
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. Außerdem setze ich Linux vorraus, ich selbst arbeite mit Ubuntu und habe die folgenden Sachen damit getestet. Unter Mac funktioniert vermutlich auch einiges, Windows kann ich allerdings überhaupt nicht empfehlen.
Hilfreiche Links und Infos
- Alles wichtige in einem Bild (Vermutlich das Beste Cheatsheet)
- Vim Cheat Sheet Website
- vimawesome.com (Auflistung vieler hilfreicher Plugins)
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.
Auf euren eigenen Rechnern muss vermutlich vorher noch pip installiert werden. Dafür kann unter Ubuntu folgendes Kommando ausgeführt werden:
sudo apt install python-pip python3-pip
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.
vim-plug
Packagemanager 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.
Gerade in Projekten mit mehereren Entwicklern ist git blame immer wieder hilfreich.
Per :Gblame
wird ein Fenster auf der linken Seite geöffnet, welches für jede
Zeile den letzten Bearbeiter und den dazugehörigen Commit zeigt.
coc.nvim
Codevervollständigung per Languageserver.
Ein Code-Editor ohne vernünftige Vervollständigung ist kaum sinnvoll nutzbar. Seit kurzem habe ich dafür coc.nvim entdeckt, welches mit dem Language Server Protocol (vielleicht schon aus arbeitet, und somit vorhandene Vervollständigungen für die jeweiligen Sprachen nutzen kann.
Auf der Website findet sich eine Liste mit unterstützten Sprachen und
lsp-servern.
Diese sind als Plugins für coc.nvim realisiert und werden mit dem Kommando
CocInstall coc-php
installiert.
Dieses Plugin bietet noch weitere Features, zum Beispiel snippets per
coc-snippets. Dies kann per
CocInstall coc-snippets
installiert werden.
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
Vimgolf
Ihr habt sicherlich gesehen: Es geht bei Vim im Wesentlichen darum, mit möglichst wenig Tastendrücken möglichst viel zu erreichen. Vimgolf ist ein Spiel, welches das auf die Spitze treibt. Dort gibt es Challenges, die es mit möglichst wenig Tastendrücken zu bewältigen gilt. Guckt da mal rein, dadurch lernt man noch einmal ganz neue Seiten von Vim kennen.
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ß!
VIM-Modi in anderen Editoren
Es gibt für viele bekannte Editoren und IDEs Plugins um die Eingabemodi und Tastenkombinationen von vim zu emulieren. Wenn ihr bereits viel Erfahrung mit einem Editor oder einer IDE habt, kann solch ein Plugin sehr hilfreich für den Anfang sein. So könnt ihr euch mit den Eingabewegen von vim vertraut machen, habt aber nach wie vor die bekannte Umgebung.
Für den Anfang kann das ein sehr guter Mittelweg sein, wenn Ihr dann irgendwann Lust habt komplett umzusteigen könnt ihr das natürlich immer noch machen. Oder Ihr bleibt weiterhin bei eurem Editor/IDE, das Wichtigste ist, dass ihr produktiv sein könnt.