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.

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