Vim
A Wikibookian suggests that this book or chapter be merged into Learning the vi Editor/Vim because: Commands look basically correct. We should merge with the page we already have on vim if is not already covered there and redirect. Please discuss whether or not this merge should happen on the discussion page. |
- $ vim xxx yyy zzz - open one or more files
- (-R: open as read-only; +n: skip to line n; +/xxx: skip to string xxx;)
vim . - browse current directory
Modes
esc - goto command mode
i,I,a,A,o,O - goto insert mode
v,V,Ctrl+v - goto visual mode
Colon Commands
w - save
w myfile - save as myfile
q - quit
r myfile - paste myfile at the cursor of the current file
e myfile - edit myfile, close current file
f - show file properties
n - open next vi file in arguments list
!xxx - run xxx in the shell
!!xxx - replace current line with result of shell command xxx
!}xxx - replace current paragraph with the result shell command xxx
map - show key mappings
map key cmd - map vi cmd to key
. - show line numbers
set nonumber - turn off line numbering
- s/old/new/ - search and replace
%s/search/&/g - search and count matches
1,$ s/old/new/g - global replace
g/^$/d - delete all blank lines
/xxx - search down for xxx
?xxx - search up for xxx
Search Commands
/ - RegExp search
n - repeat last search(find next)
/↑ - edit last search
Control Commands
Ctrl-b - page up
Ctrl-f - page down
Ctrl-u - half page up
Ctrl-d - half page down
Editing
a - append after cursor
A - append after current line
i - insert before cursor
r - replace at cursor
~ - transpose case of text at cursor
R - replace from cursor to end of new text
o - open newline after cursor
O - open newline before cursor
u - undo last action
Ctrl+R - redo last action
U - undo current line
yy - copy current line
nyy - copy n lines from current line
y/string/ copy from the cursor positon to the string's position, searching forward
y?string? copy from the string's position to the cursor, searchingbackward
p - paste
ddp - cut and paste current line
dd - delete current line
dw - delete current word
d$ - delete from cursor to end of line
D - delete from cursor to end of line
cc - change current line
cw - change current word
c$ - change from cursor to end of line
C - change from cursor to end of line
s - change current symbol
S - change current line
Cursor Movement
h/j/k/l - move left/down/up/right
w - move forward word-by-word
b - move backward word-by-word
e - move to end of current word
W - same as w but only uses space as delimiter
B - same as b but only uses space as delimiter
E - same as e but only uses space as delimiter
} - move forward one paragraph
{ - move backward one paragraph
) - move forward one line
( - move backward one line
^ - first non-blank character
0 - start of current line
$ - end of current line
gg - top of the file
G - bottom of the file
ngg - go to line n
nG - same as ngg
% - find match of current brace in the cursor
To store a session:
:mksession
To load a session while starting vim:
$ vim -S Session.vim
To load a session while in vim:
:so Session.vim
Retab one or more files from the command line
$ vim -c retab -c wq <filename(s)>
Wscript
Avoid setting the file type to python by including these lines in ~/.vimrc
1 autocmd BufRead,BufNewFile wscript set filetype = python
Clear highlighted search terms
:let @/=""
Paste indented code into vim from another application
:set paste <Terminal paste command> :set nopaste
Redirect Terminal output to Vim
repoquery -lq *gstreamer* |vim -
Write and quit a file
Shift + zz
Read blocks of text from other file
:r! sed -n 12,40p filename
This will paste line contents from line number 12 to 40 in current file
Save a file which requires sudo permission without exiting the file
:w !sudo tee % You can add following line to your .vimrc to make this trick easy-to-use: just type :w!!.
cmap w!! %!sudo tee > /dev/null %
Word wrap
set wrap
Auto Indentation
Select the block(visual mode) you want to auto indent and just press "=" button.
Copy a file to current position
eg: 44t.
Move a line to another position
eg: 4m5
Indent a line
shift + >> shift + <<
Delete a block
eg: 1,10 d
Set/Unset Line numbers
:set nu :set nonu
See/Hide special characters in vim
:set list :set nolist
Must use Vim Plugins
NERDTree
Open and edit your files more efficiently.
Nerd Commenter
Comment or un-comment multiple lines with keys.This plugins detects the file type and apply's the correct comment syntax.It even supports Vim's visual mode.
Taglist
List and jump to functions quickly.This requires that you have ctags installed .