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.

231 lines
7.0 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. \documentclass[xetex]{beamer}
  2. \usepackage[ngerman]{babel}
  3. \usepackage{hyperref}
  4. \usepackage[default]{sourcesanspro}
  5. \usepackage[scale=0.9]{sourcecodepro}
  6. \usepackage{graphicx}
  7. \usepackage{keystroke}
  8. \usepackage{csquotes}
  9. \usepackage{minted}
  10. %\setmainfont{Source Serif Pro}
  11. %Information to be included in the title page:
  12. \title{How to VIM}
  13. \subtitle{Eine kurze Einführung in den Texteditor vim}
  14. \author{Marcel
  15. Schneider\\{\href{mailto:marcel.schneider@stud.uni-goettingen.de?subject=Frage
  16. zu Vim}{marcel.schneider@stud.uni-goettigen.de}\\\url{https://t.me/teleschneider}}}
  17. \institute{Georg-August-Universität Göttingen}
  18. \date{Info-O-Phase 2018}
  19. \newcommand*{\kbd}[1]{\keystroke{\texttt{#1}}}
  20. \begin{document}
  21. \frame{\titlepage}
  22. \begin{frame}
  23. \frametitle{Was ist das?}
  24. \emph{V}i \emph{Im}proved
  25. \begin{itemize}
  26. \item 1991 erstmals veröffentlicht
  27. \item Erweiterung von \emph{vi} (1976), welcher auf \emph{ed} (1971)
  28. aufbaute
  29. \item Üblicherweise kein GUI, arbeitet im Terminal
  30. \item Kenntnisse in der Shell vorteilhaft
  31. \item Ungewöhnliche, aber hocheffiziente Eingabemöglichkeiten
  32. \item Bietet Vielzahl an Funktionen, per Plugins noch erweiterbar
  33. \item Quelle vieler Memes
  34. \end{itemize}
  35. \end{frame}
  36. \begin{frame}{Memes}
  37. \begin{center}
  38. % https://img.devrant.io/devrant/rant/r_170390_1mBnJ.jpg
  39. \includegraphics[height=5cm]{img/vim-luck-brian.jpg}
  40. %https://www.barbarianmeetscoding.com/images/one-does-not-simply-learn-vim.jpg
  41. \includegraphics[height=5cm]{img/one-does-not-simply-learn-vim.jpg}
  42. \end{center}
  43. \end{frame}
  44. \begin{frame}{Memes}
  45. \includegraphics[width=\textwidth]{img/iamdeveloper.png}
  46. \end{frame}
  47. \begin{frame}{Vim beenden}
  48. Mit folgendem Kommando wird Vim beendet
  49. \keystroke{:} \keystroke{q}
  50. \end{frame}
  51. \begin{frame}{Weitere Wichtige Kommandos}
  52. \begin{table}[h]
  53. \centering
  54. \begin{tabular}{rl}
  55. \kbd{:}\kbd{w} & Speichern \\
  56. \kbd{:}\kbd{q}\kbd{!} & Schließen ohne speichern \\
  57. \kbd{:}\kbd{w}\kbd{q} & Speichern und schließen
  58. \end{tabular}
  59. \end{table}
  60. \end{frame}
  61. \begin{frame}{Modi in Vim}
  62. Es gibt im Wesentlichen drei verschiedene Modi:
  63. \begin{enumerate}
  64. \item Normal mode
  65. \item Insert mode
  66. \item Visual mode
  67. \end{enumerate}
  68. \end{frame}
  69. \begin{frame}{Normal mode}
  70. \begin{itemize}
  71. \item Standardmodus, Vim startet mit diesem
  72. \item Alle Eingaben werden als Kommandos interpretiert
  73. \item Wird per \Esc aus anderen Modi erreicht
  74. \end{itemize}
  75. \begin{center}
  76. \includegraphics[width=0.9\textwidth]{img/normal-mode.png}
  77. \end{center}
  78. \end{frame}
  79. \begin{frame}{Insert mode}
  80. \begin{itemize}
  81. \item Eingabemodus, \enquote{normales} Verhalten, wie aus anderen
  82. Editoren bekannt
  83. \item Wird im Normal mode per \kbd{i}/\kbd{I} oder
  84. \kbd{a}/\kbd{A} erreicht
  85. \end{itemize}
  86. \begin{center}
  87. \includegraphics[width=0.9\textwidth]{img/insert-mode.png}
  88. \end{center}
  89. \end{frame}
  90. \begin{frame}{Visual Mode}
  91. \begin{itemize}
  92. \item In diesem Modus kann Text selektiert werden
  93. \item Selektion kann bearbeitet/gelöscht werden, oder als Argument für
  94. ein Kommando dienen
  95. \item Funktioniert Zeilen- und Blockweise
  96. \item Aufruf per \kbd{v}/\kbd{V}
  97. \end{itemize}
  98. \begin{center}
  99. \includegraphics[width=0.8\textwidth]{img/visual-mode.png}
  100. \end{center}
  101. \end{frame}
  102. \begin{frame}[fragile]{Protipp: Esc-Taste}
  103. Tauscht die Belegung von \kbd{Esc} und \kbd{CapsLock}, z.B. mit folgendem
  104. Eintrag in \url{~/.profile} oder \url{~/.bashrc}: \\
  105. \begin{minted}[stripall]{bash}
  106. xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'
  107. \end{minted}
  108. % https://askubuntu.com/a/365701
  109. Oder per dconf-editor in Unity, unter \url{org/gnome/desktop/input-sources}
  110. bei \url{xkb-options} \mintinline{bash}{'caps:swapescape'} einfügen.
  111. \end{frame}
  112. \begin{frame}{Bewegung im Normal Mode}
  113. Der Cursor wird nicht mit den Pfeiltasten bewegt, sondern:
  114. \begin{tabular}{rl}
  115. \kbd{h} & Nach links \\
  116. \kbd{j} & Nach unten \\
  117. \kbd{k} & Nach oben \\
  118. \kbd{l} & Nach rechts
  119. \end{tabular}
  120. \end{frame}
  121. \begin{frame}{Herkunft der hjkl-Tasten}
  122. % http://vintagecomputer.ca/wp-content/uploads/2015/01/LSI-ADM3A-full-keyboard.jpg
  123. \begin{center}
  124. \includegraphics[width=0.9\textwidth]{img/adm3a.jpg}
  125. \end{center}
  126. \end{frame}
  127. \begin{frame}{Homerow}
  128. % https://upload.wikimedia.org/wikipedia/commons/thumb/0/0d/QWERTY-home-keys-position.svg/1280px-QWERTY-home-keys-position.svg.png
  129. \begin{center}
  130. \includegraphics[width=0.9\textwidth]{img/homerow.png}
  131. \end{center}
  132. \end{frame}
  133. \begin{frame}{Text Objects --- Bewegung}
  134. Dateiinhalt wird nicht als Abfolge einzelner Zeichen betrachtet, sondern
  135. als \enquote{Wörter}:
  136. \begin{table}[h]
  137. \begin{tabular}{rl}
  138. \kbd{w}/\kbd{W} & Anfang eines Wortes/WORTES \\
  139. \kbd{e}/\kbd{E} & Ende eines Wortes/WORTES \\
  140. \kbd{b}/\kbd{B} & Vorheriges Wort/WORT
  141. \end{tabular}
  142. \end{table}
  143. \end{frame}
  144. \begin{frame}{Vim-Spiel}
  145. \url{https://vim-adventures.com/}
  146. \end{frame}
  147. \begin{frame}{Text Objects --- Selektion}
  148. % cheatsheet http://i.imgur.com/YLInLlY.png
  149. Operatoren:
  150. \begin{table}[h]
  151. \centering
  152. \begin{tabular}{rl}
  153. \kbd{d} & Löschen (delete) \\
  154. \kbd{y} & Kopieren (yank) \\
  155. \kbd{c} & Ändern (change) \\
  156. \kbd{v} & Markieren (visual)
  157. \end{tabular}
  158. \end{table}
  159. Modifikatoren:
  160. \begin{table}[h]
  161. \centering
  162. \begin{tabular}{rl}
  163. \kbd{a} & Alles, mit Leerzeichen (all) \\
  164. \kbd{i} & Inhalt, ohne Leerzeichen (inner) \\
  165. \end{tabular}
  166. \end{table}
  167. Bewegung (motion):
  168. \begin{table}[h]
  169. \centering
  170. \begin{tabular}{rl}
  171. \kbd{w}/\kbd{W} & Wort (ohne Satzzeichen)/WORT (mit Satzzeichen)\\
  172. \kbd{s} & Satz \\
  173. %\kdb{(} & Geklammerter Block
  174. \end{tabular}
  175. \end{table}
  176. \end{frame}
  177. \begin{frame}[fragile]{Text Objects --- Selektion --- Beispiele}
  178. \begin{itemize}
  179. \item \kbd{c}\kbd{a}\kbd{w}: change all word
  180. \item \kbd{c}\kbd{a}\kbd{W}: change all WORD
  181. \item \kbd{d}\kbd{i}\kbd{\}}: delete in \verb|{}|
  182. \item \kbd{v}\kbd{a}\kbd{)}: visual all \verb|()|
  183. \item \kbd{3}\kbd{d}\kbd{a}\kbd{w}: 3 $\times$ delete all word
  184. \end{itemize}
  185. \end{frame}
  186. \begin{frame}{Wiederholung von Kommandos}
  187. Per \kbd{.} kann das letzte Kommando wiederholt werden
  188. \end{frame}
  189. \begin{frame}{Anpassung/Einstellungen}
  190. \begin{itemize}
  191. \item Vim nutzt \url{~/.vimrc} \\
  192. \item Neovim nutzt \url{~/.config/nvim/init.vim}
  193. \item Beide nutzen selbe, simple Syntax
  194. \end{itemize}
  195. Unter \url{https://git.schneider-hosting.de/uni/vim-workshop} findet ihr
  196. eine Beispieldatei für den Anfang
  197. \end{frame}
  198. \end{document}