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