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

\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}