Vim cheat sheet:修订间差异
imported>Soleverlee |
imported>Soleverlee |
||
第1行: | 第1行: | ||
= | =基础= | ||
{| class="wikitable" border="1" | {|class="wikitable" border="1" | ||
|- | |- | ||
! style="width: | !style="width:300px"|命令||style="width:400px"|用途 | ||
|- | |- | ||
|<code>: | |<code>:e filename</code>||Open filename for edition | ||
|- | |- | ||
|<code>: | |<code>:w</code>||Save file | ||
|- | |- | ||
|<code>:q | |<code>:q</code>||Exit Vim | ||
|- | |- | ||
|<code>: | |<code>:q!</code>||Quit without saving | ||
|- | |- | ||
|<code>: | |<code>:x</code>||Write file (if changes has been made) and exit | ||
|- | |- | ||
|<code> | |<code>:sav filename</code>||Saves file as filename | ||
|- | |- | ||
|<code>5 | |<code>.</code>||Repeats the last change made in normal mode | ||
|- | |||
|<code>5</code>||Repeats 5 times the last change made in normal mode | |||
|- | |- | ||
|} | |} | ||
=在文件中移动= | |||
{|class="wikitable" border="1" | |||
|- | |||
!style="width:300px"|命令||style="width:400px"|用途 | |||
|- | |||
|<code>k or Up Arrow</code>||move the cursor up one line | |||
|- | |||
|<code>j or Down Arrow</code>||move the cursor down one line | |||
|- | |||
|<code>e</code>||move the cursor to the end of the word | |||
|- | |||
|<code>b</code>||move the cursor to the begining of the word | |||
|- | |||
|<code>0</code>||move the cursor to the begining of the line | |||
|- | |||
|<code>G</code>||move the cursor to the end of the line | |||
|- | |||
|<code>gg</code>||move the cursor to the begining of the file | |||
|- | |||
|<code>L</code>||move the cursor to the end of the file | |||
|- | |||
|<code>:59</code>||move cursor to line 59. Replace 59 by the desired line number. | |||
|- | |||
|<code>20|</code>||move cursor to column 20. | |||
|- | |||
|<code>%</code>||Move cursor to matching parenthesis | |||
|- | |||
|<code>[[</code>||Jump to function start | |||
|- | |||
|<code>[{</code>||Jump to block start | |||
|- | |||
|} | |||
=剪切、复制和粘贴= | |||
{|class="wikitable" border="1" | |||
|- | |||
!style="width:300px"|命令||style="width:400px"|用途 | |||
|- | |||
|<code>y</code>||Copy the selected text to clipboard | |||
|- | |||
|<code>p</code>||Paste clipboard contents | |||
|- | |||
|<code>dd</code>||Cut current line | |||
|- | |||
|<code>yy</code>||Copy current line | |||
|- | |||
|<code>y$</code>||Copy to end of line | |||
|- | |||
|<code>D</code>||Cut to end of line | |||
|- | |||
|} | |||
=搜索= | |||
{|class="wikitable" border="1" | |||
|- | |||
!style="width:300px"|命令||style="width:400px"|用途 | |||
|- | |||
|<code>/word</code>||Search word from top to bottom | |||
|- | |||
|<code>?word</code>||Search word from bottom to top | |||
|- | |||
|<code>*</code>||Search the word under cursor | |||
|- | |||
|<code>/\cstring</code>||Search STRING or string, case insensitive | |||
|- | |||
|<code>/jo[ha]n</code>||Search john or joan | |||
|- | |||
|<code>/\< the</code>||Search the, theatre or then | |||
|- | |||
|<code>/the\></code>||Search the or breathe | |||
|- | |||
|<code>/\< the\></code>||Search the | |||
|- | |||
|<code>/\< ¦.\></code>||Search all words of 4 letters | |||
|- | |||
|<code>/\/</code>||Search fred but not alfred or frederick | |||
|- | |||
|<code>/fred\|joe</code>||Search fred or joe | |||
|- | |||
|<code>/\<\d\d\d\d\></code>||Search exactly 4 digits | |||
|- | |||
|<code>/^\n\{3}</code>||Find 3 empty lines | |||
|- | |||
|<code>:bufdo /searchstr/</code>||Search in all open files | |||
|- | |||
|<code>bufdo %s/something/somethingelse/g</code>||Search something in all the open buffers and replace it with somethingelse | |||
|- | |||
|} | |||
=替换= | |||
{|class="wikitable" border="1" | |||
|- | |||
!style="width:300px"|命令||style="width:400px"|用途 | |||
|- | |||
|<code>:%s/old/new/g</code>||Replace all occurences of old by new in file | |||
|- | |||
|<code>:%s/onward/forward/gi</code>||Replace onward by forward, case unsensitive | |||
|- | |||
|<code>:%s/old/new/gc</code>||Replace all occurences with confirmation | |||
|- | |||
|<code>:2,35s/old/new/g</code>||Replace all occurences between lines 2 and 35 | |||
|- | |||
|<code>:5,$s/old/new/g</code>||Replace all occurences from line 5 to EOF | |||
|- | |||
|<code>:%s/^/hello/g</code>||Replace the begining of each line by hello | |||
|- | |||
|<code>:%s/$/Harry/g</code>||Replace the end of each line by Harry | |||
|- | |||
|<code>:%s/onward/forward/gi</code>||Replace onward by forward, case unsensitive | |||
|- | |||
|<code>:%s/ *$//g</code>||Delete all white spaces | |||
|- | |||
|<code>:g/string/d</code>||Delete all lines containing string | |||
|- | |||
|<code>:v/string/d</code>||Delete all lines containing which didn’t contain string | |||
|- | |||
|<code>:s/Bill/Steve/</code>||Replace the first occurence of Bill by Steve in current line | |||
|- | |||
|<code>:s/Bill/Steve/g</code>||Replace Bill by Steve in current line | |||
|- | |||
|<code>:%s/Bill/Steve/g</code>||Replace Bill by Steve in all the file | |||
|- | |||
|<code>:%s/^M//g</code>||Delete DOS carriage returns (^M) | |||
|- | |||
|<code>:%s/\r/\r/g</code>||Transform DOS carriage returns in returns | |||
|- | |||
|<code>:%s#<[^>]\+> | |||
|-g</code>||Delete HTML tags but keeps text | |||
|- | |||
|<code>:%s/^\(.*\)\n\1$/\1/</code>||Delete lines which appears twice | |||
|- | |||
|<code>Ctrl+a</code>||Increment number under the cursor | |||
|- | |||
|<code>Ctrl+x</code>||Decrement number under cursor | |||
|- | |||
|<code>ggVGg?</code>||Change text to Rot13 | |||
|- | |||
|} | |||
=大小写= | |||
{|class="wikitable" border="1" | |||
|- | |||
!style="width:300px"|命令||style="width:400px"|用途 | |||
|- | |||
|<code>Vu</code>||Lowercase line | |||
|- | |||
|<code>VU</code>||Uppercase line | |||
|- | |||
|<code>g~~</code>||Invert case | |||
|- | |||
|<code>vEU</code>||Switch word to uppercase | |||
|- | |||
|<code>vE~</code>||Modify word case | |||
|- | |||
|<code>ggguG</code>||Set all text to lowercase | |||
|- | |||
|<code>gggUG</code>||Set all text to uppercase | |||
|- | |||
|<code>:set ignorecase</code>||Ignore case in searches | |||
|- | |||
|<code>:set smartcase</code>||Ignore case in searches excepted if an uppercase letter is used | |||
|- | |||
|<code>:%s/\<./\u&/g</code>||Sets first letter of each word to uppercase | |||
|- | |||
|<code>:%s/\<./\l&/g</code>||Sets first letter of each word to lowercase | |||
|- | |||
|<code>:%s/.*/\u&</code>||Sets first letter of each line to uppercase | |||
|- | |||
|<code>:%s/.*/\l&</code>||Sets first letter of each line to lowercase | |||
|- | |||
|} | |||
=读写文件= | |||
{|class="wikitable" border="1" | |||
|- | |||
!style="width:300px"|命令||style="width:400px"|用途 | |||
|- | |||
|<code>:1,10 w outfile</code>||Saves lines 1 to 10 in outfile | |||
|- | |||
|<code>:1,10 w >> outfile</code>||Appends lines 1 to 10 to outfile | |||
|- | |||
|<code>:r infile</code>||Insert the content of infile | |||
|- | |||
|<code>:23r infile</code>||Insert the content of infile under line 23 | |||
|- | |||
|} | |||
=文件浏览器= | |||
{|class="wikitable" border="1" | |||
|- | |||
!style="width:300px"|命令||style="width:400px"|用途 | |||
|- | |||
|<code>:e .</code>||Open integrated file explorer | |||
|- | |||
|<code>:Sex</code>||Split window and open integrated file explorer | |||
|- | |||
|<code>:Sex!</code>||Same as :Sex but split window vertically | |||
|- | |||
|<code>:browse e</code>||Graphical file explorer | |||
|- | |||
|<code>:ls</code>||List buffers | |||
|- | |||
|<code>:cd ..</code>||Move to parent directory | |||
|- | |||
|<code>:args</code>||List files | |||
|- | |||
|<code>:args *.php</code>||Open file list | |||
|- | |||
|<code>:grep expression *.php</code>||Returns a list of .php files contening expression | |||
|- | |||
|<code>gf</code>||Open file name under cursor | |||
|- | |||
|} | |||
=和 Unix 系统交互= | |||
{|class="wikitable" border="1" | |||
|- | |||
!style="width:300px"|命令||style="width:400px"|用途 | |||
|- | |||
|<code>:!pwd</code>||Execute the pwd unix command, then returns to Vi | |||
|- | |||
|<code>!!pwd</code>||Execute the pwd unix command and insert output in file | |||
|- | |||
|<code>:sh</code>||Temporary returns to Unix | |||
|- | |||
|<code>$exit</code>||Retourns to Vi | |||
|- | |||
|} | |||
=对齐= | |||
{|class="wikitable" border="1" | |||
|- | |||
!style="width:300px"|命令||style="width:400px"|用途 | |||
|- | |||
|<code>:%!fmt</code>||Align all lines | |||
|- | |||
|<code>!}fmt</code>||Align all lines at the current position | |||
|- | |||
|<code>5!!fmt</code>||Align the next 5 lines | |||
|- | |||
|} | |||
=Tabs/Windows= | |||
{|class="wikitable" border="1" | |||
|- | |||
!style="width:300px"|命令||style="width:400px"|用途 | |||
|- | |||
|<code>:tabnew</code>||Creates a new tab | |||
|- | |||
|<code>gt</code>||Show next tab | |||
|- | |||
|<code>:tabfirst</code>||Show first tab | |||
|- | |||
|<code>:tablast</code>||Show last tab | |||
|- | |||
|<code>:tabm n(position)</code>||Rearrange tabs | |||
|- | |||
|<code>:tabdo %s/foo/bar/g</code>||Execute a command in all tabs | |||
|- | |||
|<code>:tab ball</code>||Puts all open files in tabs | |||
|- | |||
|<code>:new abc.txt</code>||Edit abc.txt in new window | |||
|- | |||
|} | |||
=分屏显示= | |||
{|class="wikitable" border="1" | |||
|- | |||
!style="width:300px"|命令||style="width:400px"|用途 | |||
|- | |||
|<code>:e filename</code>||Edit filename in current window | |||
|- | |||
|<code>:split filename</code>||Split the window and open filename | |||
|- | |||
|<code>ctrl-w up arrow</code>||Puts cursor in top window | |||
|- | |||
|<code>ctrl-w ctrl-w</code>||Puts cursor in next window | |||
|- | |||
|<code>ctrl-w_</code>||Maximize current window vertically | |||
|- | |||
|<code>ctrl-w|</code>||Maximize current window horizontally | |||
|- | |||
|<code>ctrl-w=</code>||Gives the same size to all windows | |||
|- | |||
|<code>10 ctrl-w+</code>||Add 10 lines to current window | |||
|- | |||
|<code>:vsplit file</code>||Split window vertically | |||
|- | |||
|<code>:sview file</code>||Same as :split in readonly mode | |||
|- | |||
|<code>:hide</code>||Close current window | |||
|- | |||
|<code>:nly</code>||Close all windows, excepted current | |||
|- | |||
|<code>:b 2</code>||Open #2 in this window | |||
|- | |||
|} | |||
=自动完成= | |||
{|class="wikitable" border="1" | |||
|- | |||
!style="width:300px"|命令||style="width:400px"|用途 | |||
|- | |||
|<code>Ctrl+n Ctrl+p (in insert mode)</code>||Complete word | |||
|- | |||
|<code>Ctrl+x Ctrl+l</code>||Complete line | |||
|- | |||
|<code>:set dictionary=dict</code>||Define dict as a dictionnary | |||
|- | |||
|<code>Ctrl+x Ctrl+k</code>||Complete with dictionnary | |||
|- | |||
|} | |||
=Marks= | |||
{|class="wikitable" border="1" | |||
|- | |||
!style="width:300px"|命令||style="width:400px"|用途 | |||
|- | |||
|<code>m {a-z}</code>||Marks current position as {a-z} | |||
|- | |||
|<code>' {a-z}</code>||Move to position {a-z} | |||
|- | |||
|<code>''</code>||Move to previous position | |||
|- | |||
|} | |||
=缩写= | |||
{|class="wikitable" border="1" | |||
|- | |||
!style="width:300px"|命令||style="width:400px"|用途 | |||
|- | |||
|<code>:ab mail mail@provider.org</code>||Define mail as abbreviation of mail@provider.org | |||
|- | |||
|} | |||
=文本缩进= | |||
{|class="wikitable" border="1" | |||
|- | |||
!style="width:300px"|命令||style="width:400px"|用途 | |||
|- | |||
|<code>:set autoindent</code>||Turn on auto-indent | |||
|- | |||
|<code>:set smartindent</code>||Turn on intelligent auto-indent | |||
|- | |||
|<code>:set shiftwidth=4</code>||Defines 4 spaces as indent size | |||
|- | |||
|<code>ctrl-t, ctrl-d</code>||Indent/un-indent in insert mode | |||
|- | |||
|<code>>></code>||Indent | |||
|- | |||
|<code><<</code>||Un-indent | |||
|- | |||
|<code>=%</code>||Indent the code between parenthesis | |||
|- | |||
|<code>1GVG=</code>||Indent the whole file | |||
|- | |||
|} | |||
=语法高亮= | |||
{|class="wikitable" border="1" | |||
|- | |||
!style="width:300px"|命令||style="width:400px"|用途 | |||
|- | |||
|<code>:syntax on</code>||Turn on syntax highlighting | |||
|- | |||
|<code>:syntax off</code>||Turn off syntax highlighting | |||
|- | |||
|<code>:set syntax=perl</code>||Force syntax highlighting | |||
|- | |||
=文件移动= | =文件移动= |
2016年6月7日 (二) 03:25的版本
基础
命令 | 用途 |
---|---|
: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 |
5 |
Repeats 5 times the last change made in normal mode |
在文件中移动
命令 | 用途 |
---|---|
k or Up Arrow |
move the cursor 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 line |
gg |
move the cursor to the begining of the file |
L |
move the cursor to the end of the file |
:59 |
move cursor to line 59. Replace 59 by the desired line number. |
move cursor to column 20. | |
% |
Move cursor to matching parenthesis |
[[ |
Jump to function start |
[{ |
Jump to block start |
剪切、复制和粘贴
命令 | 用途 |
---|---|
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 |
搜索
命令 | 用途 |
---|---|
/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 |
/\< the\> |
Search the |
/\< ¦.\> |
Search all words of 4 letters |
/\/ |
Search fred but not alfred or frederick |
joe | Search fred or joe |
/\<\d\d\d\d\> |
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 |
替换
命令 | 用途 |
---|---|
:%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 |
: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/^M//g |
Delete DOS carriage returns (^M) |
:%s/\r/\r/g |
Transform DOS carriage returns in returns |
:%s#<[^>]\+>
| |
:%s/^\(.*\)\n\1$/\1/ |
Delete lines which appears twice |
Ctrl+a |
Increment number under the cursor |
Ctrl+x |
Decrement number under cursor |
ggVGg? |
Change text to Rot13 |
大小写
命令 | 用途 |
---|---|
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 |
读写文件
命令 | 用途 |
---|---|
: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 |
文件浏览器
命令 | 用途 |
---|---|
: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 |
和 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 |
对齐
命令 | 用途 |
---|---|
:%!fmt |
Align all lines |
!}fmt |
Align all lines at the current position |
5!!fmt |
Align the next 5 lines |
Tabs/Windows
命令 | 用途 |
---|---|
: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 |
分屏显示
命令 | 用途 |
---|---|
: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 |
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 |
自动完成
命令 | 用途 |
---|---|
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
命令 | 用途 |
---|---|
m {a-z} |
Marks current position as {a-z} |
' {a-z} |
Move to position {a-z} |
|
Move to previous position |
缩写
命令 | 用途 |
---|---|
:ab mail mail@provider.org |
Define mail as abbreviation of mail@provider.org |
文本缩进
命令 | 用途 |
---|---|
: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 |
语法高亮
文件移动
命令 | 用途 |
---|---|
:syntax on |
Turn on syntax highlighting |
:syntax off |
Turn off syntax highlighting |
:set syntax=perl |
Force syntax highlighting |
命令 | 用途 |
---|---|
|
|
|
剪切、粘贴和复制
命令 | 用途 |
---|---|
|
|
|