# 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](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. ```bash 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. ```bash 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](https://github.com/VundleVim/Vundle.vim) 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](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. ### [fugitive.vim](https://github.com/tpope/vim-fugitive) Git-Integration. Per `:Gstatus` die geänderten Dateien anzeigen lassen. ` 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](https://github.com/Shougo/deoplete.nvim) Codeverfollständigungs-Engine Dieses Plugin bietet das Gerüst, um Codeverfollstä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 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. `w`. Danach werden die nachfolgenden Worte mit Buchstaben 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 Kommandozeile ` t` aus. Oder `nvim ~/.config/nvi**` und drückt dann ``. Es werden alle gefundenen Dateien angezeigt. Per `` ü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 ` p` die Dateisuche. ### [Asynchronous Lint Engine](https://github.com/w0rp/ale) Lintengine für diverse Linter und Sprachen