summaryrefslogtreecommitdiffstats
path: root/content/posts/personal-vim-cheatsheet.md
diff options
context:
space:
mode:
authorbreadcat2020-06-19 12:23:15 +0100
committerbreadcat2020-06-19 12:23:15 +0100
commit70bb5d5a801428b0fb390abf79f19ffcf5e29c67 (patch)
treeb9fd7990156bd58bc38d58f91829c05933215102 /content/posts/personal-vim-cheatsheet.md
parent0f9a31348079c0a061bcc194912e75cc1c07bc1f (diff)
downloadblog.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.md118
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
+```