
目录
- 0.说明
- [1.Cursor Movement](#1.Cursor Movement)
- [2.Insert Mode](#2.Insert Mode)
- 3.Editing
- [4.Marking Text (Visual Mode)](#4.Marking Text (Visual Mode))
- [5.Visual commands (In Visual mode)](#5.Visual commands (In Visual mode))
- 6.Registers
- [7.Mark and Positions](#7.Mark and Positions)
- 8.Macros
- [9.Cut and paste](#9.Cut and paste)
- [10.Indent text](#10.Indent text)
- 11.Exiting
- [12.Search and replace](#12.Search and replace)
- 13.Diff
0.说明
- 为何是全英文?
- 本篇文章为本人的一次尝试,之所以用全英文介绍,也是为了和读者一起熟悉全英文文档
- 虽说是全英文的文档,但是还是很浅显易懂的
- 如果有读者需要一份中文版本,可以评论或者私聊,我会考虑再出一份中文版本的
- 本篇文章为本人的一次尝试,之所以用全英文介绍,也是为了和读者一起熟悉全英文文档
- 内容方面:
- 本文整理出的操作,都是基础语法之外的一些操作及一些常用组合
- 同时,部分操作我只给出了一个例子,其他操作是同理的,相信学过Vim基础的小伙伴是可以自己发散开的
- 没有Vim基础的小伙伴,也不用担心,我后面会出Vim的基础教程~
1.Cursor Movement
H:Home,move to top of screenM:Middle,move to middle of screenL:Low,move to bottom of screen0:jump to the start of the line}:jump to next paragraph (or function/block, when editing code){:jump to previous paragraph (or function/block, when editing code)
2.Insert Mode
ea:insert (append) at the end of the wordCtrl + h:delete the character before the cursor during insert modeCtrl + w:delete the word before the cursor during insert modeCtrl + j:begin new line during insert modeCtrl + t:indent(move right) line one shiftwidth during insert modeCtrl + d:de-indent(move left) line one shiftwidth during insert modeCtrl + n:insert(auto-complete ) next match before the cursor during insert modeCtrl + p:insert(auto-complete ) previous match before the cursor during insert modeCtrl + rx:insert the contents of register xCtrl + ox:Temporarily enter normal mode to issue one normal-mode command x.
3.Editing
r:Replace,replace a single character.R:Replace Mode,replace more than one character, until ESC is pressed.J:Join,join line below to the current one with one space in between.gJ:join line below to the current one without space in between.gwip:reflow paragraph.xp:Transpose,transpose two letters(delete and paste).u:undo.U:Undo Line,restore (undo) last change line.
4.Marking Text (Visual Mode)
v:start visual mode, mark lines, then do a command (like y-yank)V:start linewise visual mode.o:move to other end of marked area.Ctrl + v:startvisual block mode.O:move to other corner of block.aw:mark a word.ab:a block with ().aB:a block with {}.at:a block with <> tags.ib:inner block with ().iB:inner block with {}.it:inner block with <> tags.- Tip :Instead of b or B one can also use ( or {, respectively.
5.Visual commands (In Visual mode)
>:shift text right<:shift text lefty:yank (copy) marked textd:delete marked text~:switch caseu:change marked text to lowercaseU:change marked text to uppercase- Tip:Mark first, then operate
6.Registers
- Registers are being stored in
~/.viminfo, and will be loaded again on next restart of vim. - Special registers:
0:last yank":unnamed register, last delete or yank%: current file name#: alternate file name*:clipboard contents (X11 primary)+:clipboard contents (X11 clipboard)/:last search pattern::last command-line.:last inserted text-:last small (less than a line) delete=:expression register_:black hole register
7.Mark and Positions
:marks:list of marksma:set current position for mark A- ```a``:jump to position of mark A
y`a:yank text to position of mark A- ```0``:go to the position where Vim was previously exited
- ```"``:go to the position when last editing this file
- ```.``:go to the position of last editing this file
- `` ` ```:go to the position before the last last jump
:ju[mps]:list of jumpsCtrl + i:go to newer position in jump list- Jump forward
Ctrl + o:go to older position in jump list- Jump backwards
:changes:list of changesg:go to newer position in change listg;:go to older position in change list
Ctrl + ]:jump to the tag under cursor- This is a common command for viewing code definitions in Vim.
- When the cursor is over an identifier, such as a function name or variable name, use
Ctrl + ]to jump to the definition of that identifier
- Tip :To jump to a mark you can either use a backtick (`````) or an apostrophe (
'). Using an apostrophe jumps to the beginning (first non-blank) of the line holding the mark.
8.Macros
qa:record macro aq:stop recording macro@a:run macro a@@:rerun last run macro
9.Cut and paste
p:put (paste) the clipboard after cursorP:put (paste) before cursorgp:put (paste) the clipboard after cursor and leave cursor after the new textgP:put (paste) the clipboard before cursor and leave cursor after the new textd$ or D:delete (cut) to the end of the line
10.Indent text
>>:indent (move right) line one shiftwidth<<:de-indent (move left) line one shiftwidth>%:indent a block with () or {} (cursor on brace) line one shiftwidth>ib:indent inner block with ()>at:indent a block with <> tags3==:re-indent 3 lines=%:re-indent a block with () or {} (cursor on brace)=iB:re-indent inner block with {}gg=G:re-indent entire buffer]p:paste and adjust indent to current line
11.Exiting
:wqa:write (save) and quit on all tab
12.Search and replace
@pattern:'very magic' pattern: non-alphanumeric characters are interpreted as special regex symbols (no escaping needed):noh[lsearch]:remove highlighting of search matches
13.Diff
za:toggle fold under the cursorzo:open fold under the cursorzc:close fold under the cursorzr:reduce (open) all folds by one levelzm:fold more (close) all folds by one levelzi:toggle folding functionality]c:jump to start of next change[c:jump to start of previous change- Tip:The commands for folding (e.g. za) operate on one level. To operate on all levels, use uppercase letters (e.g. zA)