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.

233 lines
7.0 KiB

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