Vim is a highly configurable text editor built to make creating and changing any kind of text very efficient. It is an improved fork of vi.
sudo apt install vim [ Debian/Ubuntu ]
sudo yum install vim [ RedHat/CentOS ]
sudo pacman -S vim [ Arch/Manjaro ]
sudo dnf install vim [ Fedora ]
sudo zypper install vim [ OpenSUSE ]
:q | Exit |
:q! / ZQ | Forceful exit |
:wq / :x / ZZ | Save and exit |
:qa | Exit all |
:w | Save |
Esc / Ctrl + [ | Enter command mode |
. | Repeat last command |
u | Undo |
Ctrl + r | Redo |
:n / nG | Jump to $n^{th}$ line |
j | Move cursor down |
k | Move cursor up |
h | Move cursor left |
l | Move cursor right |
H | Move to top of screen |
M | Move to middle of sreen |
L | Move to end of screen |
zz | Move to center of the screen |
zt | Scroll current line to top of the page |
zb | Scroll current line to bottom of the page |
G | Jump to end of the file |
gg | Jump to top of the file |
g_ | Jump to the last non-blank line of the file |
0 | Jump to the start of the line |
^ | Jump to the first non-blank character of the line |
$ | Jump to the end of the line |
% | Jump to matching parenthesis |
w | Jump to beginning of the next word |
e | Jump to end of the current word |
w | Jump to beginning of the current word |
i | Insert before the cursor |
a | Insert after the cursor |
I | Insert at the beginning of the line |
A | Insert at the end of the line |
o | Insert new line below |
O | Insert new line above |
r | Replace single character |
R | Enter replace mode |
bi | Insert at the beginning of the word |
ea | Insert at the end of the word |
~ | Toggle case of the current character |
g~iw | Toggle case of the current word |
g~$ | Toggle case of all characters to end of line |
g~~ | Toggle case of the current line |
y | Copy(yank) selected text |
yy / Y | Copy current line |
Y$ | Copy from cursor till end of the end |
yw | Copy from cursor till the next word |
y + i or a + w | Copy word under the cursor excluding/including whitespaces |
y + t or f + # | Copy from cursor till # (excluding/including #) |
y + { or } | Copy till next/previous block |
p | Paste after cursor |
P | Paste before the cursor |
gp | Paste after the cursor and move to next block |
x | Delete(cut) single character |
d | Delete(cut) mark text |
D | Delete(cut) from cursor till the end of the line |
dd | Delete(cut) current line |
dw | Delete(cut) from cursor till the next word |
d + i or a + w | Delete(cut) word under the cursor excluding/including whitespaces |
d + t or f + # | Delete(cut) from cursor till # (excluding/including #) |
d + { or } | Delete(cut) till next/previous block |
c | Delete(cut) mark text in insert mode |
C | Delete(cut) from cursor till the end of the line in insert mode |
cc | Delete(cut) current line in insert mode |
cw | Delete(cut) from cursor till the next word in insert mode |
c + i or a + w | Delete(cut) word under the cursor excluding/including whitespaces in insert mode |
c + t or f + # | Delete(cut) from cursor till # (excluding/including #) in insert mode |
c + { or } | Delete(cut) till next/previous block in insert mode |
* | Next instance of the word under cursor |
# | Previous instance of the word under cursor |
n | Next matching search pattern |
N | Previous matching search pattern |
q | Start recording macro |
q | Stop recording marcro |
@ | Run recorded macro |
@@ | Rerun last macro |
:tabe | Open file in a new tab |
:tabp | Go to previous tab |
:tabn | Go to next tab |
:tabs | List all the tabs |
:tabfirst | Go to the fist tab |
:tablast | Go to the last tab |
:tabclose | Close current tab |
To install vim plugins, I prefer vim-plug.
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
ni $HOME/vimfiles/autoload/plug.vim -Force
Then append the following section to your .vimrc file.
call plug#begin('~/.vim/plugged')
Plug 'user/repo'
OR
Plug 'git URL'
call plug#end()
Command | Usage |
---|---|
:PlugInstall | Installs a plugin |
:PlugUninstall | Uninstalls a plugin |
:PlugUpdate | Updates all the plugins |
:PlugUpgrade | Updates vim-plug |