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.

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