\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{hosailei} \pdfinfo{ /Title (vim.pdf) /Creator (Cheatography) /Author (hosailei) /Subject (VIM Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{073642} \definecolor{LightBackground}{HTML}{F7F8F9} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{VIM Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{hosailei} via \textcolor{DarkBackground}{\uline{cheatography.com/121536/cs/22309/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}hosailei \\ \uline{cheatography.com/hosailei} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 23rd April, 2020.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{tabularx}{17.67cm}{x{4.2175 cm} x{4.0488 cm} x{8.6037 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{Editor Config}} \tn % Row 0 \SetRowColor{LightBackground} `F2` & \seqsplit{`pastetoggle`} & toggle paste mode \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} `{[}leader{]} ;` & `:set list!` & toggle whitespace characters \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} `{[}leader{]} nu` & `:set nu!` & toggle line numbers \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} `{[}leader{]} rnu` & `:set rnu!` & toggle rel. line numbers \tn % Row Count 8 (+ 2) % Row 4 \SetRowColor{LightBackground} `{[}leader{]} h` & `:noh` & disable hl till next search \tn % Row Count 10 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{6.748 cm} p{1.687 cm} x{8.435 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{Navigation}} \tn % Row 0 \SetRowColor{LightBackground} `{[}ctrl{]}\{h,j,k,l\}` & & move around buffers \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} `\{ | \}` & & next | previous blank line \tn % Row Count 4 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{4.7236 cm} x{4.3862 cm} x{7.7602 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{Buffers}} \tn % Row 0 \SetRowColor{LightBackground} `gb` & `:bn` & next buffer \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} `gB` & `:bp` & previous buffer \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} `{[}leader{]} bd` & `:bd` & close buffer \tn % Row Count 4 (+ 2) % Row 3 \SetRowColor{white} `{[}leader{]} df` & `:w !diff \%` & diff since last write \tn % Row Count 6 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{5.061 cm} p{2.5305 cm} x{9.2785 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{Insert Mode Shortcuts}} \tn % Row 0 \SetRowColor{LightBackground} `{[}ctrl{]} a` & `0` & to line beginning \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} `{[}ctrl{]} e` & `\$` & to line end \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} `{[}ctrl{]} u` & `ddi` & change entire line \tn % Row Count 3 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{7.5988 cm} x{9.6712 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{lion.vim}} \tn % Row 0 \SetRowColor{LightBackground} `gl|gL {[}motion{]}{[}char{]}` & spaces left | right to align \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} `glip=` & align '=' till blank line \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} `gLi(,` & align ',' within ( \tn % Row Count 5 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{10.8801 cm} x{6.3899 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{vim-surround}} \tn % Row 0 \SetRowColor{LightBackground} `cs {[}target{]} {[}replacement{]}` & replace surround \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} `ds {[}target{]}` & remove surround \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} `ysiw {[}surround{]}` & surround word \tn % Row Count 5 (+ 1) % Row 3 \SetRowColor{white} `yss {[}surround{]}` & surround line \tn % Row Count 6 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{17.67cm}}{{\bf{Tags}} \newline use `\textless{}tag\textgreater{}` e.g. `\textless{}div\textgreater{}` for replacement \newline use `t for target`} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{5.181 cm} x{12.089 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{targets.vim}} \tn % Row 0 \SetRowColor{LightBackground} `ci {[}target{]}` & change in target from cursor \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} `cI {[}target{]}` & change inside target \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} `ca {[}target{]}` & change include target \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} `cA {[}target{]}` & change around outside of target \tn % Row Count 8 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{17.67cm}}{{\bf{ Pairs: }} `{[} {]}, \{ \}, ( ), \textless{} \textgreater{}, t for tags e.g \textless{}div\textgreater{}` \newline {\bf{ Quotes: }} `' " \textbackslash{}`` \newline {\bf{ Separator: }} `, . ; : + - = \textasciitilde{} \_ * \# / | \textbackslash{} \& \$` \newline {\bf{ Arguments: }} `a` (text surrounded by braces and commas)} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{7.0807 cm} x{10.1893 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{vim-commentary}} \tn % Row 0 \SetRowColor{LightBackground} `gc{[}motion{]}` & comment out using motion \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} `gcc` & comment out a line \tn % Row Count 3 (+ 1) % Row 2 \SetRowColor{LightBackground} `gcap` & comment out paragraph \tn % Row Count 4 (+ 1) % Row 3 \SetRowColor{white} `:7,17Commentary` & comment out a range \tn % Row Count 6 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{4.5549 cm} x{2.6992 cm} x{9.6159 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{Replace}} \tn % Row 0 \SetRowColor{LightBackground} `{[}leader{]}\textbackslash{}w` & & replace word under cursor \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} `{[}leader{]}\textbackslash{}h` & \seqsplit{`:\%s//`} & replace last search \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} `{[}leader{]}\textbackslash{}r` & \seqsplit{`:\%s/`} & replace \tn % Row Count 6 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{3.5427 cm} x{2.8679 cm} x{10.4594 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{Ferret}} \tn % Row 0 \SetRowColor{LightBackground} `{[}ctrl{]} q` & \seqsplit{`:cclose`} & close quick fix \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} `{[}ctrl{]} a` & \seqsplit{`:Ack`} & find in CWD \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} `{[}ctrl{]} af` & \seqsplit{`:Back`} & find in buffer \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} `{[}ctrl{]} s` & \seqsplit{`:Ack`} & find word under cursor in CWD \tn % Row Count 8 (+ 2) % Row 4 \SetRowColor{LightBackground} `{[}ctrl{]} sf` & \seqsplit{`:Back`} & find word under cursor in buffer \tn % Row Count 10 (+ 2) % Row 5 \SetRowColor{white} `{[}ctrl{]} r` & & replace results in quick fix \tn % Row Count 12 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{3.2053 cm} x{5.3984 cm} x{8.2663 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{NerdTree}} \tn % Row 0 \SetRowColor{LightBackground} `{[}ctrl{]} f` & \seqsplit{`:NERDTreeToggle`} & toggles NERDTree \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} `{[}ctrl{]} t` & \seqsplit{`:NERDTreeFocus`} & moves focus to NERDTree \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} `go` & & open (focus in NerdTree) \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} `t | T` & & open {[}silently{]} in new tab \tn % Row Count 8 (+ 2) % Row 4 \SetRowColor{LightBackground} `i | gi` & & open {[}preview{]} h-split \tn % Row Count 10 (+ 2) % Row 5 \SetRowColor{white} `s | gs` & & open {[}preview{]} v-split \tn % Row Count 12 (+ 2) % Row 6 \SetRowColor{LightBackground} `cd` & & move CWD to folder \tn % Row Count 13 (+ 1) % Row 7 \SetRowColor{white} `CD` & & move root to CWD folder \tn % Row Count 15 (+ 2) % Row 8 \SetRowColor{LightBackground} `r | R` & & refresh folder | root \tn % Row Count 17 (+ 2) % Row 9 \SetRowColor{white} `I` & & toggle hidden files \tn % Row Count 18 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{4.5549 cm} x{4.5549 cm} x{7.7602 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{Vifm}} \tn % Row 0 \SetRowColor{LightBackground} `{[}leader{]} f` & `:Vifm` & open buffer using vifm \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} `{[}leader{]} fv` & \seqsplit{`:VsplitVifm`} & open split using vifm \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} `{[}leader{]} ft` & \seqsplit{`:TabVifm`} & open tab using vifm \tn % Row Count 6 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{5.5671 cm} x{3.2053 cm} x{8.0976 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{CtrlP}} \tn % Row 0 \SetRowColor{LightBackground} `{[}ctrl{]} n` & \seqsplit{`:CtrlP`} & run CtrlP \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} `{[}ctrl{]} f | b` & & next | previous mode \tn % Row Count 4 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{4.7236 cm} x{4.3862 cm} x{7.7602 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{ALE Linter}} \tn % Row 0 \SetRowColor{LightBackground} `{[}leader{]} lf` & `:ALEFix` & auto-fix linter issues \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} `{[}leader{]} l` & \seqsplit{`:ALEToggle`} & toggle ALE Gutter \tn % Row Count 4 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{4.0488 cm} x{6.0732 cm} x{6.748 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{vim-gitgutter}} \tn % Row 0 \SetRowColor{LightBackground} `{[}leader{]}gg` & \seqsplit{`:GitGutterToggle`} & toggle the gutter \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} `{]}c | {[}c` & & next | previous hunk \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} `{[}leader{]}hs` & & stage hunk \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} `{[}leader{]}hu` & & undo hunk \tn % Row Count 8 (+ 2) % Row 4 \SetRowColor{LightBackground} `{[}leader{]}hp` & & preview hunk \tn % Row Count 10 (+ 2) % Row 5 \SetRowColor{white} `{[}leader{]}hP` & & close preview \tn % Row Count 12 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{4.2175 cm} x{4.2175 cm} x{8.435 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{fugitive}} \tn % Row 0 \SetRowColor{LightBackground} :G & :Git & git alias \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} {[}leader{]}gd & :Git diff & open git diff in file \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} {[}leader{]}gds & \seqsplit{:Gdiffsplit} & open diff side-by-side \tn % Row Count 5 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \end{document}