VIM: A Great Vim Cheat Sheet The article provides a comprehensive cheat sheet of essential Vim commands, organized by categories such as cursor movement, text editing, visual mode, and file management. It includes basic and advanced commands for navigation, searching, cutting and pasting, and working with multiple files. The summary notes that Vim requires configuration to be fully effective, as it is "painful without configuration." A Great Vim Cheat Sheet Note: If you’re decent at vim and want your mind blown, check out Advanced Vim. I’ve compiled a list of essential vim commands that I use every day. I then give a few instructions on how to making vim as great as it should be, because it’s painful without configuration. Cursor movement Inside command/normal mode w - jump by start of words punctuation considered words W - jump by words spaces separate words e - jump to end of words punctuation considered words E - jump to end of words no punctuation b - jump backward by words punctuation considered words B - jump backward by words no punctuation 0 - zero start of line^ - first non-blank character of line same as 0w $ - end of line- Advanced in order of what I find useful Ctrl+d - move down half a pageCtrl+u - move up half a page} - go forward by paragraph the next blank line { - go backward by paragraph the next blank line gg - go to the top of the pageG - go the bottom of the page: num enter - Go To that line in the document- Searching f char - Move to the next char on the current line after the cursorF char - Move to the next char on the current line before the cursort char - Move to before the next char on the current line after the cursorT char - Move to before the next char on the current line before the cursor- All these commands can be followed by ; semicolon to go to the next searched item, and, comma to go the the previous searched item Insert/Appending/Editing Text - Results in insert mode i - start insert mode at cursorI - insert at the beginning of the linea - append after the cursorA - append at the end of the lineo - open append blank line below current line no need to press return O - open blank line above current linecc - change replace an entire linec movement command - change replace from the cursor to the move-to point.- ex. ce changes from the cursor to the end of the cursor word - Esc - exit insert mode r char - replace a single character with the specified char does not use insert mode d - deleted - movement command deletes from the cursor to the move-to point.- ex. de deletes from the cursor to the end of the current word dd - delete the current line- Advanced J - join line below to the current one Marking text visual mode v - starts visual mode- From here you can move around as in normal mode hjkl etc. and can then do a command such as y ,d , orc - From here you can move around as in normal mode hjkl etc. and can then do a command such as V - starts linewise visual modeCtrl+v - start visual block modeEsc - exit visual mode- Advanced O - move to Other corner of blocko - move to other end of marked area Visual commands Type any of these while some text is selected to apply the action y - yank copy marked textd - delete marked textc - delete the marked text and go into insert mode like c does above Cut and Paste yy - yank copy a linep - put paste the clipboard after cursorP - put paste before cursordd - delete cut a linex - delete cut current characterX - delete previous character like backspace Exiting :w - write save the file, but don't exit:wq - write save and quit:q - quit fails if anything has changed :q - quit and throw away changes Search/Replace /pattern - search for pattern?pattern - search backward for patternn - repeat search in same directionN - repeat search in opposite direction:%s/old/new/g - replace all old with new throughout file gn is better though :%s/old/new/gc - replace all old with new throughout file with confirmations Working with multiple files :e filename - Edit a file:tabe - make a new tabgt - go to the next tabgT - go to the previous tab- Advanced :vsp - vertically split windowsctrl+ws - Split windows horizontallyctrl+wv - Split windows verticallyctrl+ww - switch between windowsctrl+wq - Quit a window Marks Marks allow you to jump to designated points in your code. m{a-z} - Set mark {a-z} at cursor position- A capital mark {A-Z} sets a global mark and will work between files ‘{a-z} - move the cursor to the start of the line where the mark was set‘’ - go back to the previous jump location General u - undoCtrl+r - redo. - repeat last command Making Vim actually useful Vim is quite unpleasant out of the box. For example, typeing :w for every file save is awkward and copying and pasting to the system clipboard does not work. But a few changes will get you much closer to the editor of your dreams. .vimrc - My .vimrc file has some pretty great ideas I haven't seen elsewhere. - This is a minimal vimrc that focuses on three priorities: - adding options that are strictly better like more information showing in autocomplete - more convenient keystrokes like space w for write, instead of:w enter - a similar workflow to normal text editors like enabling the mouse - Copy this to your home directory and restart vim. Read through it to see what you can now do like space w to save a file - mac users - making a hidden normal file is suprisingly tricky. Here’s one way: - in the command line, go to the home directory - type nano .vimrc - paste in the contents of the .vimrc file ctrl+x ,y , enter to save - mac users - making a hidden normal file is suprisingly tricky. Here’s one way: - You should now be able to press space w in normal mode to save a file. space p should paste from the system clipboard outside of vim .- If you can’t paste, it’s probably because vim was not built with the system clipboard option. To check, run vim --version and see if+clipboard exists. If it says-clipboard , you will not be able to copy from outside of vim. - For mac users, homebrew install vim with the clipboard option. Install homebrew and then run brew install vim .- then move the old vim binary: $ mv /usr/bin/vim /usr/bin/vimold - restart your terminal and you should see vim --version now with+clipboard - then move the old vim binary: - If you can’t paste, it’s probably because vim was not built with the system clipboard option. To check, run Plugins - The easiest way to make vim more powerful is to use Vintageous in sublime version 3 . This gives you Vim mode inside sublime. I suggest this or a similar setup with the Atom editor if you aren't a vim master. Check out Advanced Vim if you are. - Vintageous is great, but I suggest you change a few settings to make it better. - Clone this repository to ~/.config/sublime-text-3/Packages/Vintageous , or similar. Then check out the "custom" branch.- Alternatively, you can get a more updated Vintageous version by cloning the official repo and then copying over this patch. - Change the user settings User/Preferences.sublime-settings to include:"caret style": "solid" - This will make the cursor not blink, like in vim. - sublime might freeze when you do this. It’s a bug; just restart sublime after changing the file. ctrl+r in vim means "redo". But there is a handy ctrl+r shortcut in sublime that gives an "outline" of a file. I remapped it to alt+r by putting this in the User keymap{ "keys": "alt+r" , "command": "show overlay", "args": {"overlay": "goto", "text": "@"} }, - Add the ability to toggle vintageous on and off - Mac users: you will not have the ability to hold down a navigation key like holding j to go down . To fix this, run the commands specified here: https://gist.github.com/kconragan/2510186 - Clone this repository to - Now you should be able to restart sublime and have a great vim environment Sweet Dude. Switch Caps Lock and Escape - I highly recommend you switch the mapping of your caps lock and escape keys. You'll love it, promise Switching the two keys is platform dependent; google should get you the answer Other I don’t personally use these yet, but I’ve heard other people do :wqa - Write and quit all open tabs thanks Brian Zick