diff --git a/README.md b/README.md index 5cfde4a..05961c3 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,18 @@ # 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 Beispiel-Configdatei, die ihr für den Anfang nutzen könnt. Diese Config setzt [Neovim](https://neovim.io/) 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. @@ -19,6 +23,7 @@ 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. @@ -32,9 +37,12 @@ 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](https://github.com/VundleVim/Vundle.vim) + Packagemanage für Vim. 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. ### [NERD Commenter](https://github.com/scrooloose/nerdcommenter) + Bietet die passende Kommentarsynntax für diverse Sprachen. Im Normal Mode kann per ` c ` ein Kommentar erzeugt, oder 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) + Git-Integration. Per `:Gstatus` die geänderten Dateien anzeigen lassen. ` 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. ### [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 werden, zur Verfügung. -Mithilfe der Einstellungen in der init.vim kann per zwischen den +Mithilfe der Einstellungen in der init.vim kann per `` zwischen den Vorschlägen gewechselt werden. ### [Neosnippet](https://github.com/Shougo/neosnippet.vim) + 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 ` k` `[link](http://)` werden. + Mit ` k` wird außerdem zwischen den Argumenten gewechselt. ### [easymotion](https://github.com/easymotion/vim-easymotion) + Noch schnellere Motions. Einfach vor die normale Motion (z.B. `w`) zweimal `` drücken, also z.B. @@ -83,6 +107,7 @@ markiert. Mit diesen Buchstaben kann sofort zu dem jeweiligen Wort gesprungen werden. ### [fzf](https://github.com/junegunn/fzf) + Extrem hilfreicher fuzzy file finder, auch auf der Kommandozeile. 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 ` p` die Dateisuche. ### [Asynchronous Lint Engine](https://github.com/w0rp/ale) + 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.