1、读写状态切换

a:写

Esc:读

2、保存、退出

保存:w

退出:q

保存退出:wq

加叹号表示强制保存或退出:w!、q!

3、行首尾跳转

0:跳到行首

Shift+$:跳到行尾

4、复制、剪切/删除行、粘贴

单行复制:yy

多行复制:nyy

单行剪切/删除:dd

多行剪切/删除:ndd

粘贴:p

5、查找

/pattern:向下查找pattern匹配字符串

?pattern:向上查找pattern匹配字符串

n:按照同一方向继续查找

N:按照反方向继续查找

pattern可以包含一些特殊字符,包括空格、/、^、$、*、.等。

6、替换

:s/vivian/sky/ #替换当前行第一个 vivian 为 sky

:s/vivian/sky/g #替换当前行所有 vivian 为 sky

:n,$s/vivian/sky/ #替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky

:n,$s/vivian/sky/g #替换第 n 行开始到最后一行中每一行所有 vivian 为 sky

(n 为数字,若 n 为 .,表示从当前行开始到最后一行)

:%s/vivian/sky/ #(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky

:%s/vivian/sky/g #(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky

7、显示行号

:set nu

8、注释行

注释单行:#

9、跳转到某行

:linenum

10、跳转到文件首尾

跳转到文件末尾:shift+g

跳转到文件开头:gg

最后附一张老图,个人觉得很有用

linux下vi命令的使用_linux