北漂IT民工 的博客

100个程序员必须知道的Vim命令

100 Vim commands every programmer should know

Search/搜索

/word

Search “word” from top to bottom 从上向下搜索’word’

?word

Search “word” from bottom to top 从上向下搜索’word’

/jo[ha]n

Search “john” or “joan” 搜索”john”或”joan”

/< the

Search “the”, “theatre” or “then”

/the>

Search “the” or “breathe”

/< the>

Search “the”

/< ….>

Search all words of 4 letters

//

Search “fred” but not “alfred” or “frederick”

/fred|joe

Search “fred” or “joe”

/

Search exactly 4 digits

/^n{3}

Find 3 empty lines

:bufdo /searchstr/

Search in all open files





Replace

:%s/old/new/g

Replace all occurences of “old” by “new” in file

:%s/old/new/gw

Replace all occurences with confirmation

:2,35s/old/new/g

Replace all occurences between lines 2 and 35

:5,$s/old/new/g

Replace all occurences from line 5 to EOF

:%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/r//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

Vu

Lowercase line

VU

Uppercase line

g~~

Invert case

vEU

Switch word to uppercase

vE~

Modify word case

ggguG

Set all text to lowercase

: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/Write files

: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

:e .

Open integrated file explorer

:Sex

Split window and open integrated file explorer

: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

:!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

:%!fmt

Align all lines

!}fmt

Align all lines at the current position

5!!fmt

Align the next 5 lines





Tabs

: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





Window spliting

: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_

Maximise current window

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

:only

Close all windows, excepted current

:b 2

Open #2 in this window





Auto-completion

Ctrl+n Ctrl+p (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

mk

Marks current position as k

‘k

Moves cursor to mark k

d’k

Delete all until mark k





Abbreviations

:ab mail mail@provider.org

Define mail as abbreviation of mail@provider.org





Text indent

: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





Syntax highlighting

:syntax on

Turn on syntax highlighting

:syntax off

Turn off syntax highlighting

:set syntax=perl

Force syntax highlighting