diff options
author | breadcat | 2020-06-19 12:23:15 +0100 |
---|---|---|
committer | breadcat | 2020-06-19 12:23:15 +0100 |
commit | 70bb5d5a801428b0fb390abf79f19ffcf5e29c67 (patch) | |
tree | b9fd7990156bd58bc38d58f91829c05933215102 /content/posts/personal-vim-cheatsheet.md | |
parent | 0f9a31348079c0a061bcc194912e75cc1c07bc1f (diff) | |
download | blog.minskio.co.uk-70bb5d5a801428b0fb390abf79f19ffcf5e29c67.tar.gz blog.minskio.co.uk-70bb5d5a801428b0fb390abf79f19ffcf5e29c67.tar.bz2 blog.minskio.co.uk-70bb5d5a801428b0fb390abf79f19ffcf5e29c67.zip |
Simple migration of existing posts to hugo format
Diffstat (limited to 'content/posts/personal-vim-cheatsheet.md')
-rw-r--r-- | content/posts/personal-vim-cheatsheet.md | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/content/posts/personal-vim-cheatsheet.md b/content/posts/personal-vim-cheatsheet.md new file mode 100644 index 0000000..a792810 --- /dev/null +++ b/content/posts/personal-vim-cheatsheet.md @@ -0,0 +1,118 @@ +--- +title: "Personal VIM cheatsheet" +date: 2020-06-14T12:58:00 +tags : [ "guides", "learning", "linux", "servers", "snippets", "software", ] +--- + +When editing files on Linux, I've always used `nano`, it was always installed and `vi` just seemed incredibly awkward to use, with all the memes about never being able to exit, and weird things happening being right up my street. I'd tried `vimtutor` but was left in pretty much the same place as I started. + +So, when the venerable [Luke Smith](https://lukesmith.xyz/) posted an [hour long walkthrough](https://www.youtube.com/watch?v=d8XtNXutVto) of his methods for completing vimtutor, I was hooked. + +I've now moved all my Linux machines over to neovim and haven't looked back. Without further ado I present the notes cheatsheet that I made while watching the video, for future reference: + +``` +ZZ quit with saving +ZQ quit, without saving +zt makes current line the topmost +zz centre window around current line + +A enters insert mode at the end of the line +I enters insert mode at the start of the line +a enters insert mode after current character +i enters insert mode before current character + +Ctrl + r redo changes +Ctrl + g shows location status bar +gg go to the top line +G go to last line +25% move to 25% of the way through the file +'' move back to previous location before % movement +u undoes changes + +v start visual selection/highlighting +Ctrl + v start visual selection as a block +v start visual selection/highlighting, using complete lines + +gf open written filename in text, in vim + +y yank/copy +yy yank whole line + +. redo last command run + +w move forwards word by word +b move backwards word by word + +/ search for text going forwards +/ enter n next search result +/ enter N previous search result +? search for text going backwards +:set ic toggles case insensitivty +:set hlsearch highlights search results +:nohlsearch disables highlighted search results + +r replace current letter with next letter you type +R replace mode, more than one character, but exact length matching + +{ move cursor up 4 lines at a time +} move cursor down 4 lines at a time + +v enters visual mode +V enters visual mode, whole lines + +$ move to the end of the line +^ move to the start of the line +% jump to matching parenthesis + +:s/old/new/ replace old with new once on a line +:s/old/new/g replace old with new every time on a line +:%s/old/new/g replace old with new every time in the whole file +:%s/old/new/gc replace old with new every time in the whole file, but prompting beforehand + +:! run shell command + +:norm run command on highlighted lines + +:setlocal spell! spelllang=en_gb start spellcheck +:setlocal spell! stop spellcheck +z= correct misspelled word when highlighted +]s jumps to next misspelled word + +p put/paste previously deleted lines +5p paste, 5 times + +x delete character under cursor +dw delete word (at the start of the word) +daw delete whole word including whitespace +diw delete whole word, excluding whitespace +di( delete everything inside parentheis +da( delete everything inside, and including parenthesis +dw delete word (current word, anywhere) +d$ delete the remainder of the line +D delete the remainder of the line +db delete one word backwards +d5w deletes 5 words forwards +dd deletes the whole line +3dd deletes the next 3 lines + +c change mode, same as d, but goes to insert mode after +cw delete word, then enter insert mode +o insert new line and enter insert mode +O insert new line above current and enter insert mode + +0 move to start of line +2w move 2 words to the left + +:earlier 5m undo 5 minutes worth of changes +:later 5m redo 5 minutes worth of changes after undoing +``` + +One nice bonus that I picked up on from Lukes dotfiles was fixing line endings to the Linux format on every save which is just great. + +Add the below to your `init.vim` file (if using neovim): + +``` +" Automatically deletes all trailing whitespace and newlines at end of file on save. + autocmd BufWritePre * %s/\s\+$//e + autocmd BufWritepre * %s/\n\+\%$//e +``` |