- Command Line
- Bash Scripting
- Curl
- Package Management
- Version Management
- Git
- Toolbox
- Virtualization
- Visual Studio Code
- Vim
- Boilerplates
- Hosting
- Basics
- Cheat Sheet
- Compose
- APIs
- CSS
- Concepts
- Date & Time
- Formatting
- Sass
- Bootstrap
- MySQL
Cheat Sheets
Tools
Docker
Guidelines
JavaScript
CSS
Databases
Tools - Vim
Table of Contents
Vim
Command Mode
Open and Quit
Action | Command |
---|---|
Open | vim filename |
Open file | :e filename |
Quit (no changes made) | :q |
Quit (ignore changes) | :q! |
Save | :w |
Save and quit | :wq |
Screen Management
Action | Command |
---|---|
List buffers | :ls |
Previous/next buffer | :bp / :bn |
Close buffer | :bd |
Open file splitting horizontally | :sp filename |
Open file splitting vertically | :svp filename |
Split horizontally | Ctrl + w , s |
Split vertically | Ctrl + w , v |
Switch window | Ctrl + w , w |
Switch to left, down, up, right window | Ctrl + w + h , j , k , l |
Quit window | Ctrl + w , q |
Tab Management
Action | Command |
---|---|
Open file in new tab | :tabedit filename |
List tabs | :tabs |
Previous/next tab | gT / gt |
Close tab | :tabclose |
Cursor
Action | Command |
---|---|
Move cursor | Arrow keys (left, down, up, right) or h , j , k , l |
Move cursor to top/middle/bottom of screen | H / M / L |
Previous/next word | b / w |
End of word | e |
Start/end of line | 0 or ^ / $ |
Previous/next sentence | ( / ) |
Previous/next block of text | { / } |
Previous/next page | Ctrl + b / Ctrl + f |
Start/end of file | gg / G |
First line | :0 |
Nth line | : N |
Last line | :$ |
Text Manipulation
Action | Command |
---|---|
UNDO | u |
REDO | Ctrl + r |
Repeat last action | . |
Edit text | i |
Highlight characters | v |
Highlight lines | V |
Copy word | yw |
Copy line | yy |
Copy multiple lines | Nyy |
Delete word | dw |
Delete line | dd |
Delete line from cursor | D |
Delete highlighted text | d |
Delete from cursor to | d0 (beginning of line), dgg / dG (beginning/end of file) |
Paste line | p |
Text Searching
Action | Command |
---|---|
Search text | /string |
Next occurrence | n |
Previous occurrence | N |
Replace pattern without confirming | %s/ pattern/ replacement/g |
Replace pattern confirming each time | %s/ pattern/ replacement/gc |
Source: https://www.keycdn.com/blog/vim-commands
Recommended Configuration
It may be necessary to create the ~/.vimrc
file if it is not created by default.
" Make vim indent 2 spaces for Ruby files only
:autocmd Filetype ruby set sw=2
:autocmd Filetype ruby set ts=2
" Auto-indent repeats the indentation of the previous line
:autocmd Filetype ruby set autoindent
" This makes the cursor go to the previous/next line when pressing left/right
" arrow keys when on the first/last column
:autocmd Filetype ruby set ww+=<,>
Source: https://www.fprintf.net/vimCheatSheet.html
Initial Setup
Install vim-plug, a Vim plugin manager.
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Options:
-f
: (HTTP) Fail silently (no output at all) on server errors.
-L
: (HTTP) If the server reports that the requested page has moved to a different location (indicated with a Location: header and a 3XX response code), this option will make curl redo the request on the new place.
-o
: Write output to
`--create-dirs`: When used in conjunction with the -o, --output option, curl will create the necessary local directory hierarchy as needed.
Edit ~/.vimrc
and add a section like the below:
" Plugins will be downloaded under the specified directory.
call plug#begin('~/.vim/plugged')
" Declare the list of plugins.
Plug 'scrooloose/nerdtree'
" List ends here. Plugins become visible to Vim after this call.
call plug#end()
Reload the file:
:source ~/.vimrc
Install the listed plugins:
:PlugInstall
Close the windows with q
after installation is finished.
Open NERDTree:
:NERDTree
Example .vimrc
syntax on
" Required to make lightline.vim work
set laststatus=2
" Unnecessary because of the use of lightline.vim
set noshowmode
" Display a line under the line where the cursor is
set cursorline
" Plugins will be downloaded under the specified directory.
call plug#begin('~/.vim/plugged')
" Declare the list of plugins.
Plug 'itchyny/lightline.vim'
" List ends here. Plugins become visible to Vim after this call.
call plug#end()