\documentclass[xetex]{beamer} \usepackage[ngerman]{babel} \usepackage{hyperref} \usepackage[default]{sourcesanspro} \usepackage[scale=0.9]{sourcecodepro} \usepackage{graphicx} \usepackage{keystroke} \usepackage{csquotes} \usepackage{minted} %\setmainfont{Source Serif Pro} %Information to be included in the title page: \title{How to VIM} \subtitle{Eine kurze Einführung in den Texteditor vim} \author{Marcel Schneider\\{marcel@webschneider.org}} \institute{Georg-August-Universität Göttingen} \date{Info-O-Phase 2018} \newcommand*{\kbd}[1]{\keystroke{\texttt{#1}}} \begin{document} \frame{\titlepage} \begin{frame} \frametitle{Was ist das?} \emph{V}i \emph{Im}proved \begin{itemize} \item 1991 erstmals veröffentlicht \item Erweiterung von \emph{vi} (1976), welcher auf \emph{ed} (1971) aufbaute \item Üblicherweise kein GUI, arbeitet im Terminal \item Ungewöhnliche, aber hocheffiziente Eingabemöglichkeiten \item Bietet Vielzahl an Funktionen, per Plugins noch erweiterbar \item Quelle vieler Memes \end{itemize} \end{frame} \begin{frame}{Memes} \begin{center} % https://img.devrant.io/devrant/rant/r_170390_1mBnJ.jpg \includegraphics[height=5cm]{img/vim-luck-brian.jpg} %https://www.barbarianmeetscoding.com/images/one-does-not-simply-learn-vim.jpg \includegraphics[height=5cm]{img/one-does-not-simply-learn-vim.jpg} \end{center} \end{frame} \begin{frame}{Memes} \includegraphics[width=\textwidth]{img/iamdeveloper.png} \end{frame} \begin{frame}{Vim beenden} Mit folgendem Kommando wird Vim beendet \keystroke{:} \keystroke{q} \end{frame} \begin{frame}{Modi in Vim} Es gibt im Wesentlichen drei verschiedene Modi: \begin{enumerate} \item Normal mode \item Insert mode \item Visual mode \end{enumerate} \end{frame} \begin{frame}{Normal mode} \begin{itemize} \item Standardmodus, Vim startet mit diesem \item Alle Eingaben werden als Kommandos interpretiert \item Wird per \Esc aus anderen Modi erreicht \end{itemize} \begin{center} \includegraphics[width=0.9\textwidth]{img/normal-mode.png} \end{center} \end{frame} \begin{frame}{Insert mode} \begin{itemize} \item Eingabemodus, \enquote{normales} Verhalten, wie aus anderen Editoren bekannt \item Wird im Normal mode per \kbd{i}/\kbd{I} oder \kbd{a}/\kbd{A} erreicht \end{itemize} \begin{center} \includegraphics[width=0.9\textwidth]{img/insert-mode.png} \end{center} \end{frame} \begin{frame}{Visual Mode} \begin{itemize} \item In diesem Modus kann Text selektiert werden \item Selektion kann bearbeitet/gelöscht werden, oder als Argument für ein Kommando dienen \item Funktioniert Zeilen- und Blockweise \item Aufruf per \kbd{v}/\kbd{V} \end{itemize} \begin{center} \includegraphics[width=0.8\textwidth]{img/visual-mode.png} \end{center} \end{frame} \begin{frame}[fragile]{Protipp: Esc-Taste} Tauscht die Belegung von \kbd{Esc} und \kbd{CapsLock}, z.B. mit folgendem Eintrag in \url{~/.profile} oder \url{~/.bashrc}: \\ \begin{minted}[stripall]{bash} xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape' \end{minted} % https://askubuntu.com/a/365701 Oder per dconf-editor in Unity, unter \url{org/gnome/desktop/input-sources} bei \url{xkb-options} \mintinline{bash}{'caps:swapescape'} einfügen. \end{frame} \begin{frame}{Bewegung im Normal Mode} Der Cursor wird nicht mit den Pfeiltasten bewegt, sondern: \begin{tabular}{rl} \kbd{h} & Nach links \\ \kbd{j} & Nach unten \\ \kbd{k} & Nach oben \\ \kbd{l} & Nach rechts \end{tabular} \end{frame} \begin{frame}{Herkunft der hjkl-Tasten} % http://vintagecomputer.ca/wp-content/uploads/2015/01/LSI-ADM3A-full-keyboard.jpg \begin{center} \includegraphics[width=0.9\textwidth]{img/adm3a.jpg} \end{center} \end{frame} \begin{frame}{Homerow} % https://upload.wikimedia.org/wikipedia/commons/thumb/0/0d/QWERTY-home-keys-position.svg/1280px-QWERTY-home-keys-position.svg.png \begin{center} \includegraphics[width=0.9\textwidth]{img/homerow.png} \end{center} \end{frame} \begin{frame}{Text Objects --- Bewegung} Dateiinhalt wird nicht als Abfolge einzelner Zeichen betrachtet, sondern als \enquote{Wörter}: \begin{table}[h] \begin{tabular}{rl} \kbd{w}/\kbd{W} & Anfang eines Wortes/WORTES \\ \kbd{e}/\kbd{E} & Ende eines Wortes/WORTES \\ \kbd{b}/\kbd{B} & Vorheriges Wort/WORT \end{tabular} \end{table} \end{frame} \begin{frame}{Vim-Spiel} \url{https://vim-adventures.com/} \end{frame} \begin{frame}{Text Objects --- Selektion} % cheatsheet http://i.imgur.com/YLInLlY.png Operatoren: \begin{table}[h] \centering \begin{tabular}{rl} \kbd{d} & Löschen (delete) \\ \kbd{y} & Kopieren (yank) \\ \kbd{c} & Ändern (change) \\ \kbd{v} & Markieren (visual) \end{tabular} \end{table} Modifikatoren: \begin{table}[h] \centering \begin{tabular}{rl} \kbd{a} & Alles, mit Leerzeichen (all) \\ \kbd{i} & Inhalt, ohne Leerzeichen (inner) \\ \end{tabular} \end{table} Bewegung (motion): \begin{table}[h] \centering \begin{tabular}{rl} \kbd{w}/\kbd{W} & Wort (ohne Satzzeichen)/WORT (mit Satzzeichen)\\ \kbd{s} & Satz \\ %\kdb{(} & Geklammerter Block \end{tabular} \end{table} \end{frame} \begin{frame}[fragile]{Text Objects --- Selektion --- Beispiele} \begin{itemize} \item \kbd{c}\kbd{a}\kbd{w}: change all word \item \kbd{c}\kbd{a}\kbd{W}: change all WORD \item \kbd{d}\kbd{i}\kbd{\}}: delete in \verb|{}| \item \kbd{v}\kbd{a}\kbd{)}: visual all \verb|()| \item \kbd{3}\kbd{d}\kbd{a}\kbd{w}: 3 $\times$ delete all word \end{itemize} \end{frame} \begin{frame}{Wiederholung von Kommandos} Per \kbd{.} kann das letzte Kommando wiederholt werden \end{frame} \begin{frame}{Anpassung/Einstellungen} \begin{itemize} \item Vim nutzt \url{~/.vimrc} \\ \item Neovim nutzt \url{~/.config/nvim/init.vim} \item Beide nutzen selbe, simple Syntax \end{itemize} Unter \url{https://git.schneider-hosting.de/uni/vim-workshop} findet ihr eine Beispieldatei für den Anfang \end{frame} \end{document}