Thicket data repository for the EEG
1{
2 "id": "https://ryan.freumh.org/vim.html",
3 "title": "(Neo)Vim",
4 "link": "https://ryan.freumh.org/vim.html",
5 "updated": "2025-02-18T00:00:00",
6 "published": "2025-02-01T00:00:00",
7 "summary": "<div>\n \n <span>Published 1 Feb 2025.</span>\n \n \n <span>Last update 18 Feb 2025.</span>\n \n </div>\n \n <div> Tags: <a href=\"/technology.html\" title=\"All pages tagged 'technology'.\">technology</a>. </div>\n \n \n\n <p><span>I used to use <a href=\"https://neovim.io/\">Neovim</a> as my main development environment.\nI like the fact that it’s small and fast, and that I can use it over an\nSSH connection. Neovim is a fork of <a href=\"https://www.vim.org/\">Vim</a> that I use for the Lua configuration\nand built-in Language Server Protocol support.</span></p>\n<p><span>However, I mainly use <a href=\"emacs.html\">Emacs</a>\nthese days. I extensively use <a href=\"https://github.com/emacs-evil/evil\">evil</a> (a Vi(m)\ncompatibility layer for Emacs), so I haven’t really stopped using Vim\nbut instead just use it inside a big Lisp machine.</span></p>\n<p><span>You can find my configuration in my <a href=\"./nix.html\">Nix</a>OS repository <a href=\"https://github.com/RyanGibb/nixos/tree/master/home/nvim\">here</a>.</span></p>\n<p><span>Below are my working notes on learning and using\n(Neo)Vim.</span></p>\n\n\n<ul>\n<li>References:\n<ul>\n<li><code>:help usr_toc.txt</code></li>\n<li><code>:help index</code></li>\n</ul></li>\n<li><code>ZZ</code> / <code>ZQ</code>\nexit with / without saving</li>\n<li>basic motions\n<ul>\n<li><code>h</code> <code>j</code>\n<code>k</code> <code>l</code></li>\n<li><code>i</code> <code>I</code>\n<code>a</code> <code>A</code> <code>0</code> <code>$</code></li>\n<li><code>w</code> <code>e</code>\n<code>b</code> <code>W</code> <code>E</code> <code>B</code></li>\n<li><code>CTRL-e</code> <code>CTRL-d</code> <code>CTRL-u</code>\n<code>CTRL-y</code> <code>CTRL-f</code> <code>CTRL-b</code>\n<code>CTRL-b</code> <code>CTRL-f</code></li>\n<li><code>/</code> <code>?</code></li>\n<li><code>n</code> <code>N</code></li>\n<li><code>f</code> <code>t</code>\n<code>F</code> <code>T</code> <code>;</code></li>\n<li><code>G</code> <code>gg</code></li>\n<li>object selection\n<ul>\n<li><code>iw</code> inner word</li>\n<li><code>aw</code> a word (incl whitespace)</li>\n<li><code>is</code> / <code>as</code>\nsentence</li>\n<li><code>ip</code> / <code>ap</code>\nparagraph</li>\n<li><code>i]</code> / <code>a]</code></li>\n<li><code>i)</code> / <code>a)</code></li>\n<li><code>i></code> / <code>a></code></li>\n<li><code>i\"</code> / <code>a\"</code></li>\n<li><code>i'</code> / <code>a'</code></li>\n<li><code>it</code> / <code>at</code>\n<tag> </tags></li>\n</ul></li>\n</ul></li>\n<li>basic operators\n<ul>\n<li><code>d</code> <code>c</code>\n<code>y</code> double for a line</li>\n<li><code>r</code> <code>R</code></li>\n</ul></li>\n<li>basic commands\n<ul>\n<li><code>x</code></li>\n<li><code>p</code> <code>P</code></li>\n<li><code>u</code> <code>U</code>\n<code>CTRL-r</code></li>\n<li><code>o</code> <code>O</code></li>\n<li><code>:%s/x/y/g</code></li>\n<li><code>:%s/x/y/gc</code> with confirmation</li>\n<li><code>#,#s/x/y/g</code> replaces in selected line\nnumbers</li>\n<li><code>:%s/\\(.\\).../...\\1/</code> regex capture</li>\n<li><code>:norm</code></li>\n<li><code>:nohls</code> / <code>:set hls</code></li>\n<li><code>:reg</code> / <code>yA</code> / <code>\"Ap</code></li>\n</ul></li>\n<li>options\n<ul>\n<li>set options with <code>:set <option></code></li>\n<li>prefix with <code>no</code> or <code>inv</code></li>\n<li><code>'ic'</code> ignore case</li>\n<li><code>'hls'</code> highlight case</li>\n<li><code>is</code> incremental search</li>\n</ul></li>\n<li>Enter to follow links</li>\n<li><code>:help</code> / <code>K</code> on word for documentation</li>\n<li>help usage\n<ul>\n<li>mode prefix, e.g. <code>:help i_CTRL+W</code></li>\n<li>options, e.g. <code>:help 'number'</code></li>\n<li>special keys, e.g. <code>:help i_<Up></code></li>\n<li>error codes <code>:help E37</code></li>\n</ul></li>\n<li><code>%</code> jump to matching bracket</li>\n<li><code>'<,'>w FILE</code> - writes part of a\nfile selected in visual mode</li>\n<li><code>:r</code> retrieve file or result of external\ncommand</li>\n<li><code>CTRL-w CTRL-w</code> switch window</li>\n<li><code>c_CTRL-D</code> and <code><Tab></code> command line completion</li>\n<li><code>:d//<pattern>/</code></li>\n<li><code>:g/<pattern>/<command>/</code></li>\n<li>jump list <code>CTRL-I</code> <code>CTRL-O</code></li>\n<li>tag stack <code>CTRL-]</code> <code>CTRL-T</code></li>\n<li><code>J</code> join lines (remove new lines)\n<ul>\n<li><code>gJ</code> remove spaces too</li>\n</ul></li>\n<li><code>gO</code> help TOC</li>\n<li><code>(</code> <code>)</code>\n<code>{</code> <code>}</code> <code>[</code> <code>]</code>\nsentences/paragraphs/sections forwards/backwards (quickref)</li>\n<li>spelling set language <code>:setlocal spell spelllang=en_gb</code>\n<ul>\n<li><code>]s</code> / <code>[s</code>\nmove misspells</li>\n<li><code>z</code> get suggestions</li>\n<li>insert mode: <code>CTRL-Xs</code></li>\n<li>add to spellfile <code>zg</code></li>\n<li>added shortcut for <code>CTRL-S</code> to <code>]s1z=</code></li>\n<li>spell file in <code>~/.config/vim/spell.en.utf-8.add</code></li>\n</ul></li>\n<li>searching repo / fuzzy match\n<ul>\n<li><a href=\"https://github.com/nvim-telescope/telescope.nvim\">telescope.nvim</a>\nplugin\n<ul>\n<li><code><leader><leader></code> find\nfiles</li>\n<li><code><leader>bb</code> buffer search</li>\n<li><code><leader>fQ</code> commands</li>\n<li><code><leader>fQ</code> command history</li>\n<li><a href=\"https://github.com/nvim-telescope/telescope.nvim/blob/master/lua/telescope/mappings.lua\"><code><alt-q></code></a> open in quickfix</li>\n<li><code><leader>fd</code> telecope file browser\n<ul>\n<li>iCTRL-t / nt change directory</li>\n<li>e home</li>\n<li>w current dir</li>\n</ul></li>\n</ul></li>\n</ul></li>\n<li><code>:mksession</code> and <code>vim -S <file></code> to save/restore a\nsession</li>\n<li><code>g</code> commands\n<ul>\n<li><code>gj</code> <code>gk</code>\n<code>g0</code> <code>g$</code> <code>gq(q)</code></li>\n<li><code>gu(u)</code> <code>gU</code>\n<code>_{</code> <code>g}(~)</code></li>\n<li><code>gf</code> <code>gx</code></li>\n<li><code>gv</code></li>\n<li><code>g&</code></li>\n</ul></li>\n<li><code>C-6</code> / <code>C-^</code> / <code>:b#</code> go to\nlast buffer</li>\n<li>marks\n<ul>\n<li>make <code>m{a-zA-Z}</code>\n<ul>\n<li>NB a-z are file local</li>\n</ul></li>\n<li>jump to line <code>'{a-zA-Z}</code></li>\n<li>jump to column <code>`{a-zA-Z}</code></li>\n<li><code>``</code> / <code>''</code>\nprevious mark</li>\n</ul></li>\n<li>indent\n<ul>\n<li><code><<</code> <code>>></code></li>\n<li><code>i_CTRL-t</code> <code>i_CTRL-d</code></li>\n<li><code>=<motion></code> or <code>==</code> for line</li>\n</ul></li>\n<li>window management\n<ul>\n<li><code>:help windows</code></li>\n<li><code>c</code> / <code>:close</code></li>\n<li><code>o</code> / <code>:only</code></li>\n<li><code>res</code> / <code>vert res</code></li>\n</ul></li>\n<li>tab management\n<ul>\n<li><code>:tabnew</code></li>\n<li><code>CTRL-wT</code></li>\n<li><code>gt</code> / <code>gT</code></li>\n</ul></li>\n<li>buffer management\n<ul>\n<li><code>:bd</code> / <code>:bn</code> / <code>:bp</code></li>\n</ul></li>\n<li>Markdown formatting a la tutor\n<ul>\n<li><a href=\"https://github.com/neovim/neovim/blob/5c36701228e166f8aa89983044404ff322fe481f/runtime/tutor/tutor.tutor\">https://github.com/neovim/neovim/blob/5c36701228e166f8aa89983044404ff322fe481f/runtime/tutor/tutor.tutor</a></li>\n<li><a href=\"https://github.com/neovim/neovim/blob/5c36701228e166f8aa89983044404ff322fe481f/runtime/syntax/tutor.vim\">https://github.com/neovim/neovim/blob/5c36701228e166f8aa89983044404ff322fe481f/runtime/syntax/tutor.vim</a></li>\n<li><a href=\"https://github.com/neovim/neovim/blob/5c36701228e166f8aa89983044404ff322fe481f/runtime/doc/pi_tutor.txt\">https://github.com/neovim/neovim/blob/5c36701228e166f8aa89983044404ff322fe481f/runtime/doc/pi_tutor.txt</a></li>\n<li><a href=\"https://github.com/neovim/neovim/blob/5c36701228e166f8aa89983044404ff322fe481f/runtime/plugin/tutor.vim#L4\">https://github.com/neovim/neovim/blob/5c36701228e166f8aa89983044404ff322fe481f/runtime/plugin/tutor.vim#L4</a></li>\n</ul></li>\n<li>folds\n<ul>\n<li><code>zf</code> create</li>\n<li><code>zo</code> open</li>\n<li><code>zO</code> open rec</li>\n<li><code>zc</code> close</li>\n<li><code>zC</code> close rec</li>\n<li><code>za</code> toggle</li>\n<li><code>zA</code> toggle rec</li>\n<li><code>zi</code> fold enable</li>\n<li><code>:help usr_28.txt</code></li>\n<li><code>:help folding</code></li>\n<li>with markdown folding, we don’t want to have a file all folded on\nopen\n<ul>\n<li>if we set <code>nofoldenable</code>, enabling any\nfold will enable them all</li>\n<li>so we set <code>foldlevel: 99</code></li>\n</ul></li>\n<li><code>zM</code> close all folds, set\nfoldlevel=0</li>\n<li><code>zR</code> close all folds, set\nfoldlevel=highest</li>\n<li><code>zm</code> / <code>zr</code>\ndecrement/increment foldlevel</li>\n</ul></li>\n<li><code>q:</code> command line editing in normal\nmode</li>\n<li><code>:ls t</code> list buffers in recently used\norder</li>\n<li>paste in insert mode <code>i_CTRL-r</code></li>\n<li>see lsp servers <code>:lua =vim.lsp.get_active_clients()[1]</code></li>\n<li><code>gi</code> to enter insert mode at the place\nin the file where you last left it</li>\n<li><code>i_CTRL-o</code> perform one normal mode\ncommand</li>\n<li>surround with brackets <code>ciW\"\"EscP</code>\n<ul>\n<li>or with <a href=\"https://github.com/kylechui/nvim-surround#user-content-rocket-usage\">(n)vim-surround</a>\n<code>ysiW\"</code>\n<ul>\n<li>change with <code>cs'\"</code></li>\n<li>NB open brackets add space and closed don’t</li>\n<li>change including tags <code>ysa\"[</code></li>\n<li>change brackets e.g. =cs[{=</li>\n<li>visual mode: S</li>\n<li>delete <code>ds<motion></code></li>\n</ul></li>\n</ul></li>\n<li>insert date\n<ul>\n<li>expression register <code>\"=strftime('%F')</code></li>\n<li>or in insert mode <code><C-r>=strftime('%F')</code></li>\n</ul></li>\n<li>macros\n<ul>\n<li>record <code>q<char><recording>q</code></li>\n<li>replay <code>@<char></code> reply last <code>@@</code></li>\n<li><code>Q</code> repeat last recorded register\n[count] times</li>\n<li>macros paste to the register, e.g. <code>qrlq\"rp</code> will produce <code>l</code>\n<ul>\n<li>you can set macros from plain text in the inverse too</li>\n</ul></li>\n</ul></li>\n<li><a href=\"https://github.com/numToStr/Comment.nvim\">comment.nvim</a>\n<code>gcc</code> line or <code>gc<motion></code></li>\n<li>vimtex\n<ul>\n<li><code>cse</code> change surrounding</li>\n<li><code>:help vimtex-motions</code></li>\n<li><a href=\"https://jdhao.github.io/2019/03/26/nvim_latex_write_preview/#useful-mappings-and-shortcuts\">https://jdhao.github.io/2019/03/26/nvim_latex_write_preview/#useful-mappings-and-shortcuts</a></li>\n<li><code>dse</code> delete surrounding</li>\n<li><code>tse</code> toggle surrounding from/to *, e.g.\nequation to equation *</li>\n<li><code>\\ll</code> start compilation</li>\n<li><a href=\"https://github.com/lervag/vimtex/blob/master/doc/targets-textobj-cheatsheet.md\">textobjects</a></li>\n</ul></li>\n<li><code>gq</code> format</li>\n<li>netrw <code>:Ex</code>\n<ul>\n<li><code>%</code> for file</li>\n<li><code>d</code> for dir</li>\n</ul></li>\n<li><code>:h Select-mode</code></li>\n<li>quickfix menu\n<ul>\n<li><code>copen</code> (populated by search, e.g. <code>:grep</code> or telescope)</li>\n<li><code>cdo %s/replace/with/gc</code></li>\n<li><code>cdo w</code></li>\n<li>and after make <code>copen</code></li>\n<li><code>cn</code> <code>cp</code></li>\n</ul></li>\n<li><code>:changes</code>\n<ul>\n<li><code>g;</code> <code>g,</code></li>\n</ul></li>\n<li><code>:set paste</code></li>\n<li><code>zz</code> centre on line</li>\n<li>register <code>%</code> / <code>#</code> current / prev file</li>\n<li><code>gs</code> go to sleep</li>\n<li><code>gO</code> outline</li>\n<li><code>*</code> / <code>#</code>\nsearch word under cursor</li>\n<li><code>{Visual}g CTRL-A</code> increment list</li>\n<li><code>[%</code> go to containing <code>[</code></li>\n<li><code>:g/^/m 0</code> Reverse line order <code>:help 12.4</code></li>\n<li><code>:e %:h/file</code> another file in current\nfile’s directory\n<ul>\n<li>more expansions at <code>:help expand</code></li>\n</ul></li>\n<li>luasnip insert node puts you in select mode\n<ul>\n<li>you can exit it and append with <code><Esc>Ea</code></li>\n<li>they continue with <code><C-l></code></li>\n</ul></li>\n<li><code>r!<command></code> insert command\noutput</li>\n<li><code>.</code> repeat last change</li>\n<li><a href=\"https://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim/1220118#1220118\">groking\nvim</a></li>\n</ul>\n<p><span><span>O</span> <a href=\"https://github.com/hrsh7th/cmp-path/issues/43\">nvim-cmp cmp-path\nwithout starting <code>./</code></a></span></p>\n<p><span><span>O</span> hydra</span></p>\n<ul>\n<li><a href=\"https://github.com/anuvyklack/hydra.nvim/issues/3#issuecomment-1162988750\">with\nwhich-key</a></li>\n<li><a href=\"https://github.com/anuvyklack/hydra.nvim/issues/59\">LDAP\nhydra</a></li>\n</ul>",
8 "content": "<div>\n \n <span>Published 1 Feb 2025.</span>\n \n \n <span>Last update 18 Feb 2025.</span>\n \n </div>\n \n <div> Tags: <a href=\"/technology.html\" title=\"All pages tagged 'technology'.\">technology</a>. </div>\n \n \n\n <p><span>I used to use <a href=\"https://neovim.io/\">Neovim</a> as my main development environment.\nI like the fact that it’s small and fast, and that I can use it over an\nSSH connection. Neovim is a fork of <a href=\"https://www.vim.org/\">Vim</a> that I use for the Lua configuration\nand built-in Language Server Protocol support.</span></p>\n<p><span>However, I mainly use <a href=\"emacs.html\">Emacs</a>\nthese days. I extensively use <a href=\"https://github.com/emacs-evil/evil\">evil</a> (a Vi(m)\ncompatibility layer for Emacs), so I haven’t really stopped using Vim\nbut instead just use it inside a big Lisp machine.</span></p>\n<p><span>You can find my configuration in my <a href=\"./nix.html\">Nix</a>OS repository <a href=\"https://github.com/RyanGibb/nixos/tree/master/home/nvim\">here</a>.</span></p>\n<p><span>Below are my working notes on learning and using\n(Neo)Vim.</span></p>\n\n\n<ul>\n<li>References:\n<ul>\n<li><code>:help usr_toc.txt</code></li>\n<li><code>:help index</code></li>\n</ul></li>\n<li><code>ZZ</code> / <code>ZQ</code>\nexit with / without saving</li>\n<li>basic motions\n<ul>\n<li><code>h</code> <code>j</code>\n<code>k</code> <code>l</code></li>\n<li><code>i</code> <code>I</code>\n<code>a</code> <code>A</code> <code>0</code> <code>$</code></li>\n<li><code>w</code> <code>e</code>\n<code>b</code> <code>W</code> <code>E</code> <code>B</code></li>\n<li><code>CTRL-e</code> <code>CTRL-d</code> <code>CTRL-u</code>\n<code>CTRL-y</code> <code>CTRL-f</code> <code>CTRL-b</code>\n<code>CTRL-b</code> <code>CTRL-f</code></li>\n<li><code>/</code> <code>?</code></li>\n<li><code>n</code> <code>N</code></li>\n<li><code>f</code> <code>t</code>\n<code>F</code> <code>T</code> <code>;</code></li>\n<li><code>G</code> <code>gg</code></li>\n<li>object selection\n<ul>\n<li><code>iw</code> inner word</li>\n<li><code>aw</code> a word (incl whitespace)</li>\n<li><code>is</code> / <code>as</code>\nsentence</li>\n<li><code>ip</code> / <code>ap</code>\nparagraph</li>\n<li><code>i]</code> / <code>a]</code></li>\n<li><code>i)</code> / <code>a)</code></li>\n<li><code>i></code> / <code>a></code></li>\n<li><code>i\"</code> / <code>a\"</code></li>\n<li><code>i'</code> / <code>a'</code></li>\n<li><code>it</code> / <code>at</code>\n<tag> </tags></li>\n</ul></li>\n</ul></li>\n<li>basic operators\n<ul>\n<li><code>d</code> <code>c</code>\n<code>y</code> double for a line</li>\n<li><code>r</code> <code>R</code></li>\n</ul></li>\n<li>basic commands\n<ul>\n<li><code>x</code></li>\n<li><code>p</code> <code>P</code></li>\n<li><code>u</code> <code>U</code>\n<code>CTRL-r</code></li>\n<li><code>o</code> <code>O</code></li>\n<li><code>:%s/x/y/g</code></li>\n<li><code>:%s/x/y/gc</code> with confirmation</li>\n<li><code>#,#s/x/y/g</code> replaces in selected line\nnumbers</li>\n<li><code>:%s/\\(.\\).../...\\1/</code> regex capture</li>\n<li><code>:norm</code></li>\n<li><code>:nohls</code> / <code>:set hls</code></li>\n<li><code>:reg</code> / <code>yA</code> / <code>\"Ap</code></li>\n</ul></li>\n<li>options\n<ul>\n<li>set options with <code>:set <option></code></li>\n<li>prefix with <code>no</code> or <code>inv</code></li>\n<li><code>'ic'</code> ignore case</li>\n<li><code>'hls'</code> highlight case</li>\n<li><code>is</code> incremental search</li>\n</ul></li>\n<li>Enter to follow links</li>\n<li><code>:help</code> / <code>K</code> on word for documentation</li>\n<li>help usage\n<ul>\n<li>mode prefix, e.g. <code>:help i_CTRL+W</code></li>\n<li>options, e.g. <code>:help 'number'</code></li>\n<li>special keys, e.g. <code>:help i_<Up></code></li>\n<li>error codes <code>:help E37</code></li>\n</ul></li>\n<li><code>%</code> jump to matching bracket</li>\n<li><code>'<,'>w FILE</code> - writes part of a\nfile selected in visual mode</li>\n<li><code>:r</code> retrieve file or result of external\ncommand</li>\n<li><code>CTRL-w CTRL-w</code> switch window</li>\n<li><code>c_CTRL-D</code> and <code><Tab></code> command line completion</li>\n<li><code>:d//<pattern>/</code></li>\n<li><code>:g/<pattern>/<command>/</code></li>\n<li>jump list <code>CTRL-I</code> <code>CTRL-O</code></li>\n<li>tag stack <code>CTRL-]</code> <code>CTRL-T</code></li>\n<li><code>J</code> join lines (remove new lines)\n<ul>\n<li><code>gJ</code> remove spaces too</li>\n</ul></li>\n<li><code>gO</code> help TOC</li>\n<li><code>(</code> <code>)</code>\n<code>{</code> <code>}</code> <code>[</code> <code>]</code>\nsentences/paragraphs/sections forwards/backwards (quickref)</li>\n<li>spelling set language <code>:setlocal spell spelllang=en_gb</code>\n<ul>\n<li><code>]s</code> / <code>[s</code>\nmove misspells</li>\n<li><code>z</code> get suggestions</li>\n<li>insert mode: <code>CTRL-Xs</code></li>\n<li>add to spellfile <code>zg</code></li>\n<li>added shortcut for <code>CTRL-S</code> to <code>]s1z=</code></li>\n<li>spell file in <code>~/.config/vim/spell.en.utf-8.add</code></li>\n</ul></li>\n<li>searching repo / fuzzy match\n<ul>\n<li><a href=\"https://github.com/nvim-telescope/telescope.nvim\">telescope.nvim</a>\nplugin\n<ul>\n<li><code><leader><leader></code> find\nfiles</li>\n<li><code><leader>bb</code> buffer search</li>\n<li><code><leader>fQ</code> commands</li>\n<li><code><leader>fQ</code> command history</li>\n<li><a href=\"https://github.com/nvim-telescope/telescope.nvim/blob/master/lua/telescope/mappings.lua\"><code><alt-q></code></a> open in quickfix</li>\n<li><code><leader>fd</code> telecope file browser\n<ul>\n<li>iCTRL-t / nt change directory</li>\n<li>e home</li>\n<li>w current dir</li>\n</ul></li>\n</ul></li>\n</ul></li>\n<li><code>:mksession</code> and <code>vim -S <file></code> to save/restore a\nsession</li>\n<li><code>g</code> commands\n<ul>\n<li><code>gj</code> <code>gk</code>\n<code>g0</code> <code>g$</code> <code>gq(q)</code></li>\n<li><code>gu(u)</code> <code>gU</code>\n<code>_{</code> <code>g}(~)</code></li>\n<li><code>gf</code> <code>gx</code></li>\n<li><code>gv</code></li>\n<li><code>g&</code></li>\n</ul></li>\n<li><code>C-6</code> / <code>C-^</code> / <code>:b#</code> go to\nlast buffer</li>\n<li>marks\n<ul>\n<li>make <code>m{a-zA-Z}</code>\n<ul>\n<li>NB a-z are file local</li>\n</ul></li>\n<li>jump to line <code>'{a-zA-Z}</code></li>\n<li>jump to column <code>`{a-zA-Z}</code></li>\n<li><code>``</code> / <code>''</code>\nprevious mark</li>\n</ul></li>\n<li>indent\n<ul>\n<li><code><<</code> <code>>></code></li>\n<li><code>i_CTRL-t</code> <code>i_CTRL-d</code></li>\n<li><code>=<motion></code> or <code>==</code> for line</li>\n</ul></li>\n<li>window management\n<ul>\n<li><code>:help windows</code></li>\n<li><code>c</code> / <code>:close</code></li>\n<li><code>o</code> / <code>:only</code></li>\n<li><code>res</code> / <code>vert res</code></li>\n</ul></li>\n<li>tab management\n<ul>\n<li><code>:tabnew</code></li>\n<li><code>CTRL-wT</code></li>\n<li><code>gt</code> / <code>gT</code></li>\n</ul></li>\n<li>buffer management\n<ul>\n<li><code>:bd</code> / <code>:bn</code> / <code>:bp</code></li>\n</ul></li>\n<li>Markdown formatting a la tutor\n<ul>\n<li><a href=\"https://github.com/neovim/neovim/blob/5c36701228e166f8aa89983044404ff322fe481f/runtime/tutor/tutor.tutor\">https://github.com/neovim/neovim/blob/5c36701228e166f8aa89983044404ff322fe481f/runtime/tutor/tutor.tutor</a></li>\n<li><a href=\"https://github.com/neovim/neovim/blob/5c36701228e166f8aa89983044404ff322fe481f/runtime/syntax/tutor.vim\">https://github.com/neovim/neovim/blob/5c36701228e166f8aa89983044404ff322fe481f/runtime/syntax/tutor.vim</a></li>\n<li><a href=\"https://github.com/neovim/neovim/blob/5c36701228e166f8aa89983044404ff322fe481f/runtime/doc/pi_tutor.txt\">https://github.com/neovim/neovim/blob/5c36701228e166f8aa89983044404ff322fe481f/runtime/doc/pi_tutor.txt</a></li>\n<li><a href=\"https://github.com/neovim/neovim/blob/5c36701228e166f8aa89983044404ff322fe481f/runtime/plugin/tutor.vim#L4\">https://github.com/neovim/neovim/blob/5c36701228e166f8aa89983044404ff322fe481f/runtime/plugin/tutor.vim#L4</a></li>\n</ul></li>\n<li>folds\n<ul>\n<li><code>zf</code> create</li>\n<li><code>zo</code> open</li>\n<li><code>zO</code> open rec</li>\n<li><code>zc</code> close</li>\n<li><code>zC</code> close rec</li>\n<li><code>za</code> toggle</li>\n<li><code>zA</code> toggle rec</li>\n<li><code>zi</code> fold enable</li>\n<li><code>:help usr_28.txt</code></li>\n<li><code>:help folding</code></li>\n<li>with markdown folding, we don’t want to have a file all folded on\nopen\n<ul>\n<li>if we set <code>nofoldenable</code>, enabling any\nfold will enable them all</li>\n<li>so we set <code>foldlevel: 99</code></li>\n</ul></li>\n<li><code>zM</code> close all folds, set\nfoldlevel=0</li>\n<li><code>zR</code> close all folds, set\nfoldlevel=highest</li>\n<li><code>zm</code> / <code>zr</code>\ndecrement/increment foldlevel</li>\n</ul></li>\n<li><code>q:</code> command line editing in normal\nmode</li>\n<li><code>:ls t</code> list buffers in recently used\norder</li>\n<li>paste in insert mode <code>i_CTRL-r</code></li>\n<li>see lsp servers <code>:lua =vim.lsp.get_active_clients()[1]</code></li>\n<li><code>gi</code> to enter insert mode at the place\nin the file where you last left it</li>\n<li><code>i_CTRL-o</code> perform one normal mode\ncommand</li>\n<li>surround with brackets <code>ciW\"\"EscP</code>\n<ul>\n<li>or with <a href=\"https://github.com/kylechui/nvim-surround#user-content-rocket-usage\">(n)vim-surround</a>\n<code>ysiW\"</code>\n<ul>\n<li>change with <code>cs'\"</code></li>\n<li>NB open brackets add space and closed don’t</li>\n<li>change including tags <code>ysa\"[</code></li>\n<li>change brackets e.g. =cs[{=</li>\n<li>visual mode: S</li>\n<li>delete <code>ds<motion></code></li>\n</ul></li>\n</ul></li>\n<li>insert date\n<ul>\n<li>expression register <code>\"=strftime('%F')</code></li>\n<li>or in insert mode <code><C-r>=strftime('%F')</code></li>\n</ul></li>\n<li>macros\n<ul>\n<li>record <code>q<char><recording>q</code></li>\n<li>replay <code>@<char></code> reply last <code>@@</code></li>\n<li><code>Q</code> repeat last recorded register\n[count] times</li>\n<li>macros paste to the register, e.g. <code>qrlq\"rp</code> will produce <code>l</code>\n<ul>\n<li>you can set macros from plain text in the inverse too</li>\n</ul></li>\n</ul></li>\n<li><a href=\"https://github.com/numToStr/Comment.nvim\">comment.nvim</a>\n<code>gcc</code> line or <code>gc<motion></code></li>\n<li>vimtex\n<ul>\n<li><code>cse</code> change surrounding</li>\n<li><code>:help vimtex-motions</code></li>\n<li><a href=\"https://jdhao.github.io/2019/03/26/nvim_latex_write_preview/#useful-mappings-and-shortcuts\">https://jdhao.github.io/2019/03/26/nvim_latex_write_preview/#useful-mappings-and-shortcuts</a></li>\n<li><code>dse</code> delete surrounding</li>\n<li><code>tse</code> toggle surrounding from/to *, e.g.\nequation to equation *</li>\n<li><code>\\ll</code> start compilation</li>\n<li><a href=\"https://github.com/lervag/vimtex/blob/master/doc/targets-textobj-cheatsheet.md\">textobjects</a></li>\n</ul></li>\n<li><code>gq</code> format</li>\n<li>netrw <code>:Ex</code>\n<ul>\n<li><code>%</code> for file</li>\n<li><code>d</code> for dir</li>\n</ul></li>\n<li><code>:h Select-mode</code></li>\n<li>quickfix menu\n<ul>\n<li><code>copen</code> (populated by search, e.g. <code>:grep</code> or telescope)</li>\n<li><code>cdo %s/replace/with/gc</code></li>\n<li><code>cdo w</code></li>\n<li>and after make <code>copen</code></li>\n<li><code>cn</code> <code>cp</code></li>\n</ul></li>\n<li><code>:changes</code>\n<ul>\n<li><code>g;</code> <code>g,</code></li>\n</ul></li>\n<li><code>:set paste</code></li>\n<li><code>zz</code> centre on line</li>\n<li>register <code>%</code> / <code>#</code> current / prev file</li>\n<li><code>gs</code> go to sleep</li>\n<li><code>gO</code> outline</li>\n<li><code>*</code> / <code>#</code>\nsearch word under cursor</li>\n<li><code>{Visual}g CTRL-A</code> increment list</li>\n<li><code>[%</code> go to containing <code>[</code></li>\n<li><code>:g/^/m 0</code> Reverse line order <code>:help 12.4</code></li>\n<li><code>:e %:h/file</code> another file in current\nfile’s directory\n<ul>\n<li>more expansions at <code>:help expand</code></li>\n</ul></li>\n<li>luasnip insert node puts you in select mode\n<ul>\n<li>you can exit it and append with <code><Esc>Ea</code></li>\n<li>they continue with <code><C-l></code></li>\n</ul></li>\n<li><code>r!<command></code> insert command\noutput</li>\n<li><code>.</code> repeat last change</li>\n<li><a href=\"https://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim/1220118#1220118\">groking\nvim</a></li>\n</ul>\n<p><span><span>O</span> <a href=\"https://github.com/hrsh7th/cmp-path/issues/43\">nvim-cmp cmp-path\nwithout starting <code>./</code></a></span></p>\n<p><span><span>O</span> hydra</span></p>\n<ul>\n<li><a href=\"https://github.com/anuvyklack/hydra.nvim/issues/3#issuecomment-1162988750\">with\nwhich-key</a></li>\n<li><a href=\"https://github.com/anuvyklack/hydra.nvim/issues/59\">LDAP\nhydra</a></li>\n</ul>",
9 "content_type": "html",
10 "categories": [],
11 "source": "https://ryan.freumh.org/atom.xml"
12}