[Vim][常用操作整理]详细讲解
[Vim][常用操作整理]详细讲解
·
目录
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 Ay`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)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献7条内容
所有评论(0)