[Vim][常用操作整理]详细讲解


目录

  • 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

  • HHome,move to top of screen
  • MMiddle,move to middle of screen
  • LLow,move to bottom of screen
  • 0: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 word
  • Ctrl + hdelete the character before the cursor during insert mode
  • Ctrl + wdelete the word before the cursor during insert mode
  • Ctrl + jbegin new line during insert mode
  • Ctrl + t:indent(move right) line one shiftwidth during insert mode
  • Ctrl + d:de-indent(move left) line one shiftwidth during insert mode
  • Ctrl + n:insert(auto-complete ) next match before the cursor during insert mode
  • Ctrl + p:insert(auto-complete ) previous match before the cursor during insert mode
  • Ctrl + rx:insert the contents of register x
  • Ctrl + ox:Temporarily enter normal mode to issue one normal-mode command x.

3.Editing

  • rReplace,replace a single character.
  • RReplace Mode,replace more than one character, until ESC is pressed.
  • JJoin,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.
  • xpTranspose,transpose two letters(delete and paste).
  • u:undo.
  • UUndo 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:start visual 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 left
  • y:yank (copy) marked text
  • d:delete marked text
  • ~:switch case
  • u:change marked text to lowercase
  • U: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 marks
    • ma: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 jumps
    • Ctrl + i:go to newer position in jump list
      • Jump forward
    • Ctrl + o:go to older position in jump list
      • Jump backwards
  • :changes:list of changes
    • g:go to newer position in change list
    • g;: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 a
  • q:stop recording macro
  • @a:run macro a
  • @@:rerun last run macro

9.Cut and paste

  • p:put (paste) the clipboard after cursor
  • P:put (paste) before cursor
  • gp:put (paste) the clipboard after cursor and leave cursor after the new text
  • gP:put (paste) the clipboard before cursor and leave cursor after the new text
  • d$ 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 <> tags
  • 3==: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 cursor
  • zo:open fold under the cursor
  • zc:close fold under the cursor
  • zr:reduce (open) all folds by one level
  • zm:fold more (close) all folds by one level
  • zi: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)
相关推荐
别或许5 分钟前
在centos系统下,安装MYSQL
linux·mysql·centos
丁丁丁梦涛9 分钟前
CentOS修改MySQL数据目录后重启失败的问题及解决方案
linux·mysql·centos
黑马金牌编程14 分钟前
Jenkins的Linux与window部署方式
linux·运维·windows·jenkins·持续集成·cicd
web安全工具库19 分钟前
告别刀耕火种:用 Makefile 自动化 C 语言项目编译
linux·运维·c语言·开发语言·数据库·算法·自动化
DechinPhy27 分钟前
Ubuntu挂载新硬盘
linux·运维·服务器·ubuntu
lht63193561229 分钟前
Ubuntu Server 系统安装图形界面远程工具(RDP)
linux·运维·ubuntu
云计算练习生1 小时前
linux shell编程实战 02 变量与交互式输入
linux·运维·shell编程·shell 变量
Dovis(誓平步青云)1 小时前
《简易制作 Linux Shell:详细分析原理、设计与实践》
linux·运维·服务器
weixin_307779131 小时前
在Linux服务器上使用Jenkins和Poetry实现Python项目自动化
linux·开发语言·python·自动化·jenkins
爱宇阳2 小时前
Linux 教程:如何查看服务器当前目录中的文件
linux·运维·github