|
@ -1,14 +1,18 @@ |
|
|
# Vim Workshop |
|
|
# Vim Workshop |
|
|
# Eine kleine Einführung in den Editor Vim |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Eine kleine Einführung in den Editor Vim |
|
|
|
|
|
|
|
|
In diesem Repo befindet sich zum einen die Präsentation, zum anderen auch eine |
|
|
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. |
|
|
Beispiel-Configdatei, die ihr für den Anfang nutzen könnt. |
|
|
Diese Config setzt [Neovim](https://neovim.io/) voraus. |
|
|
Diese Config setzt [Neovim](https://neovim.io/) voraus. |
|
|
|
|
|
|
|
|
## Abhängigkeiten |
|
|
## Abhängigkeiten |
|
|
|
|
|
|
|
|
Damit alle Plugins korrekt funktionieren, müssen noch weitere Voraussetzungen |
|
|
Damit alle Plugins korrekt funktionieren, müssen noch weitere Voraussetzungen |
|
|
erfüllt sein. |
|
|
erfüllt sein. |
|
|
|
|
|
|
|
|
### Python |
|
|
### Python |
|
|
|
|
|
|
|
|
Python muss installiert sein (Auf den Rechnern im CIP-Pool der Fall). |
|
|
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 |
|
|
Darüber hinaus muss die Python-Erweiterung für Neovim per pip installiert |
|
|
werden. |
|
|
werden. |
|
@ -19,6 +23,7 @@ pip3 install neovim |
|
|
``` |
|
|
``` |
|
|
|
|
|
|
|
|
## Installation |
|
|
## Installation |
|
|
|
|
|
|
|
|
Neovim erwartet die Datei im Verzeichnis `~/.config/nvim/`. |
|
|
Neovim erwartet die Datei im Verzeichnis `~/.config/nvim/`. |
|
|
Folgendes Kommando lädt die Datei herunter und platziert sie im entsprechenden |
|
|
Folgendes Kommando lädt die Datei herunter und platziert sie im entsprechenden |
|
|
Verzeichnis. |
|
|
Verzeichnis. |
|
@ -32,9 +37,12 @@ Plugins installiert. Nach einem Neustart von nvim sind alle Plugins geladen und |
|
|
einsatzbereit |
|
|
einsatzbereit |
|
|
|
|
|
|
|
|
## Enthaltene Plugins |
|
|
## Enthaltene Plugins |
|
|
|
|
|
|
|
|
Mit der Config werden einige hilfreiche Plugins mitgeliefert. Schaut euch auf |
|
|
Mit der Config werden einige hilfreiche Plugins mitgeliefert. Schaut euch auf |
|
|
jeden Fall jedes einmal genauer an. |
|
|
jeden Fall jedes einmal genauer an. |
|
|
|
|
|
|
|
|
### [Vundle](https://github.com/VundleVim/Vundle.vim) |
|
|
### [Vundle](https://github.com/VundleVim/Vundle.vim) |
|
|
|
|
|
|
|
|
Packagemanage für Vim. |
|
|
Packagemanage für Vim. |
|
|
|
|
|
|
|
|
Neue Plugins können über einen Eintrag in der init.vim installiert werden. |
|
|
Neue Plugins können über einen Eintrag in der init.vim installiert werden. |
|
@ -44,12 +52,24 @@ habt, startet nvim neu, führt `:PlugInstall` aus und startet nvim nochmal neu. |
|
|
Dann sind die Plugins einsatzbereit. |
|
|
Dann sind die Plugins einsatzbereit. |
|
|
|
|
|
|
|
|
### [NERD Commenter](https://github.com/scrooloose/nerdcommenter) |
|
|
### [NERD Commenter](https://github.com/scrooloose/nerdcommenter) |
|
|
|
|
|
|
|
|
Bietet die passende Kommentarsynntax für diverse Sprachen. |
|
|
Bietet die passende Kommentarsynntax für diverse Sprachen. |
|
|
|
|
|
|
|
|
Im Normal Mode kann per `<leader> c <space>` ein Kommentar erzeugt, oder |
|
|
Im Normal Mode kann per `<leader> c <space>` ein Kommentar erzeugt, oder |
|
|
entfernt werden. |
|
|
entfernt werden. |
|
|
|
|
|
|
|
|
|
|
|
### [surround.vim](https://github.com/tpope/vim-surround) |
|
|
|
|
|
|
|
|
|
|
|
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](https://github.com/tpope/vim-fugitive) |
|
|
### [fugitive.vim](https://github.com/tpope/vim-fugitive) |
|
|
|
|
|
|
|
|
Git-Integration. |
|
|
Git-Integration. |
|
|
|
|
|
|
|
|
Per `:Gstatus` die geänderten Dateien anzeigen lassen. `<Ctrl> n` lässt den |
|
|
Per `:Gstatus` die geänderten Dateien anzeigen lassen. `<Ctrl> n` lässt den |
|
@ -58,23 +78,27 @@ hinzugefügt, per `cc` die Commit-Message geöffnet. Wenn der Buffer gespeichert |
|
|
wird, wird der Commit ausgeführt. |
|
|
wird, wird der Commit ausgeführt. |
|
|
|
|
|
|
|
|
### [deoplete.nvim](https://github.com/Shougo/deoplete.nvim) |
|
|
### [deoplete.nvim](https://github.com/Shougo/deoplete.nvim) |
|
|
Codeverfollständigungs-Engine |
|
|
|
|
|
|
|
|
|
|
|
Dieses Plugin bietet das Gerüst, um Codeverfollständigung für andere Sprachen |
|
|
|
|
|
|
|
|
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 |
|
|
anzubieten. Grob gesagt stellt es das Fenster, in dem die Vorschläge angezeigt |
|
|
werden, zur Verfügung. |
|
|
werden, zur Verfügung. |
|
|
Mithilfe der Einstellungen in der init.vim kann per <TAB> zwischen den |
|
|
|
|
|
|
|
|
Mithilfe der Einstellungen in der init.vim kann per `<TAB>` zwischen den |
|
|
Vorschlägen gewechselt werden. |
|
|
Vorschlägen gewechselt werden. |
|
|
|
|
|
|
|
|
### [Neosnippet](https://github.com/Shougo/neosnippet.vim) |
|
|
### [Neosnippet](https://github.com/Shougo/neosnippet.vim) |
|
|
|
|
|
|
|
|
Snippetunterstützung für Vim |
|
|
Snippetunterstützung für Vim |
|
|
|
|
|
|
|
|
Mit diesem Plugin werden Snippets, also kleine Templates, die erweitert werden, |
|
|
Mit diesem Plugin werden Snippets, also kleine Templates, die erweitert werden, |
|
|
unterstützt. |
|
|
unterstützt. |
|
|
So kann z.B. in einem Markdown-Dokument aus `linkurl` mit `<ctrl> k` `[link](http://)` werden. |
|
|
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. |
|
|
Mit `<ctrl> k` wird außerdem zwischen den Argumenten gewechselt. |
|
|
|
|
|
|
|
|
### [easymotion](https://github.com/easymotion/vim-easymotion) |
|
|
### [easymotion](https://github.com/easymotion/vim-easymotion) |
|
|
|
|
|
|
|
|
Noch schnellere Motions. |
|
|
Noch schnellere Motions. |
|
|
|
|
|
|
|
|
Einfach vor die normale Motion (z.B. `w`) zweimal `<leader>` drücken, also z.B. |
|
|
Einfach vor die normale Motion (z.B. `w`) zweimal `<leader>` drücken, also z.B. |
|
@ -83,6 +107,7 @@ markiert. Mit diesen Buchstaben kann sofort zu dem jeweiligen Wort gesprungen |
|
|
werden. |
|
|
werden. |
|
|
|
|
|
|
|
|
### [fzf](https://github.com/junegunn/fzf) |
|
|
### [fzf](https://github.com/junegunn/fzf) |
|
|
|
|
|
|
|
|
Extrem hilfreicher fuzzy file finder, auch auf der Kommandozeile. |
|
|
Extrem hilfreicher fuzzy file finder, auch auf der Kommandozeile. |
|
|
|
|
|
|
|
|
Dieses Plugin installiert fzf, nicht nur in Vim. Proviert mal auf der |
|
|
Dieses Plugin installiert fzf, nicht nur in Vim. Proviert mal auf der |
|
@ -93,4 +118,53 @@ Programm auseinander, es kann die Produktivität ungemein steigern. |
|
|
In nvim bietet es per `<ctrl> p` die Dateisuche. |
|
|
In nvim bietet es per `<ctrl> p` die Dateisuche. |
|
|
|
|
|
|
|
|
### [Asynchronous Lint Engine](https://github.com/w0rp/ale) |
|
|
### [Asynchronous Lint Engine](https://github.com/w0rp/ale) |
|
|
|
|
|
|
|
|
Lintengine für diverse Linter und Sprachen |
|
|
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](https://git.schneider-hosting.de/schneider/dotfiles/src/branch/master/init.vim#L42) |
|
|
|
|
|
|
|
|
|
|
|
## Ausblick |
|
|
|
|
|
|
|
|
|
|
|
Sobald ihr die Movements verinnerlicht habt, wollt ihr sie auch in anderen |
|
|
|
|
|
Programmen anwenden. |
|
|
|
|
|
|
|
|
|
|
|
### Firefox |
|
|
|
|
|
|
|
|
|
|
|
Mit dem Plugin |
|
|
|
|
|
[Vimium-FF](https://addons.mozilla.org/en-US/firefox/addon/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: |
|
|
|
|
|
|
|
|
|
|
|
```bash |
|
|
|
|
|
set -o vi |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
Für zsh in die `.zshrc` eintragen: |
|
|
|
|
|
|
|
|
|
|
|
```bash |
|
|
|
|
|
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](https://plugins.jetbrains.com/plugin/164-ideavim) an. |