转自:http://www.cnblogs.com/lhb25/p/130-essential-vim-commands.html
Vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和 Emacs 并列成为类 Unix 系统用户最喜欢的编辑器。这里收录了130+程序员必备的 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 file gg move the cursor to the begining of the file L move the cursor to the bottom of the screen :59 move cursor to line 59. Replace 59 by the desired line number. 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选项卡/窗口
: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 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标记
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