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.

201 lines
7.2 KiB

6 years ago
  1. # Vim Workshop
  2. ## Eine kleine Einführung in den Editor Vim
  3. In diesem Repo befindet sich zum einen die Präsentation, zum anderen auch eine
  4. Beispiel-Configdatei, die ihr für den Anfang nutzen könnt.
  5. Diese Config setzt [Neovim](https://neovim.io/) voraus.
  6. ## Hilfreiche Links und Infos
  7. - [Alles wichtige in einem Bild](https://www.reddit.com/r/vim/comments/32r85c/this_is_my_favorite_vim_cheat_sheet_does_anyone/) (Vermutlich das Beste Cheatsheet)
  8. - [Vim Cheat Sheet Website](https://vim.rtorr.com/)
  9. - [vimawesome.com](https://vimawesome.com/) (Auflistung vieler hilfreicher Plugins)
  10. ## Abhängigkeiten
  11. Damit alle Plugins korrekt funktionieren, müssen noch weitere Voraussetzungen
  12. erfüllt sein.
  13. ### Python
  14. Python muss installiert sein (Auf den Rechnern im CIP-Pool der Fall).
  15. Darüber hinaus muss die Python-Erweiterung für Neovim per pip installiert
  16. werden.
  17. ```bash
  18. pip install neovim
  19. pip3 install neovim
  20. ```
  21. ## Installation
  22. Neovim erwartet die Datei im Verzeichnis `~/.config/nvim/`.
  23. Folgendes Kommando lädt die Datei herunter und platziert sie im entsprechenden
  24. Verzeichnis.
  25. ```bash
  26. curl --create-dirs -o ~/.config/nvim/init.vim https://git.schneider-hosting.de/uni/vim-workshop/raw/branch/master/init.vim
  27. ```
  28. Nun kann Neovim per `nvim` gestartet werden und per `:PlugInstall` werden die
  29. Plugins installiert. Nach einem Neustart von nvim sind alle Plugins geladen und
  30. einsatzbereit
  31. ## Enthaltene Plugins
  32. Mit der Config werden einige hilfreiche Plugins mitgeliefert. Schaut euch auf
  33. jeden Fall jedes einmal genauer an.
  34. ### [Vundle](https://github.com/VundleVim/Vundle.vim)
  35. Packagemanage für Vim.
  36. Neue Plugins können über einen Eintrag in der init.vim installiert werden.
  37. Schaut euch die Syntax bei den vorhandenen Beispielen an.
  38. Nachdem ihr einen Eintrag der Form `Plug 'url/repo' eingetragen und gespeichert
  39. habt, startet nvim neu, führt `:PlugInstall` aus und startet nvim nochmal neu.
  40. Dann sind die Plugins einsatzbereit.
  41. ### [NERD Commenter](https://github.com/scrooloose/nerdcommenter)
  42. Bietet die passende Kommentarsynntax für diverse Sprachen.
  43. Im Normal Mode kann per `<leader> c <space>` ein Kommentar erzeugt, oder
  44. entfernt werden.
  45. ### [surround.vim](https://github.com/tpope/vim-surround)
  46. Verbessertes Arbeiten mit umschließenden Zeichen/Klammern.
  47. Mit diesem Plugin können z.B Klammern geändert werden. Aus `"Hallo, Welt!"` wird
  48. `'Hallo, Welt!'`, indem innerhalb der Anführungszeichen das Kommando `cs"'`
  49. ausgeführt wird.
  50. Guckt in der Readme, es gibt Unterstützung für eine Vielzahl von Zeichen und
  51. Sprachen, zum Beispiel auch HTML und LaTeX.
  52. ### [fugitive.vim](https://github.com/tpope/vim-fugitive)
  53. Git-Integration.
  54. Per `:Gstatus` die geänderten Dateien anzeigen lassen. `<Ctrl> n` lässt den
  55. Cursor zur nächsten Datei springen. Mit `-` wird die Datei zum Commit
  56. hinzugefügt, per `cc` die Commit-Message geöffnet. Wenn der Buffer gespeichert
  57. wird, wird der Commit ausgeführt.
  58. ### [deoplete.nvim](https://github.com/Shougo/deoplete.nvim)
  59. Codevervollständigungs-Engine
  60. Dieses Plugin bietet das Gerüst, um Codevervollständigung für andere Sprachen
  61. anzubieten. Grob gesagt stellt es das Fenster, in dem die Vorschläge angezeigt
  62. werden, zur Verfügung.
  63. Mithilfe der Einstellungen in der init.vim kann per `<TAB>` zwischen den
  64. Vorschlägen gewechselt werden.
  65. ### [Neosnippet](https://github.com/Shougo/neosnippet.vim)
  66. Snippetunterstützung für Vim
  67. Mit diesem Plugin werden Snippets, also kleine Templates, die erweitert werden,
  68. unterstützt.
  69. So kann z.B. in einem Markdown-Dokument aus `linkurl` mit `<ctrl> k` `[link](http://)` werden.
  70. Mit `<ctrl> k` wird außerdem zwischen den Argumenten gewechselt.
  71. ### [easymotion](https://github.com/easymotion/vim-easymotion)
  72. Noch schnellere Motions.
  73. Einfach vor die normale Motion (z.B. `w`) zweimal `<leader>` drücken, also z.B.
  74. `<leader><leader>w`. Danach werden die nachfolgenden Worte mit Buchstaben
  75. markiert. Mit diesen Buchstaben kann sofort zu dem jeweiligen Wort gesprungen
  76. werden.
  77. ### [fzf](https://github.com/junegunn/fzf)
  78. Extrem hilfreicher fuzzy file finder, auch auf der Kommandozeile.
  79. Dieses Plugin installiert fzf, nicht nur in Vim. Proviert mal auf der
  80. Kommandozeile `<ctrl> t` aus. Oder `nvim ~/.config/nvi**` und drückt dann
  81. `<TAB>`. Es werden alle gefundenen Dateien angezeigt. Per `<ENTER>` übernehmt
  82. ihr den Vorschlag in die Kommandozeile. Setzt euch auf jeden Fall mit dem
  83. Programm auseinander, es kann die Produktivität ungemein steigern.
  84. In nvim bietet es per `<ctrl> p` die Dateisuche.
  85. ### [Asynchronous Lint Engine](https://github.com/w0rp/ale)
  86. Lintengine für diverse Linter und Sprachen
  87. ## Weitere Plugins
  88. Für fast jede Sprache und jeden Anwendungszweck gibt es reichlich Plugins,
  89. welche Codevervollständigung, erweitertes Syntaxhighlighting oder andere
  90. Funktionalitäten anbietet. Sucht einfach und lest euch in die Plugins ein.
  91. Vundle bietet die Funktion, dass Plugins nur für bestimmte Dateitypen geladen
  92. werden. JavaScript-Plugins müssen zum Beispiel nur bei JavaScript-Dateien
  93. geladen werden.
  94. Guckt dazu auch mal in meine [produktive init.vim](https://git.schneider-hosting.de/schneider/dotfiles/src/branch/master/init.vim#L42)
  95. ## Ausblick
  96. Sobald ihr die Movements verinnerlicht habt, wollt ihr sie auch in anderen
  97. Programmen anwenden.
  98. ### Firefox
  99. Mit dem Plugin
  100. [Vimium-FF](https://addons.mozilla.org/en-US/firefox/addon/vimium-ff/) braucht
  101. man selbst im Browser kaum noch die Maus. Mit `f` kann man Links auswählen, `gi`
  102. legt den Fokus auf das erste Inputfield, `O` öffnet einen neuen Tab mit Suche.
  103. ### Kommandozeile (bash/zsh)
  104. Auch auf der Kommandozeile kann man die Vim-Keybindings nutzen:
  105. Für bash in die `.bashrc` einfügen:
  106. ```bash
  107. set -o vi
  108. ```
  109. Für zsh in die `.zshrc` eintragen:
  110. ```bash
  111. bindkey -v
  112. ```
  113. ### Andere Programme
  114. Auch viele andere Programme bieten Vim-Bindings an. Sei es eine komplette
  115. Emulation per Add-On, oder simple Bewegungen per `hjkl`.
  116. So kann beispielsweise eine mächtige IDE wie IntelliJ IDEA mit den gewohnten
  117. Tastaturbewegungen benutzt werden. Gerade für umfangreichere Java-Projekte
  118. (spätestens im APP) bietet sich IntelliJ IDEA mit dem Plugin
  119. [IdeaVim](https://plugins.jetbrains.com/plugin/164-ideavim) an.
  120. ## Arbeiten auf der Kommandozeile/in der Shell
  121. Ihr werdet merken, dass ihr mit der Zeit immer mehr direkt im Terminal arbeiten
  122. werdet, nicht zuletzt weil es meist effizienter und schneller geht.
  123. Auch dafür habe ich mir viel eingerichtet um es einfacher zu machen.
  124. Ganz besonders möchte ich euch [tmux](https://github.com/tmux/tmux/wiki)
  125. ans Herz legen. Damit könnt ihr mehrere virtuelle Terminals in einem "echten"
  126. Terminal öffnen.
  127. Guckt euch ruhig mal den Tal von [Nick Nisi - vim +
  128. tmux](https://www.youtube.com/watch?v=5r6yzFEXajQ) an. In diesem seht ihr auch
  129. nocheinmal viele coole Features von Vim.
  130. Abschließend kann ich noch [zsh](http://www.zsh.org/) als Shell statt bash
  131. empfehlen. Zusammen mit [oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh)
  132. habt ihr eine Vielzahl von coolen Features, die einem insgesamt das Leben auf
  133. der Kommandozeile deutlich vereinfachen.
  134. Guckt auch ruhig mal in meine
  135. [dotfiles](https://git.schneider-hosting.de/schneider/dotfiles), dort findet ihr
  136. meine gesamte Konfiguration und könnt euch das ein oder andere abschauen.
  137. Bei weiteren Fragen könnt ihr mich gerne Kontaktieren, E-Mail-Adresse findet ihr
  138. in der Präsentation.
  139. Viel Spaß!