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

\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\\{\href{mailto:marcel.schneider@stud.uni-goettingen.de?subject=Frage
zu Vim}{marcel.schneider@stud.uni-goettigen.de}\\\url{https://t.me/teleschneider}}}
\institute{Georg-August-Universität Göttingen}
\date{Info-O-Phase 2019}
\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 Kenntnisse in der Shell vorteilhaft
\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}
(Oder \Esc{}\kbd{:}\kbd{q}\kbd{!})
\end{frame}
\begin{frame}{Weitere Wichtige Kommandos}
\begin{table}[h]
\centering
\begin{tabular}{rl}
\kbd{:}\kbd{w} & Speichern \\
\kbd{:}\kbd{q}\kbd{!} & Schließen ohne speichern \\
\kbd{:}\kbd{w}\kbd{q} & Speichern und schließen
\end{tabular}
\end{table}
\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}