因经常需要在 Ubuntu 和 Mac OS 端进行转换,编辑器中快捷键不对应,甚至说一些快捷键找不到好的替代,故编辑器界面改用 Vim,以两端使用同一快捷键。此文整理常用 Vim 命令,不定时更新。

光标操作

移动光标键

h j k l

命令模式下

当前行移动光标

命令 解释
0 移动到行头
$ 移动到行尾
^ 移动到本行第一个不是 black 的字符位置
g_ 移动到本行最后一个不是 black 的字符位置
w 移动到下一个单词的开头
e 移动到下一个单词的结尾
fa 移动到本行下一个为 a 的字符处,a可以为任意字符
nfa 移动到本行下 n(1,2,3,4) 个字符为 a 的地方
Fa fa 一样,反向相反
nFa nfa一样,反向相反
ta 移动到本行下一个光标为 a 字符的前一个位置
nta 移动到本行下 n(1,2,34)个字符为 a 的前一个位置
Ta ta 一样,反向相反
nTa nta一样,反向相反

跨行移动光标

命令 解释
nG 光标定位到第 n 行的行首
gg 光标定位到第一行的行首
G 光标定位到最后一行的行首
% 匹配括号移动,包括(,{,[需要把光标先移动到括号上
* 匹配下一个光标当前所在的单词
# 匹配上一个光标当前所在的单词
ctrl+f 查看下一页
ctrl+b 查看上一页

复制,粘贴,剪切(删除)

只要记住三个重要的按键y(复制)p(粘贴)d(剪切,删除),通常都会在配合一个按键使用。

  • 复制
命令 解释
yw 复制一个单词
ynw 复制 n 个单词
yfa 复制光标处到下一个 a 的字符处
ynfa 复制光标处到第 n 个 a 的字符处
yd 复制一整行
nyy 复制 n 行
y$ 从光标处复制到本行末尾
yH 复制屏幕显示的第一行文本到光标处所在的行
yG 复制光标所在位置到文本结束位置所有的行
  • 粘贴
命令 解释
p 在光标后粘贴
P 大写的 P 的在光标前粘贴
  • 删除
命令 解释
dw 删除一个单词
dnw 删除 n 个单词
dfa 删除光标处到下一个 a 的字符处
dnfa 删除光标处到第 n 个 a 的字符处
dd 删除一整行
ndd 删除 n 行
d$ 从光标处删除到本行末尾
dH 删除屏幕显示的第一行文本到光标处所在的行
dG 删除光标所在位置到文本结束位置所有的行
  • 撤销
命令 解释
u 撤销刚才的操作
ctrl + r 恢复撤销的操作
  • 删除字符和替换
命令 解释
x 删除当前光标所在的字符
r 替换当前光标所在的字符
R 替换模式
  • 复制、剪切和粘贴到系统剪切板
命令 解释
:reg 查看寄存器
" +(寄存器名) y/d/p 复制,剪切,粘贴

一般系统的剪切板的寄存器名称为 +

命令用中文描述为:双引号 + 寄存器名 + 执行的命令(y、d、p)

如果仅仅针对系统剪切板则应该执行的命令是"+y"+d"+p

可视化模式

命令 解释
v 字符可视化
V 行可视化
ctrl + v 块可视化

可视化模式下操作

命令 解释
y 复制选中区域
d 删除,剪切选中区域
p 粘贴选中区域
r 替换选中的文本
gu 选中区域转小写
gU 选中区域转大写
g~ 选中区域大小写互转
> 向右缩进一个单位
< 向左缩进一个单位

可视化模式v的特殊操作

以下符号只包括””,’’,(),[],{}(双引号 ,单引号,小括号,中括号,大括号),不能匹配中文的对应符号。

命令 解释
v + i + 符号 匹配对应符号包裹的内容,不包括符号
v + a + 符号 匹配对应符号包裹的内容,包括符号

块区域模式的特殊操作

使用 Ctrl + v 选中区域后,可使用如下命令插入数据

命令 解释
I 选中区域前面插入数据
A 选中区域后面插入数据

打开文件

  1. 打开单个文件
1
vim file
  1. 打开多个文件
1
vim file1 file2 ...

使用这种方式打开文件,显示屏上默认只会出现 file1 这一个文件

切换到命令模式,使用 :ls 查看当前打开的所有文件,使用:bn切换到第 n 个文件,比如切换到第二个文件就是b2

  1. 一个显示屏多开文件
1
2
3
4
5
6
# 打开几个文件就分屏几个文件
# 左右分屏打开
vim -On file1 file2 ... filen

# 上下分屏打开
vim -on file1 file2 ... filen
  1. vim 分屏

    1. 按住 Ctrl + w,然后在按下 s:ctrl + w s,当前文件上下分割
    2. 按住 Ctrl + w,然后在按下 v:ctrl + w v,当前文件左右分割
    3. :sp file :新建文件上下分割
    4. :vsp file :新建文件左右分割
  2. 移动光标

    1. 按住 Ctrl + w,然后加位移键(hjkl 或上下左右)移动到对应位置
  3. 关闭分屏

    1. 按住 Ctrl + w,然后按 c,关闭当前分屏
    2. 按住 Ctrl + w,然后按 q,关闭当前分屏,如果是最后一个则退出 Vim

文件I/O操作

以下均在命令模式下

命令 解释
:w 保存当前对文件,但是不退出文件
:w! 强制保存当前的文件,但是不退出文件
:w file 保存当前文件到 file 文件中,不打开 file
:q 退出文件
:q! 强制退出文件,对文件的修改不保存
:qa! 强制退出所有文件,对所有文件的修改不保存
:wq 保存文件,并退出
:x 保存文件,并退出
:e file 打开 另一个文件
:e! 放弃对文件的所有修改,恢复文件到上次保存的位置
:saveas file 另存为 file,并打开 file
:n flie 新建一个文件,名字为 file

ls 命令(vscode 中么有用)

ls可以显示当前打开的所有文件,与终端中的 ls意义类似,例如:

1
2
3
4
:ls
1 # "demo1.py" 第 1 行
2 %a "demo2.py" 第 1 行
3 "demo3.py" 第 1 行
  • 第一列,代表文件的id,可根据此 id 跳转到该文件
  • 第二列,%a%当前光标所在文件,a表示当前打开的文件,如果打开多个就会有多个 a#代表上一个打开的文件。
  • 第三列,打开的文件名称,如果有/则表示路径。
  • 第四列,光标所在的行数。

切换文件命令

命令 解释
:bn 切换下一个文件
:bp 切换上一个文件
:b1 切换 id 为 1 的文件,其它 id 同理。
:b# 切换上一个编辑的文件

编辑模式

命令 解释
i 在光标所在位置之前插入文本
I 在光标所在行的行首插入文本
a 在光标所在位置之后插入文本
A 在光标所在行的行尾插入文本
o 在光标所在位置的下一行插入新行,并插入文本
O 在光标所在位置的上一行插入新行,并插入文本
s 删除光标所在处的字符然后插入本文
S 删除光标所在行,并在行首插入文本
cw 删除光标所在处到单词结束的所有字符,并插入文本。

文本替换

vim中文本替换的规则如下:

:{作用范围}s/{目标}/{替换}/{替换的标志}

  • 作用范围:当前行,全文,选区
  • 替换的标志:g(全局替换标志),空替换标志,i大小写不敏感查找,I大小写敏感查找,c需要确认替换

🌰(例子):

  1. 将光标所在行的 demo 替换为 temp
1
:s/demo/temp/g
  1. 将全文中的所有 demo 替换为temp
1
:%s/demo/temp/g
  1. 将行号 n1到 n2 的所有 demo 替换为 temp
1
2
:n1,n2s/demo/temp/g
# 注意这里的 n1,n2 之间不能有空格
  1. 选择区域,在可视模式下选择区域,然后输入:,vim 会自动补全'<,'>
1
:'<,'>s/demo/temp/g
  1. 在全文中查找所有 demo 但是只替换第一个 demotemp
1
:%s/demo/temp

等等…用好常用的标识符即可,g, , i, I, c

其他常用命令

命令 解释
:n 定位到第 n
/匹配的字符串 关键字查找,n 查看下一个, N 查看上一个
:set ic(noic) 设置不区分大小写(区分大小写),编辑器默认不区分大小写
:n1,n2d 删除 n1 行到 n2 行的文本

评论