From 545c30c9a531af9059f8689f56d6b1b4ea97857f Mon Sep 17 00:00:00 2001 From: Max Christian Pohle Date: Sun, 12 May 2024 21:55:55 +0200 Subject: rewrote the vim cheat sheet part to markdown --- README.md | 391 +++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 206 insertions(+), 185 deletions(-) diff --git a/README.md b/README.md index c6da247..0d4f81b 100755 --- a/README.md +++ b/README.md @@ -50,191 +50,212 @@ For different working scenarios. textwidth (configured with `set textwidth=80` for example) - :viusage = summary of all keyboard shortcuts - :options = shows currently :set options (with descriptions) - leader key = usually set to backslash expects a quick command - - [normal mode] - f{char} = move cursor to the character {char} - gf = open file under cursor - gf = open file under cursor in a tab - ] = jump to the tag under the cursor in a new window - = jump back from where that ^ brought you - K = keyword lookup for the word under the cursor (see :help kp) - w = next word - e = end of word (=inner word) - - @see: :h text-objects - ci' = change between single quote - ci" = change between double quote - ci( = change between brace - cit = change XML Tag - ciw = select inner word - caw = select 'a word' - " where c can be replaced by v for visual mode - - :%s/foo/bar/g = replace all foo with bar - :g/foo/s/bar//g = on lines with foo replace bar with nothing - :g!/foo/s/bar//g = on lines not containing foo replace bar with nothing - :g!/^foo/execute("normal dd") delete lines starting with foo - - flags, end: after the last / - g = replace globally (all occurances on the current line) - c = confirm each replace, also allows to switch to g (use the flag to see the help message) - e = places the cursor in the end of the selection - - flags, within the search string: - \v = use very magic search (more like perl) - \V = use no very magic, more like searching verbatim - \zs .. \ze = mark begin and end of a sub pattern (like perl lookaround assertions) - - [visual mode] # with selected lines - gq = formats text so that it fits in whatever :set textwidth was set - iB = select block between curly braces (:help object-select) - - [commands] - command line mode begins with : and has its own key mappings starting with c like in cnormap - - :spell [word] = adds a word to the current dictionary (no mistake any more) - :set list = display non printable characters - :retab = replaces tabs with spaces - :set expandtab = in insert mode: replace tab with spaces - :Explore = cli version open file dialog (file explorer) - :Lex = use netrw as project drawer (stays open in its own window) - :only = 'maximize' current buffer - - = auto completion with the word under the cursor (interesting with incsearch) - = expand pattern from command line (e.g. *.txt) - - [navigation] - = look up the tag under the cursor (help links as well) - = return back from tag under the cursor - gd = jump to the declaration of the variable under the cursor - - [macros] # record and play back a series of vim commands - qa = start (q) macro recording in register a (can be anything) - q = stop macro recording - @a = replay macro a - :'<,'>normal @a = apply a to every line in the current selection - :reg = lists all registers (including those with macros in them) - - [registers] - notice, that registers get used for both: macro recordings and copying text - - :reg = shows contents of all registers - "0p = pasts from register 0, which is the same as "", but not overwritten by dd - "ap = same for register a - "0yy = yanks to register 0 (same as y by itself) - "ay = yanks current selection to register a (in visual mode) - - [marker] - ma = set marker a-z (a in this case) - mA = create a session persistent file marker which can be used to reopen a file (not bound to the buffer) - `a = go to marker a (line & column) - 'a = go to marker a (line, first non blank), same as `a^ - - [hotkeys] - , = increment, decrement number under the cursor - - [windows] - v = splits buffer vertically (screen uses |) - s = splits buffer horizontally (same as screen) - w = moves the cursor to the next window and back - [dir] = moves the cursor in that direction (use hjkl or arrow keys) - [HK] = make a vertical split horizontal and vice versa - o = only: close all other windows - c = close: current window in which the cursor sits - - [vimdiff] - do = get changes from other window into the current - dp = put changes from current window into the other - ]c = jump to the next change - [c = jump to the prevous change - - [folds] - za = toggle a fold - zM = close all folds - zR = opens all folds (unfold all) - zE = eliminates all folds - - [buffers] - :bn = buffer next - :bp = buffer previous - :bd = buffer dispatch (close) - :b = switch buffer by name (use and ) - :set nobuflisted = hide buffer in buffer list (great for neovim's terminal) - - [args] - :n **/*.c = opens all files with that name or type in buffers and also fills the argument list - - [special] - g CTRL-g = display file properties including word and char count - q: = show command history and use it like a normal buffer - z= = show spellcheck suggestions - - [completions] - CTRL-O = display completions: omnicomplete (context dependant completions) - - CTRL-X CTRL-F = display completions: file name (using vim-internals omnicomplete) - CTRL-N CTRL-P = display completions: file keywords - CTRL-K = display completions: dictionary - CTRL-T = display completions: thesaurus - CTRL-I = display completions: include files - CTRL-] = display completions: tags - CTRL-D = display completions: (marcro-) definitions - CTRL-V = display completions: vim command line - CTRL-U = display completions: user-defined - - [annoyances] - gv = visual mode: reselect last selection - CTRL-o = lets the caret jump back to the previous location - CTRL-L = redraws the complete screen - CTRL-R = in insert mode and command line: paste contents of (e.g. : for last command, * for clipboard) - CTRL-R = in normal mode: redoes what has been undone with u - "p = in normal mode: paste paste contents of - - [registers] - "/ = last search expression - ": = last command entered - "= = expression register (to do calculations or call vim functions) - - [netrw] - :Lex = open the netrw-view as project drawer - gn = makes the directory under the cursor the root directory - a = toggles display of hidden files - - [filetype:css] - viB:sort = sort inner block by name - - [vim commands] - :for i in range(1,12) | put ='2016-'.i | endfor - - [fancy utf-8 symbols] - ௵ - - [debugging] - :profile! start /tmp/profile.log - :profile func * - :profile file * - " At this point do slow actions - :profdel * - :e /tmp/profile.log - " add a break point to a vim script (like vimrc) to invoke the internal debugger - :breakadd here - - :finish = from within a viml-script: stop sourcing it - - [substitutions] - delete all comments: %s/\/\*\*< [^(\*\/)]*\*\///g - remove empty lines: global/^$/d - remove non-empty lines: v/^$/d - - [programs] - gpm - cut and paste helper for the linux console (to get text from CTRL-ALT-F2 to CTRL-ALT-F3) - - [vim modeline] - filetype can have multiple values, like python.django - The last line can be a mode line, which holds settings like tab width: +## general + + :viusage = summary of all keyboard shortcuts + :options = shows currently :set options (with descriptions) + leader key = usually set to backslash expects a quick command + +### normal mode + + f{char} = move cursor to the character {char} + gf = open file under cursor + gf = open file under cursor in a tab + ] = jump to the tag under the cursor in a new window + = jump back from where that ^ brought you + K = keyword lookup for the word under the cursor (see :help kp) + w = next word + e = end of word (=inner word) + + @see: :h text-objects + ci' = change between single quote + ci" = change between double quote + ci( = change between brace + cit = change XML Tag + ciw = select inner word + caw = select 'a word' + " where c can be replaced by v for visual mode + + :%s/foo/bar/g = replace all foo with bar + :g/foo/s/bar//g = on lines with foo replace bar with nothing + :g!/foo/s/bar//g = on lines not containing foo replace bar with nothing + :g!/^foo/execute("normal dd") delete lines starting with foo + + flags, end: after the last / + g = replace globally (all occurances on the current line) + c = confirm each replace, also allows to switch to g (use the flag to see the help message) + e = places the cursor in the end of the selection + + flags, within the search string: + \v = use very magic search (more like perl) + \V = use no very magic, more like searching verbatim + \zs .. \ze = mark begin and end of a sub pattern (like perl lookaround assertions) + +### visual mode (with selected lines) + + gq = formats text so that it fits in whatever :set textwidth was set + iB = select block between curly braces (:help object-select) + +### command line mode +command line mode begins with : and has its own key mappings starting with c +like in cnormap + + :spell [word] = adds a word to the current dictionary (no mistake any more) + :set list = display non printable characters + :retab = replaces tabs with spaces + :set expandtab = in insert mode: replace tab with spaces + :Explore = cli version open file dialog (file explorer) + :Lex = use netrw as project drawer (stays open in its own window) + :only = 'maximize' current buffer + + +### insert mode + + = auto completion with the word under the cursor (interesting with incsearch) + = expand pattern from command line (e.g. *.txt) + +### navigation + + = look up the tag under the cursor (help links as well) + = return back from tag under the cursor + gd = jump to the declaration of the variable under the cursor + +### macros +record and play back a series of vim commands + + qa = start (q) macro recording in register a (can be anything) + q = stop macro recording + @a = replay macro a + :'<,'>normal @a = apply a to every line in the current selection + :reg = lists all registers (including those with macros in them) + +### registers +notice, that registers get used for both: macro recordings and copying text + + :reg = shows contents of all registers + "0p = pasts from register 0, which is the same as "", but not overwritten by dd + "ap = same for register a + "0yy = yanks to register 0 (same as y by itself) + "ay = yanks current selection to register a (in visual mode) + +### marker + + ma = set marker a-z (a in this case) + mA = create a session persistent file marker which can be used to reopen a file (not bound to the buffer) + `a = go to marker a (line & column) + 'a = go to marker a (line, first non blank), same as `a^ + +### other hotkeys + + , = increment, decrement number under the cursor + +## windows + + v = splits buffer vertically (screen uses |) + s = splits buffer horizontally (same as screen) + w = moves the cursor to the next window and back + [dir] = moves the cursor in that direction (use hjkl or arrow keys) + [HK] = make a vertical split horizontal and vice versa + o = only: close all other windows + c = close: current window in which the cursor sits + +### vimdiff + + do = get changes from other window into the current + dp = put changes from current window into the other + ]c = jump to the next change + [c = jump to the prevous change + +### folds + + za = toggle a fold + zM = close all folds + zR = opens all folds (unfold all) + zE = eliminates all folds + +### buffers + + :bn = buffer next + :bp = buffer previous + :bd = buffer dispatch (close) + :b = switch buffer by name (use and ) + :set nobuflisted = hide buffer in buffer list (great for neovim's terminal) + +### args + + :n **/*.c = opens all files with that name or type in buffers and also fills the argument list + +### special + + g CTRL-g = display file properties including word and char count + q: = show command history and use it like a normal buffer + z= = show spellcheck suggestions + +### completions + + CTRL-O = display completions: omnicomplete (context dependant completions) + CTRL-X CTRL-F = display completions: file name (using vim-internals omnicomplete) + CTRL-N CTRL-P = display completions: file keywords + CTRL-K = display completions: dictionary + CTRL-T = display completions: thesaurus + CTRL-I = display completions: include files + CTRL-] = display completions: tags + CTRL-D = display completions: (marcro-) definitions + CTRL-V = display completions: vim command line + CTRL-U = display completions: user-defined + +### annoyances + gv = visual mode: reselect last selection + CTRL-o = lets the caret jump back to the previous location + CTRL-l = redraws the complete screen + CTRL-R = in insert mode and command line: paste contents of (e.g. : for last command, * for clipboard) + CTRL-R = in normal mode: redoes what has been undone with u + "p = in normal mode: paste paste contents of + +### registers + "/ = last search expression + ": = last command entered + "= = expression register (to do calculations or call vim functions) + +### netrw + :Lex = open the netrw-view as project drawer + gn = makes the directory under the cursor the root directory + a = toggles display of hidden files + +### filetype:css + + viB:sort = sort inner block by name + +### vim commands + + :for i in range(1,12) | put ='2016-'.i | endfor + +### debugging + + :profile! start /tmp/profile.log + :profile func * + :profile file * + " At this point do slow actions + :profdel * + :e /tmp/profile.log + " add a break point to a vim script (like vimrc) to invoke the internal debugger + :breakadd here + :finish = from within a viml-script: stop sourcing it + +### substitutions + + delete all comments: %s/\/\*\*< [^(\*\/)]*\*\///g + remove empty lines: global/^$/d + remove non-empty lines: v/^$/d + +### programs + + gpm - cut and paste helper for the linux console (to get text from CTRL-ALT-F2 to CTRL-ALT-F3) + +### vim modeline + + filetype can have multiple values, like python.django + The last line can be a mode line, which holds settings like tab width: -- cgit v1.2.3