add Pandoc to create PDF cheat sheet

This commit is contained in:
Oliver Ladner 2024-03-05 09:32:10 +01:00
commit 73eea67048
6 changed files with 327 additions and 25 deletions

View file

@ -1,7 +1,5 @@
# Neovim command and keybind cheat sheet
Some of these are plain Vim commands, others are specific to Neovim.
## BASICS
- `Space` leader key
@ -19,8 +17,7 @@ Some of these are plain Vim commands, others are specific to Neovim.
## Tabs
- `Ctrl`+`t` open a file in e.g. a Telescope finder in a new tab
- `gt` or `gT` switch between open tabs (forward/reverse direction)
- `gt` or `gT` switch forward/reverse between tabs
## Windows/splits
@ -39,39 +36,34 @@ Some of these are plain Vim commands, others are specific to Neovim.
- `:bn` go to next buffer
- `:bp` go to previous buffer
## Code
## Text
- `w` move to **start of next word** (ignores punctuation due to remap)
- `e` move to **end of next word** (ignores punctuation due to remap)
- `b` move to **start of previous word** (ignores punctuation due to remap)
- `Ctrl`+`0` start of line
- `Ctrl`+`$` end of line
- `Ctrl`+`d` scroll **down** 1/2 page while keeping the cursor centered
- `Ctrl`+`u` scroll **up** 1/2 page while keeping the cursor centered
- `Ctrl`+`d` scroll down 1/2 page while keeping the cursor centered
- `Ctrl`+`u` scroll up 1/2 page while keeping the cursor centered
- `Ctrl`+`o` jump to location you were before (e.g. after using `gg`)
- `Ctrl`+`i` jump back to location you were before (after using `Ctrl`+`o`)
- `f<char>` jump forward to `<char>`
- `F<char>` jump backwards to `<char>`
- `t<char>` jump forward just before `<char>`
- `T<char>` jump backwards just before `<char>`
- `;` jump to next occurence of <char> (same line only)
- `,` jump to previous occurence of <char> (same line only)
- `;` jump to next occurence of <char> on same line
- `,` jump to previous occurence of <char> onx same line
## LSP
## LSP, Code & Diagnostics
- `Ctrl`+`n/p` scroll down/up through LSP suggestions
- `Ctrl`+`l` accept selected suggestion
- `gd` go to definition
## Diagnostics
- `gd` go to definition
- `leader`+`qq` toggle trouble.nvim quickfix list
- `gr` show references of function
- `leader`+`qq` toggle `trouble.nvim` quickfix list
- `leader`+`da` go to next diagnostic (any severity)
- `leader`+`dw` go to next diagnostic (warning severity)
- `leader`+`de` go to next diagnostic (error severity)
## Telescope windows
## Telescope
- `↓` or `Ctrl`+`n` scroll down (**n**ext) file list
- `↑` or `Ctrl`+`p` scroll up (**p**revious) file list
@ -84,26 +76,35 @@ Some of these are plain Vim commands, others are specific to Neovim.
- `Ctrl`+`q` send all items to quickfix list
- `Alt`+`q` send selected items to quickfix list
## Oil
- `Ctrl`+`d` bottom of file list
- `Ctrl`+`u` top of file list
- `Ctrl`+`p` preview file
- `Ctrl`+`v` open file in **vertical** split
- `Ctrl`+`x` open file in **horizontal** split
- `Ctrl`+`t` open file in new tab
## EDITING
### Code editing
- `leader`+`i` re-indent whole file
- `leader`+`o` re-format whole file or visual with `conform.nvim`
- `leader`+`o` re-format whole file or visual w/ `conform.nvim`
- `i` insert mode at cursor position
- `I` insert mode at the **beginning of the line**
- `a` insert mode **one character after the current** one
- `A` insert mode at the **end of the line**
- `I` insert mode at **beginning of line**
- `a` insert mode **after the current char**
- `A` insert mode at **end of line**
- `o` insert mode a line **below** the cursor
- `O` insert mode a line **above** the cursor
- `s` delete character and replace (substitute) it
- `cw` replace the current word
- `cc` replace whole line
- `C` replace to the end of the line
- `yy` copy (yank) the current line
- `yy` copy the current line
- `p` paste yanked line below
- `P` paste yanked line above
- `"3p` redo (put) e.g. your third last delete [source](https://www.reddit.com/r/neovim/comments/18ri1bm/its_been_like_10_years_and_i_just_learned_that/)
## SELECTING
### Visual mode
@ -111,6 +112,11 @@ Some of these are plain Vim commands, others are specific to Neovim.
- `V` line mode
- `Ctrl`+`v` block mode
### Code selection
- `leader`+`Space` context-sensitive text selection w/ `treesitter`
- `Backspace` reduce context-sensitive selection
## SEARCH/OPEN
- `leader`+`fg` search text in files (also searches for text under cursor)

BIN
CHEATSHEET.pdf Normal file

Binary file not shown.

BIN
logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

7
mkcheatsheet.sh Executable file
View file

@ -0,0 +1,7 @@
#!/usr/bin/env bash
# Renders MARKDOWN.md to PDF with Pandoc
# Packages required:
# - pandoc
# - basictex (brew install --cask basictex)
pandoc --standalone --from=markdown+yaml_metadata_block --template=tmpl.tex \
--metadata-file=vars.yml --pdf-engine=xelatex -o CHEATSHEET.pdf CHEATSHEET.md

263
tmpl.tex Normal file
View file

@ -0,0 +1,263 @@
\PassOptionsToPackage{unicode=true}{hyperref} % options for packages loaded elsewhere
\PassOptionsToPackage{hyphens}{url}
$if(colorlinks)$
\PassOptionsToPackage{dvipsnames,svgnames*,x11names*}{xcolor}
$endif$
%
\documentclass[$if(fontsize)$$fontsize$,$endif$$if(lang)$$babel-lang$,$endif$$if(papersize)$$papersize$,$endif$$for(classoption)$$classoption$$sep$,$endfor$]{$documentclass$}
$if(fontfamily)$
\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$}
$else$
\usepackage{lmodern}
$endif$
$if(linestretch)$
\usepackage{setspace}
\setstretch{$linestretch$}
$endif$
\usepackage{amssymb,amsmath}
\usepackage{ifxetex,ifluatex}
\usepackage{fixltx2e} % provides \textsubscript
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{textcomp} % provides euro and other symbols
\else % if luatex or xelatex
$if(mathspec)$
\ifxetex
\usepackage{mathspec}
\else
\usepackage{unicode-math}
\fi
$else$
\usepackage{unicode-math}
$endif$
\defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}
$for(fontfamilies)$
\newfontfamily{$fontfamilies.name$}[$fontfamilies.options$]{$fontfamilies.font$}
$endfor$
$if(mainfont)$
\setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$}
$endif$
$if(sansfont)$
\setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$}
$endif$
$if(monofont)$
\setmonofont[Mapping=tex-ansi$if(monofontoptions)$,$for(monofontoptions)$$monofontoptions$$sep$,$endfor$$endif$]{$monofont$}
$endif$
$if(mathfont)$
$if(mathspec)$
\ifxetex
\setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
\else
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
\fi
$else$
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
$endif$
$endif$
$if(CJKmainfont)$
\ifxetex
\usepackage{xeCJK}
\setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
\fi
$endif$
$if(luatexjapresetoptions)$
\ifluatex
\usepackage[$for(luatexjapresetoptions)$$luatexjapresetoptions$$sep$,$endfor$]{luatexja-preset}
\fi
$endif$
$if(CJKmainfont)$
\ifluatex
\usepackage[$for(luatexjafontspecoptions)$$luatexjafontspecoptions$$sep$,$endfor$]{luatexja-fontspec}
\setmainjfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
\fi
$endif$
\fi
% use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
% use microtype if available
\IfFileExists{microtype.sty}{%
\usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype}
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
$if(indent)$
$else$
\IfFileExists{parskip.sty}{%
\usepackage{parskip}
}{% else
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}
}
$endif$
$if(verbatim-in-note)$
\usepackage{fancyvrb}
$endif$
$if(colorlinks)$
\usepackage{xcolor}
$endif$
\usepackage{hyperref}
\hypersetup{
$if(title-meta)$
pdftitle={$title-meta$},
$endif$
$if(author-meta)$
pdfauthor={$author-meta$},
$endif$
$if(keywords)$
pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$},
$endif$
$if(colorlinks)$
colorlinks=true,
linkcolor=$if(linkcolor)$$linkcolor$$else$Maroon$endif$,
citecolor=$if(citecolor)$$citecolor$$else$Blue$endif$,
urlcolor=$if(urlcolor)$$urlcolor$$else$Blue$endif$,
$else$
pdfborder={0 0 0},
$endif$
breaklinks=true}
\urlstyle{same} % don't use monospace font for urls
$if(verbatim-in-note)$
\VerbatimFootnotes % allows verbatim text in footnotes
$endif$
$if(geometry)$
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$endif$
$if(listings)$
\usepackage{listings}
\newcommand{\passthrough}[1]{#1}
$endif$
$if(lhs)$
\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
$endif$
$if(highlighting-macros)$
$highlighting-macros$
$endif$
$if(tables)$
\usepackage{longtable,booktabs}
% Fix footnotes in tables (requires footnote package)
\IfFileExists{footnote.sty}{\usepackage{footnote}\makesavenoteenv{longtable}}{}
$endif$
$if(graphics)$
\usepackage{graphicx,grffile}
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother
% Scale images if necessary, so that they will not overflow the page
% margins by default, and it is still possible to overwrite the defaults
% using explicit options in \includegraphics[width, height, ...]{}
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
$endif$
$if(links-as-notes)$
% Make links footnotes instead of hotlinks:
\DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}}
$endif$
$if(strikeout)$
\usepackage[normalem]{ulem}
% avoid problems with \sout in headers with hyperref:
\pdfstringdefDisableCommands{\renewcommand{\sout}{}}
$endif$
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
$if(numbersections)$
\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$}
$else$
\setcounter{secnumdepth}{0}
$endif$
$if(subparagraph)$
$else$
% Redefines (sub)paragraphs to behave more like sections
\ifx\paragraph\undefined\else
\let\oldparagraph\paragraph
\renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
\fi
\ifx\subparagraph\undefined\else
\let\oldsubparagraph\subparagraph
\renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
\fi
$endif$
\pagestyle{$pagestyle$}
% set default figure placement to htbp
\makeatletter
\def\fps@figure{htbp}
\makeatother
$for(header-includes)$
$header-includes$
$endfor$
$if(lang)$
\usepackage[$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel}
% get rid of language-specific shorthands (see pandoc #6817):
\let\LanguageShortHands\languageshorthands
\def\languageshorthands#1{}$endif$
$if(dir)$
\ifxetex
% load bidi as late as possible as it modifies e.g. graphicx
$if(latex-dir-rtl)$
\usepackage[RTLdocument]{bidi}
$else$
\usepackage{bidi}
$endif$
\fi
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\TeXXeTstate=1
\newcommand{\RL}[1]{\beginR #1\endR}
\newcommand{\LR}[1]{\beginL #1\endL}
\newenvironment{RTL}{\beginR}{\endR}
\newenvironment{LTR}{\beginL}{\endL}
\fi
$endif$
$if(title)$
\title{$title$}
$endif$
$if(subtitle)$
\providecommand{\subtitle}[1]{}
\subtitle{$subtitle$}
$endif$
$if(author)$
\author{$for(author)$$author$$sep$ \and $endfor$}
$endif$
\date{$date$}
\usepackage{multicol}
\let\oldtexttt\texttt
\renewcommand{\texttt}[1]{{\color{blue}{\oldtexttt{#1}}}}
\usepackage{tikz}
\AddToHookNext{shipout/background}{
\begin{tikzpicture}[remember picture,overlay]
\node at (current page.south east) {
%\hspace*{-6cm}\includegraphics[width=4cm]{logo.png}
\includegraphics[width=6cm,trim=0 -10cm -26cm 0]{logo.png}
};
\end{tikzpicture}
}
\begin{document}
%\includegraphics[width=2.5cm]{logo.png}
$if(ragged)$
\raggedright
$endif$
\footnotesize
$if(columns)$
\begin{multicols}{$columns$}
$else$
\begin{multicols}{3}
$endif$
$body$
\end{multicols}
\end{document}

26
vars.yml Normal file
View file

@ -0,0 +1,26 @@
---
# metadata
title: Neovim cheat sheet
author: Oliver Ladner
lang: en
keywords:
- neovim
- cheat sheet
linkcolor: blue
documentclass: scrartcl
pagestyle: empty
papersize: a4paper
geometry:
- a4paper
- left=0.5cm
- right=0.5cm
- top=0.7cm
- bottom=0.5cm
- landscape
columns: 4
fontsize: 12pt
ragged: yes
graphics: yes