234 lines
11 KiB
TeX
234 lines
11 KiB
TeX
%! TeX program = lualatex
|
|
\documentclass[]{beamer}
|
|
|
|
\setbeamercolor{title}{fg=black}
|
|
\setbeamercolor{frametitle}{fg=black}
|
|
\setbeamercolor{caption}{fg=black}
|
|
\setbeamercolor{caption name}{fg=black}
|
|
|
|
\setbeamertemplate{navigation symbols}{}
|
|
\setbeamertemplate{itemize item}{\color{black}$\bullet$}
|
|
|
|
% packages
|
|
\usepackage{fontspec}
|
|
\setmainfont{EB Garamond}
|
|
\usefonttheme{serif}
|
|
\setmonofont[Scale=MatchLowercase]{Deja Vu Sans Mono}
|
|
|
|
\usepackage{microtype} % Slightly tweak font spacing for aesthetics
|
|
\usepackage[english]{babel} % Language hyphenation and typographical rules
|
|
|
|
\usepackage{minted}
|
|
\usemintedstyle{algol_nu}
|
|
\usepackage{xcolor}
|
|
|
|
\usepackage{pgfplots}
|
|
\pgfplotsset{width=\textwidth,compat=1.9}
|
|
|
|
\usepackage{caption}
|
|
\newenvironment{code}{\captionsetup{type=listing, skip=0pt}}{}
|
|
|
|
\usepackage[yyyymmdd]{datetime}
|
|
\renewcommand{\dateseparator}{--}
|
|
|
|
\usepackage{titlesec}
|
|
|
|
\author{Andrew Hayes (ID: 21321503)}
|
|
\title{Why Vim is My Favourite Text Editor}
|
|
\subtitle{CT3112 Professional Skills: Assignment 01}
|
|
\institute{University of Galway}
|
|
|
|
\begin{document}
|
|
|
|
\titlegraphic{\includegraphics[width=3cm]{./images/vim_logo.png}}
|
|
\frame{\titlepage}
|
|
|
|
\begin{frame}{Introduction}
|
|
By the end of this presentation, I intend for you to have gained an understanding of:
|
|
\begin{itemize}
|
|
\item What Vim is and how it works.
|
|
\item The benefits of Vim.
|
|
\item The drawbacks of Vim.
|
|
\item Why I prefer Vim for all my text-editing work.
|
|
\item Whether or not Vim might be the right text editor for you.
|
|
\item What alternatives there are to Vim.
|
|
\item How you can get started with Vim.
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\begin{frame}{What is Vim?}
|
|
\begin{itemize}
|
|
\item \textbf{Vim} is terminal-based, modal text editor released in 1991, designed to be minimal \& fast to
|
|
use.
|
|
\item It has a number of fast, mnemonic keybindings that make typical text-editing tasks much faster.
|
|
\item A \textbf{terminal-based} text editor is a text-only editor that is ran from the command line or
|
|
terminal.
|
|
\item A \textbf{modal} text editor is one in which there are a number of different \textbf{modes} that the
|
|
editor can be in at any one time.
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\begin{frame}
|
|
\begin{figure}[h]
|
|
\includegraphics[width=\textwidth]{./images/screenshot.png}
|
|
\caption{A Screenshot of Vim Being Used to Write this Presentation (in {\LaTeX})}
|
|
\end{figure}
|
|
\end{frame}
|
|
|
|
\begin{frame}{What is a Terminal?}
|
|
\begin{itemize}
|
|
\item A \textbf{terminal} is a text-based interface for a computer, originating from when computers did not
|
|
have any graphics.
|
|
\item It is typically interacted with via a \textbf{command line}, where text commands are written to start
|
|
programs.
|
|
\item To start Vim from the command line, simply type \mintinline{bash}{vim file_name.txt}
|
|
\end{itemize}
|
|
|
|
\begin{figure}[h]
|
|
\includegraphics[width=0.4\textwidth]{./images/terminal.png}
|
|
\caption{A Computer Terminal from 1978}
|
|
\end{figure}
|
|
\end{frame}
|
|
|
|
\begin{frame}{What are the Vim Modes?}
|
|
\begin{itemize}
|
|
\item \textbf{Normal mode} (\texttt{ESC}) is for the navigation \& manipulation of the text in the file
|
|
being edited, via the shortcut keybindings.
|
|
It is the default mode of the program.
|
|
\item \textbf{Insert mode} (\texttt{i}) is for inserting new text. This mode is similar to the
|
|
default to the default behaviour of a more conventional text editor such as Notepad: text can be typed
|
|
or removed with the backspace key, and navigation or selection can be done with the mouse or arrow
|
|
keys.
|
|
\item \textbf{Visual mode} (\texttt{v}) is for the selection of text blocks for manipulation, with the
|
|
selected text being highlighted, similar to selecting text with the mouse in other text editors.
|
|
Visual mode has two sub-modes: \textbf{visual block} (\texttt{CTRL+v}) \& \textbf{visual line}
|
|
(\texttt{V}), in which text can be selected either vertically by columns or horizontally by line.
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\begin{frame}{What are the Vim keybindings?}
|
|
\begin{itemize}
|
|
\item Too many to list here!
|
|
\item Navigation in normal mode can be done with the \texttt{hjkl} (direction) keys, which correspond to
|
|
the left, down, up, \& right arrow keys respectively, allowing quick navigation without removing your
|
|
fingers from the home row.
|
|
\item These direction keys can be combined with numbers to repeat them a certain number of times, e.g.:
|
|
\texttt{5j} moves the cursor down 5 lines.
|
|
\item There are also a number of other direction keys: \texttt{w} to go forward a word of text, \texttt{b} to
|
|
go back a word of text, \texttt{gg} to go to the start of the file, \texttt{G} to go to the end of the
|
|
file.
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\begin{frame}{What are the Vim keybindings?}
|
|
\begin{itemize}
|
|
\item Vim keybindings typically take the form \textbf{action + direction}, i.e. the first key pressed
|
|
indicates the action to be performed and the second key pressed indicates the direction in which to do
|
|
it.
|
|
\item The most common action keys are \texttt{d} to delete text, \texttt{c} to change text, \texttt{y} to copy
|
|
(or \textbf{yank}) text, and \texttt{p} to paste text.
|
|
\item The action keys are combined with direction keys, e.g. \texttt{dG} deletes all the text from the cursor
|
|
to the end of the file, \texttt{y5w} copies the next 5 words to the clipboard, etc.
|
|
\item If you're trying to get the hang of Vim keybindings, the most important one for you to know is
|
|
\texttt{u} to undo the last action you performed, in case you made a mistake!
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\begin{frame}{What are the benefits of Vim?}
|
|
\begin{itemize}
|
|
\item Lightweight \& minimal.
|
|
\item Speedy text editing with countless keybindings \& shortcuts.
|
|
\item Easy integration with other command-line programs.
|
|
\item Endlessly extensible through its configuration file (found at \mintinline{shell}{~/.vimrc})
|
|
\item Lots of community-developed plugins to extend its functionality even further.
|
|
\item It's very easy to quickly record a \textbf{macro} to perform an option repeatedly.
|
|
\item Standard on most modern UNIX-like systems; if you use a Linux-based system or MacOS, you likely already
|
|
have it installed!
|
|
\item Most IDEs have a Vim mode, allowing you to use the Vim keybindings in many other programs too.
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\begin{frame}{What are the drawbacks of Vim?}
|
|
\begin{itemize}
|
|
\item Steep learning curve: there are so many keybindings that almost nobody knows them all.
|
|
\item No graphics support: because it's terminal-based, there is no way to display an image inside Vim.
|
|
\item Only works for plaintext editing: can't be used to edit Word documents or PowerPoint presentations.
|
|
\item Very minimal by default: it requires a lot of configuration to bring it to feature parity with a modern
|
|
IDE.
|
|
\item Requires some knowledge of the terminal: not suited for people who have no technical background.
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Why I prefer Vim}
|
|
\begin{itemize}
|
|
\item I spend most of my time on my computer editing plaintext code files, so the speed gained from using the
|
|
Vim keybindings is invaluable.
|
|
\item As a Linux user and programmer, I spend a lot of time in the terminal, so having a terminal-based editor
|
|
is very convenient for me.
|
|
\item Often for internship work, I will have to remotely connect to a server to edit its configurations and
|
|
the only text editor available is Vim.
|
|
\item I enjoy the fine-grained control over the program's behaviour that the Vim configuration file affords
|
|
me.
|
|
\item I think it looks cooler than other text editors!
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Is Vim right for you?}
|
|
\begin{itemize}
|
|
\item Vim is right for you if spend a lot of time editing plaintext files, using the terminal, or remotely
|
|
accessing servers and you don't mind its steep learning curve.
|
|
If you want fine-grained control over the behaviour of your text editor, and the ability to endlessly
|
|
extend it, then Vim is a good choice.
|
|
It helps a lot if you have a technical background, but anyone can learn Vim!
|
|
\item Vim is not right for you if you rely heavily on graphical editors, e.g. Microsoft Word or PowerPoint, if
|
|
you don't want to spend time learning the keybindings, or if you want a text editor that is feature-rich
|
|
out of the box without any customisation.
|
|
If you rarely use the terminal in your day-to-day life, then a terminal-based text editor likely is not
|
|
suitable for your workflow.
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\begin{frame}{What alternatives are there to Vim?}
|
|
Similar text editors to Vim include:
|
|
\begin{itemize}
|
|
\item Emacs
|
|
\item Vi
|
|
\item Helix
|
|
\item Kakoune
|
|
\end{itemize}
|
|
|
|
More conventional text editors include:
|
|
\begin{itemize}
|
|
\item Notepad
|
|
\item Atom
|
|
\item VSCode
|
|
\item Fully-featured IDEs such as Eclipse or Intellij.
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\begin{frame}{How can I get started with Vim?}
|
|
\begin{itemize}
|
|
\item Download \& install Vim from \url{https://www.vim.org/download.php}
|
|
\item Open a terminal emulator / command prompt on your computer.
|
|
\item Enter \texttt{vim file\_name.txt}, substituting \texttt{file\_name.txt} for the path to the file you
|
|
want to edit / create, and start editing!
|
|
\item To get a more in-depth tutorial of how to use Vim, run the command \texttt{vimtutor} from your command
|
|
prompt to start the tutorial.
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Summary}
|
|
By now, I hope that you have gained an understanding of:
|
|
\begin{itemize}
|
|
\item What Vim is and how it works.
|
|
\item The benefits of Vim.
|
|
\item The drawbacks of Vim.
|
|
\item Why I prefer Vim for all my text-editing work.
|
|
\item Whether or not Vim might be the right text editor for you.
|
|
\item What alternatives there are to Vim.
|
|
\item How you can get started with Vim.
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\end{document}
|