1 Vim 打开文件
# 打开文件
vim file1 # Vim 打开一个文件
vim file1 file2 file3 # Vim 打开多个文件(显示屏仅显示第一个)
:ls # 列出 vim 打开的所有文件
:b2 # 在显示屏显示第二个文件
:bn # 切换到下一个文件
:bp # 切换到上一个文件
vim -o3 file1 file2 file3 # 上下分屏显示 3 个文件(小的不喜欢)
vim -O3 file1 file2 file3 # 左右分屏显示 3 个文件(大的喜欢)
# 分屏操作2 Vim 退出
:w # 保存修改 + 不退出
:w! # 强制保存修改 + 不退出
:w file # 保存修改到 file
:q! # 不保存 + 退出
:qa! # 不保存 + 退出(所有文件)
:wq # 保存 + 退出
:x # 保存 + 退出
:e file # 打开另一个文件
:e! # 放弃修改,恢复到上次保存位置
:saveas file # 另存为 file
ZZ # 保存 + 退出3 Vim 输入模式
i,I,a,A,o,O,s,S,c+motion
i # 光标 字符之前 插入
I # 光标 行首 插入
a # 光标 字符之后 插入
A # 光标 行尾 插入
O # 光标 上一行行首 插入
o # 光标 下一行行首 插入
S # 删除 光标 行 插入
s # 删除 光标 字符 插入
c+motion # 依据某个 motion 删除后进入插入模式
cw # 删除从光标处开始到该单词结束的所有字符,然后插入需要录入的文本4 Vim 命令模式
关键字查找
常用
| 操作 | 操作描述 |
|---|---|
| /word | 向下寻找 word 的字符串,字符串满足正则表达式 |
| ?word | 向上寻找 word 的字符串,字符串满足正则表达式 |
| n | 英文按键,重复前一个搜寻的动作。如刚执行 /vbird 去向下搜寻,则继续向下搜寻 |
| N | 英文按键,反向重复前一个搜寻的动作。如刚执行 /vbird 去向下搜寻,则向上搜寻 |
| 操作 | 操作描述 |
|---|---|
| :{范围}s/{目标}/{替换}/{替换标志} | 文本替换,作用范围分为当前行、全文、选区等等。 |
| :n1,n2s/word1/word2/g | n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 |
| :1,$s/word1/word2/g | 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 |
| :%s/word1/word2/g | 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 |
| :1,$s/word1/word2/gc | 寻找 word1 字符串,取代为 word2,取代前会 confirm。 |
| :%s/word1/word2/gc | 寻找 word1 字符串,取代为 word2,取代前会 confirm。 |
| :s/zempty/handsome/g | 将会把当前光标所在行的 zempty 替换成 handsome |
| :%s/zempty/handsome/g | 将会把全文中的 zempty 替换成 handsome |
| :’<,‘>s/zempty/handsome/g | |
| :s/zempty/handsome | 在当前行,替换从光标位置开始,目标第一次出现的地方 |
| :%s/zempty/handsome | 替换掉文件中所有行,目标第一次出现的地方 |
删除操作
| 命令 | 含义 |
|---|---|
| x, X | 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用) |
| nx | n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。 |
| dd | 剪切游标所在的那一整行(常用),用 p/P 可以粘贴。 |
| ndd | n 为数字。剪切光标所在的向下 n 行,例如 20dd 则是剪切 20 行(常用),用 p/P 可以粘贴。 |
| d+motion | 删除到 motion 对应的位置(如下所示) |
| d1G | 删除光标所在到第一行的所有数据 |
| dG | 删除光标所在到最后一行的所有数据 |
| d$ | 删除游标所在处,到该行的最后一个字符 |
| d0 | 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符 |
| :n1,n2d | n1 和 n2 指的是起始行号和结束行号,d 是删除关键字 |
区分大小写
:set ic # 不区分大小写
:set noic # 区分大小写行号相关
:set nu # 该命令会显示行号。
:set nonu # 该命令会取消行号。
:n # 定位到 n 行。光标移动
常用的移动
| 操作 | 操作描述 |
|---|---|
| h 或 向左箭头键(←) | 光标向左移动一个字符 |
| j 或 向下箭头键(↓) | 光标向下移动一个字符 |
| k 或 向上箭头键(↑) | 光标向上移动一个字符 |
| l 或向右箭头键(→) | 光标向右移动一个字符 |
0 或功能键[Home] | 这是数字『 0 』:移动到这一行的最前面字符处 (常用) |
$ 或功能键[End] | 移动到这一行的最后面字符处(常用) |
^ | 移动到这一行的第一个非空字符处(常用) |
H | 光标移动到这个屏幕的最上方那一行的第一个字符 |
M | 光标移动到这个屏幕的中央那一行的第一个字符 |
L | 光标移动到这个屏幕的最下方那一行的第一个字符 |
G | 移动到这个档案的最后一行(常用) |
gg | 移动到这个档案的第一行(常用) |
1G | 移动到这个档案的第一行 |
nG | 移动到这个档案的第 n 行(可配合 :set nu) |
n<Enter> | 光标向下移动 n 行(常用) |
n+motion | motion 重复 n 次 |
不常用的移动
[Ctrl] + [f] | 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用) |
[Ctrl] + [b] | 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用) |
[Ctrl] + [d] | 屏幕『向下』移动半页 |
[Ctrl] + [u] | 屏幕『向上』移动半页 |
n<space> | n 表示『数字』,按下数字后再按空格键,光标会向右移动这一行的 n 个字符 |