从 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 | Marksm {a-z} | Marks current position as {a-z} | ' {a-z} | Move to position {a-z} | '' | Move to previous position | 缩写文本缩进: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 |
via catswhocode
|