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.

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