超过 130 个你需要了解的 Vim 命令

从 1970 年开始,vi 和 vim 就成为了程序员最喜爱的文本编辑器之一。5年前,我写了一个问自己名为 “每个程序员都应该知道的 100 个 vim 命令” 这次算是之前那篇文章的改进版,希望你会喜欢。

基础 :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.  
20|   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  
/fred\|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#<[^>]\+>##g   Delete HTML tags but keeps text  
:%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  
ctrl-w|   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  

推荐阅读:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/1ada5bd9b6cc07cb420c2361d6473d36.html