## Vim Cheat Sheet ### Navigation - End of the file: `shift + g` - Next line: `j` - Go down a defined number of lines: `number + j` - Skip to next word: `w` - Skip back a word: `b` - Skip to next section: `W` - Skip back to previous section: `B` - Go to end of the line: `$` - Go to beginning of the line: `0` - Go to top of the screen: `shift + h` - Go to bottom of the screen: `shift + l` - Forward multiple words: `5w` - Forward multiple letters: `5l` - Back multiple letters: `5h` - Forward to the next 'y': `fy` (case sensitive) - `Ctrl-d` move half-page down - `Ctrl-u` move half-page up - `Ctrl-b` page up - `Ctrl-f` page down ### Editing - Undo: `u` - Redo: `ctrl + r` - Inserting text where the cursor is: `i` - Inserting text at the start of the line: `I` - Insert at the end of the line: `shift + a` - Copy entire line: `yy or Y` - Copy word: `yw` - Paste copied line: `p` - Paste from System Clipboard: `"+P` - Change multiple words: `5cw` - Insert at the end of the line: `A` - Append at end of word: `ea` - Insert at beginning of word: `bi` - Copy whole line to system clipboard (on mac os): `"*yy` ### Deleting - d will delete current and left character - d$ will delete from current position to end of line - d^ will delete from current backward to first non-white-space character - d0 will delete from current backward to beginning of line - dw deletes current to end of current word (including trailing space) - db deletes current to beginning of current word - `dt#{insert_character}` will delete up to but not including the character - `df#{insert_character}` will delete up to and including the character - Delete current line: dd - Join the line below: shift + j - Delete entire word: cw - Delete to the end of the line: shift + C - Delete multiple lines: d + number of lines + enter - Delete from current position to a specific line number: dG - Deleting all items in a file that start with a pattern: :g/< search term>/d - Deleting all lines that are empty or that contain only whitespace: :g/^\s*$/d ### Selecting - Select the entire line: V - Select a range of text: v - Select a column: control + v - Reselect a block: gv - Select all: ggVG ### Find and Replace - %s/pattern/text to replace ### Saving - Save the file: :w - Save the file and quit: :wq - Quit without saving: :q! ### Views - Use horizontal split: :sp filename - Use vertical split: :vsp filename - Switch from top to bottom: control + w + j - Switch from left to right: control + w + l - Switch from bottom to top: control + w + j - Switch from right to left: control + w + h #### Ctrlp plugin - Open file in vertical pane: `conrol + v` #### NERDTree Plugin - Open file in vertical pane: `s` - Open file and don't move focus it (preview it): `go` ### Search - While on current line: f + - Search for word in file: /word + enter - Find next search result: n - Search backwards: N - Go to first result: ggn - Go to last result: GN - To remove search highlighting: :noh ### Modes - Normal - Insert - Visual - Replace - Command Line ### Multiple Files - :e filename - Edit a file in a new buffer - :bnext (or :bn) - go to next buffer - :bprev (of :bp) - go to previous buffer - :bd - delete a buffer (close a file) - :sp filename - Open a file in a new buffer and split window - ctrl + ws - Split windows - ctrl + ww - switch between windows - ctrl + wq - Quit a window - ctrl + wv - Split windows vertically - `:qa` close all open vim windows - `:wqa` save work in all tabs and quit - `:ls` show all files in buffer (open) ### Indenting - Fix indenting when pasting: set paste in .vimrc file - Indenting: visual mode `+ >` or `<` - Repeat indenting: `.` (The period repeats the last action done) ## Commenting/Uncommenting - Comment: visual block select with CTRL-V then I# (insert # in the begining) - Uncomment: visual block select with CTRL-V then X (delete the first symbol on the line) ### Visual Mode - Changing multiple lines of text: control + v + shift + i + action + esc - Select elements in paragraph: v + / + content ### Display settings - Turning on line numbers: :set nu - Turning on syntax highlighting: :syntax on ### Reseting Vim Settings ``` cd mv .vimrc .vimrc-old mv .vim .vim-old touch .vimrc; mkdir .vim ``` ### Help - To get help: :h - To exit help: :bd ### Removing blocks of text in code files - `c + i + t` will remove the code between HTML tags, such as: `
Some content
` - `c + i + }` will remove the code inside of a JavaScript function ### Running terminal commands (without closing vim completely) - `:! ` ### Suspend File (close file without saving and without losing your work) - ` + z` - View "open files" with `jobs` - open job with `fg` - open specific job with `fg %` ### Running Macros - `qr` - Do the actions you want repeated - hit escape and then `q` - `3@r` the number can change for how many times you want to repeat ### Using grep for searching all files - `grep '' **/*.` use `-i` for case insensitive search #### Use within VIM - `:grep -ir '' .`. This willl open the first matched pattern, to browse through them use `:cn` and `:cp`. To see the quick list use `:copen` and `:cclose` to close the quickfix list. ### Running Javascript without saving file - `w !node` ### Personal settings #### Ruby Code ##### Seeing is Believing Plugin - Annotate every line: `,b` - Annotate marked lines: `,n` - Clean up annotations: `,c` #### Node Code ##### Vim-Node - Go to file path: `gf` - Look for keyword in required files: `[I`