- Vim Cheat Sheet Pdf
- Vim Cheat Sheet Download
- Vim Cheat Sheet Pdf For Mac Os
- Vim Cheat Sheets Pdf
- Vim Editor Cheat Sheet
Mac Terminal Cheat Sheet. GitHub Gist: instantly share code, notes, and snippets. LINUX COMMANDS CHEAT SHEET System dmesg = Displays bootup messages cat /proc/cpuinfo = Displays more information about CPU e.g model, model name, cores, vendor id cat /proc/meminfo = Displays more information about hardware memory e.g. Total and Free memory lshw =Displays information about system’s hardware configuration.
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 have then given a few instructions on how to make 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 most 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 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
orCtrl+[
- exit insert moder [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 (
h
,j
,k
,l
etc.) and can then do a command (such asy
,d
, orc
)
- From here you can move around as in normal mode (
V
- starts linewise visual modeCtrl+v
- start visual block modeEsc
orCtrl+[
- 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
Vim is quite unpleasant out of the box. For example, typing :w
for every file save is awkward and copying and pasting to the system clipboard does not work. However, 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)
Installation
- 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 Text (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 repository 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 Text might freeze when you do this. It’s a bug; just restart Sublime Text after changing the file.
ctrl+r
in Vim means “redo”. But there is a handy Ctrl + R shortcut in Sublime Text 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': '@'} },
- 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)
Since the 1970’s, Vi and its successor Vim have been included by default on many operating systems, including almost all GNU/Linux distributions.
Vim is free and open-source and is one of the most popular code editors. It can be downloaded on Vim official site.
Vim is a modal text editor, which means that it has a mode for writing text, a mode for running commands, etc.
Vim has a total of 12 different editing modes.
The three main modes are:
- Command mode (also sometimes reffered to as Normal mode) is where you can run commands. This is the default mode in which Vim starts up.
- Insert mode is the mode where you insert/write your text.
- Visual mode is where you visually select a bunch of text so that you can run a command/operation only on that part of the text.
Basic Vim Commands
Let’s start with an easy set of Vim commands to open, save, and exit Vim.
:e filename | Open filename for edition |
:w | Save file |
:q | Exit Vim |
:q! | Quit without saving |
:x | Write file (if changes has been made) and exit |
:sav filename | Saves file as filename |
. | Repeats the last change made in normal mode |
Moving in the File
While in command mode, the following set of commands will allow you to easily move the cursor in the file, jump to a particular line number, or set the cursor position at the beginning of the file.
k or Up Arrow | move the cursor position up one line |
j or Down Arrow | move the cursor down one line |
e | move the cursor to the end of the word |
b | move the cursor to the begining of the word |
0 | move the cursor to the begining of the line |
G | move the cursor to the end of the file |
gg | move the cursor to the begining of the file |
L | move the cursor to the bottom of the screen |
:59 | move cursor to line number 59. Replace 59 by the desired line number. |
% | Move cursor to matching parenthesis |
[[ | Jump to function start |
[{ | Jump to block start |
Cut, Copy & Paste
Here are some basic Vim commands to cut, copy and paste portions of text. All the commands below has to be ran in command mode.
y | Copy the selected text to clipboard |
p | Paste clipboard contents |
dd | Cut current line |
yy | Copy current line |
y$ | Copy to end of line |
D | Cut to end of line |
Search
In command mode, you can easily search for any string within a file. This is extremely useful for developers and sysadmins alike.
/word | Search word from top to bottom |
?word | Search word from bottom to top |
* | Search the word under cursor |
/cstring | Search STRING or string, case insensitive |
/jo[ha]n | Search john or joan |
/< the | Search the, theatre or then |
/the> | Search the or breathe |
/fred|joe | Search fred or joe |
/<dddd> | Search exactly 4 digits |
/^n{3} | Find 3 empty lines |
:bufdo /searchstr/ | Search in all open files |
bufdo %s/something/somethingelse/g | Search something in all the open buffers and replace it with somethingelse |
Replace
Vim command line tool is extremely useful to replace many occurences of a string by another within a file. Using more advanced commands, there are a lot of search and replace options available.
:%s/old/new/g | Replace all occurences of old by new in file |
:%s/onward/forward/gi | Replace onward by forward, case unsensitive |
:%s/old/new/gc | Replace all occurences with confirmation |
:%s/^/hello/g | Replace the begining of each line by hello |
:%s/$/Harry/g | Replace the end of each line by Harry |
:%s/onward/forward/gi | Replace onward by forward, case unsensitive |
:%s/ *$//g | Delete all white spaces |
:g/string/d | Delete all lines containing string |
:v/string/d | Delete all lines containing which didn’t contain string |
:s/Bill/Steve/ | Replace the first occurence of Bill by Steve in current line |
:s/Bill/Steve/g | Replace Bill by Steve in current line |
:%s/Bill/Steve/g | Replace Bill by Steve in all the file |
:%s/^M//g | Delete DOS carriage returns (^M) |
:%s/r/r/g | Transform DOS carriage returns in returns |
:%s#<[^>]+>##g | Delete HTML tags but keeps text |
:%s/^(.*)n1$/1/ | Delete lines which appears twice |
Ctrl+a | Increment number under the cursor |
Ctrl+x | Decrement number under cursor |
ggVGg? | Change text to Rot13 |
Case
Vim has some powerful commands to modify the case of text. All the commands below have to be run in command mode.
Vu | Lowercase line |
VU | Uppercase line |
g~~ | Invert case |
vEU | Switch word to uppercase |
vE~ | Modify word case |
ggguG | Set all text to lowercase |
gggUG | Set all text to uppercase |
:set ignorecase | Ignore case in searches |
:set smartcase | Ignore case in searches excepted if an uppercase letter is used |
:%s/<./u&/g | Sets first letter of each word to uppercase |
:%s/<./l&/g | Sets first letter of each word to lowercase |
:%s/.*/u& | Sets first letter of each line to uppercase |
:%s/.*/l& | Sets first letter of each line to lowercase |
Read and Write Files
Vim is clearly one of the most powerful text editors available. This section shows how you can manipulate files, insert the content of a file into another, and export portions of a file into a new file.
:1,10 w outfile | Saves lines 1 to 10 in outfile |
:1,10 w >> outfile | Appends lines 1 to 10 to outfile |
:r infile | Insert the content of infile |
:23r infile | Insert the content of infile under line 23 |
File Explorer
Vim features a built in file explorer, which allows you to explorer the content of your server without exiting the text editor.
:e . | Open integrated file explorer |
:Sex | Split window and open integrated file explorer |
:Sex! | Same as :Sex but split window vertically |
:browse e | Graphical file explorer |
:ls | List buffers |
:cd .. | Move to parent directory |
:args | List files |
:args *.php | Open file list |
:grep expression *.php | Returns a list of .php files contening expression |
gf | Open file name under cursor |
Interact With Unix
Vim is installed by default on most Unix based operating systems, including Mac OS and most GNU/Linux distros. It therefore feature various commands that allows you to interact with the OS.
Vim Cheat Sheet Pdf
:!pwd | Execute the pwd unix command, then returns to Vi |
!!pwd | Execute the pwd unix command and insert output in file |
:sh | Temporary returns to Unix |
$exit | Retourns to Vi |
Alignment
In command mode, you can quickly and easily align a file’s lines for better clarity.
:%!fmt | Align all lines |
!}fmt | Align all lines at the current position |
5!!fmt | Align the next 5 lines |
Tabs and Windows
One of my favorite Vim options is the ability to use tabs to edit various files at the same time. The following Vim commands will let you open, close, and organize your tabs for better productivity.
:tabnew | Creates a new tab |
gt | Show next tab |
:tabfirst | Show first tab |
:tablast | Show last tab |
:tabm n(position) | Rearrange tabs |
:tabdo %s/foo/bar/g | Execute a command in all tabs |
:tab ball | Puts all open files in tabs |
:new abc.txt | Edit abc.txt in new window |
Window Spliting
Vim allows you to split the screen horizontally or vertically, so you can edit many files at once using the insert mode.
:e filename | Edit filename in current window |
:split filename | Split the window and open filename |
ctrl-w up arrow | Puts cursor in top window |
ctrl-w ctrl-w | Puts cursor in next window |
ctrl-w_ | Maximize current window vertically |
ctrl-w| | Maximize current window horizontally |
ctrl-w= | Gives the same size to all windows |
10 ctrl-w+ | Add 10 lines to current window |
:vsplit file | Split window vertically |
:sview file | Same as :split in readonly mode |
:hide | Close current window |
:nly | Close all windows, excepted current |
:b 2 | Open #2 in this window |
Auto-Completion
Vim can use external dictionaries to provide auto-completion. This can be a real time saver, so pay attention to the commands below if you want to speed up your workflow.
Ctrl+n Ctrl+p (To be used in insert mode) | Complete word |
Ctrl+x Ctrl+l | Complete line |
:set dictionary=dict | Define dict as a dictionnary |
Ctrl+x Ctrl+k | Complete with dictionnary |
Marks
When editing large files, it can be tricky to move in the file and remember important sections. Happilly, Vim allows its users to create marks that can easily be accessed later. No need to remember a dozen of line numbers anymore!
m {a-z} | Marks current position as {a-z} |
‘ {a-z} | Move to position {a-z} |
” | Move to previous position |
Abbreviations
This little known trick lets you define abbreviations that can be reused later and as many times as needed.
Vim Cheat Sheet Download
:ab mail mail@provider.org | Define mail as abbreviation of mail@provider.org |
Vim Cheat Sheet Pdf For Mac Os
Text Indentation
Text indentation is vital when it comes to code readability. Luckily, Vim has a set of commands for the text editor to indent your lines in a clear and readable manner.
Vim Cheat Sheets Pdf
:set autoindent | Turn on auto-indent |
:set smartindent | Turn on intelligent auto-indent |
:set shiftwidth=4 | Defines 4 spaces as indent size |
ctrl-t, ctrl-d | Indent/un-indent in insert mode |
>> | Indent |
<< | Un-indent |
=% | Indent the code between parenthesis |
1GVG= | Indent the whole file |
Frequently Asked Questions
How do I Type Commands in Vim?
To type commands, you have to first activate Vim’s command mode. To do so, press the Esc
key of your keyboard. You can then type any command of your choice.
How do I Start Typing Text in Vim?
Vim must be in insert mode for you to type text. Simply press the i
key when in command mode to enter the insert mode.
Vim Editor Cheat Sheet
On Which Hosting Plans Can You Use Vim?
Basically any Linux hosting will have Vim installed on the server. As long as you are able to access your server via SSH, you’ll be able to use Vim. Please refer to our best web hosting for developers guide to find out which hosts provide a SSH access.