Skip to content

Instantly share code, notes, and snippets.

@ibreathebsb
Last active August 31, 2018 11:09
Show Gist options
  • Save ibreathebsb/568a82b7c358c8a58d78dcc0c2afd891 to your computer and use it in GitHub Desktop.
Save ibreathebsb/568a82b7c358c8a58d78dcc0c2afd891 to your computer and use it in GitHub Desktop.

vim

模式

  1. 常规模式
  2. 编辑模式
  3. 指令模式

三者的切换 编辑模式 <->常规模式<->指令模式

一般模式

光标移动操作

  1. hjkl 分别对应方向键左下上右
  2. [ctrl] + f [ctrl] + b 对应下一页和上一页
  3. n [space] 从当前位置开始向右移动n位
  4. 0 和 $ 分别对应移动到这一行的开头和结尾
  5. G移动到文件的最后一行
  6. nG 移动到文件的第n行
  7. n[enter] 从当前位置往下移动n行

查找与替换

  1. /word 从当前位置开始向后查找word
  2. ?word 从当前位置开始前后查找word
  3. nN 分别表示从当前为开开始往后和往前重复上一次查找
  4. :[start],[end]s/[word]/[target]/[gc] 从start行开始到end行结束,查找其中的word并替换为target. 启始行可以用$表示文件的最后一行(和光标移动中的$表示一行的结尾不同. g表示全部替换,c表示替换是逐个确认

删除、复制与粘贴

删除

  1. x X nx: x表示删除当前位置的字符,X类似于backspace删除前面的一个字符, nx向后删除n个字符(包括当前字符)
  2. dd [n]dd: 删除光标所在的一行, ndd删除光标以下的n行(包括当前行一共n行)
  3. d0: 删除光标所在位置到这一行开头的所有字符
  4. d$: 删除光标所在位置到这一行结尾的所有字符(包含当前字符)
  5. d1G: 删除第1行到光标所在行
  6. dG: 删除光标所在行到最后一行

复制(很多命令和删除类似)

  1. yy: 复制光标所在行
  2. nyy: 复制光标以下的n行,包括当前行
  3. y0: 复制光标所在位置到这一行的开头
  4. y$: 复制光标所在位置到这一行的结尾
  5. y1G: 复制第一行到光标所在行
  6. yG: 复制光标所在行到文件的最后一行

粘贴

  1. p/P: p在光标位置后面插入复制的数据,P在光标的前面插入

其他操作

  1. J: 将当前行和下一行合并为一行
  2. u: 撤销上次操作
  3. [ctrl] r: 重做上次操作
  4. .: 重复上一次操作

切换到编辑模式

  1. a/A 在当前光标位置的后面插入,在当前行的结尾插入
  2. i/I i在当前光标位置的前面插入, I在当前光标所在行地一个非空字符前插入
  3. r/R r替换当前光标所在位置的字符,替换完成就会切换到一般模式,R一直保持替换模式直到ESC
  4. o/O o在当前位置的下一行开始插入, O在当前位置的上一行插入
  5. ESC 切换到普通模式

文件保存及其他

  1. :w :w! :q :q! :wq 这些就不多说了,:w!强制写入,具体能否成功还要看权限,没有w权限但是如果可以chmod那就能成功
  2. :w [filename] 将当前内容保存为file,也就是另存为
  3. :r [filename] 读取filename这个文件的内容并将其插入到光标所在的位置
  4. :n1,n2 w [filename] 将当前内容n1-n2行另存为filename
  5. :! [command] 暂时离开vim并执行command,比如在编辑过程中想要查看下当前目录下的文件名::! ls
  6. :set nu :set nonu 显示/隐藏行号

可视化 Visual Block

  1. v/V: 进入可视化选择模式,v选择单个字符, V 选择行
  2. [ctrl] + v: 多行不规则选择,比如同时选择5行开头10个字符
  3. d: 删除所选内容
  4. y: 复制所选内容

多文件编辑

  1. sp/vsp : 分屏操作,sp水平分屏,vsp 垂直分屏
  2. [ctrl] + w + [hjkl] : 切换当前激活的编辑器
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment