* VIM普通模式

​ ① 移动光标 ② 复制 粘贴 ③ 剪切 粘贴 删除 ④ 撤销与恢复

移动光标

光标上下左右移动

1
2
3
4
5

h #左移
j #下移
k #上移
l #右移

移动多行

1
2
3
4
4h       #左移4格
4j #上移4行
4k #下移4行
4l #右移4格

跳转到单词末尾或者开头(下一个空格前)

1
2
w      # word
b # begining

跳转到文档开始或末尾

1
2
gg        # 跳转到文档开头
G (shift + g) # 跳转到文档末尾

上下翻页

1
2
3
ctrl + u  #向上翻页
ctrl + d #向下翻页

快速到最近的某个字母(区分大小写)

1
2
3
fu      #到最近1的u
fc #到最近的c
fK #到最近的K

复制粘贴

复制

y

  • 复制单词
1
2
yaw      # y(yank)  aw(a word)

  • 复制n行
1
2
3
4
5
6
7
8
9
yy      # 复制本行

nyy # 复制n行 包括当前行

y4j # 向下复制5行 包括当前行
y4k # 向上复制5行 包括当前行
y4h # 向左复制4个字符 不包括光标在闪烁那个字符
y4l # 向右复制4个字符 包括光标在闪烁那个字符

粘贴

p

1
p      # 小写p,复制到光标后的一行

剪切删除

  • d命令其实可以看成剪切,不复制出来就变成删除了。

  • 删除行

1
2
3
4
5
6
7
8
dd      # 删除光标所在行
ndd # 删除n行 包括当前行

d4j # 向下删除5行 包括当前行
d4k # 向上删除5行 包括当前行
d4h # 向左删除4个字符 不包括光标在闪烁那个字符
d4l # 向右删除4个字符 包括光标在闪烁那个字符

  • 删除到本行末尾
1
D

替换

c

  • 替换单词
1
2
caw     # change a word

  • 替换行
1
2
cc      # 删除行,并且进入编辑模式
c4j # 删除下4行+本行,并且进入编辑模式

*

撤销恢复

1
u       # (undo)

文件操作

1
:wq      # 保存并退出

* VIM 可视化模式(VISUAL)

v

1
v      # 进入可视化模式

​ 进入可视化模式后移动光标即可选中该部分内容进行操作,例如:

  • d # 删除
  • y # 复制
  • c # 替换

客制化

  • NERDtree

文件夹,文件,管理(树形结构)

vim学习网站

VIM GAME


常用命令

🔍 查找与跳转类

操作 命令 功能
向下查找 /关键词 向下搜索
向上查找 ?关键词 向上搜索
查找下一个 n 重复上一次查找方向
查找上一个 N n 相反方向查找
精准跳行 :数字 跳转到某行(如 :25 到第25行)
跳转当前函数开始 [[ 到上一个函数定义
跳转当前函数结束 ]] 到下一个函数定义

✂️ 复制/粘贴/删除

操作 命令 功能
复制整行 yy Yank(复制)一整行
复制多行 3yy 复制 3 行
粘贴 p 粘贴到当前行/位置后
粘贴到前面 P 粘贴到当前行/位置前
删除当前行 dd 删除整行(并放入剪贴板)
删除多行 3dd 删除 3 行

🖊 编辑文本

操作 命令 功能
进入插入模式 i 当前光标前插入
行首插入 I 当前行行首插入
行末插入 A 当前行行末插入
开新行 o 下一行插入新行
上一行插入 O 上一行插入新行
撤销操作 u 撤销
重做操作 Ctrl + r 重做

⏬ 移动光标(导航)

操作 命令 功能
移动到行首 0 数字零,跳转行首
移动到行尾 $ 跳转行尾
下一个单词 w 移动到下一个词首
上一个单词 b 移动到上一个词首
向后跳一个词尾 e 跳到词尾
跳转匹配括号 % 例如从 ( 跳到 )

🔄 替换与格式

操作 命令 功能
替换字符 r<字符> 替换当前字符为新字符
替换整行 cc 删除本行并进入插入模式
修改当前单词 cw 删除单词并插入新内容
缩进 >> / << 增加 / 减少缩进
自动缩进格式化 gg=G 整个文件格式化缩进

🗂 多文件 / 多窗口

操作 命令 功能
打开文件 :e 文件名 打开另一个文件
保存文件 :w 写入文件
保存退出 :wqZZ 保存并退出
不保存退出 :q! 强制退出
分屏 :vsp 文件名 垂直分屏打开文件
窗口切换 Ctrl + w + h/j/k/l 切换到左/下/上/右窗口

🧠 Bonus 技巧

操作 命令 功能
查看文件编码 :set fileencoding?
设置行号 :set number
取消行号 :set nonumber
语法高亮 :syntax on
显示不可见字符 :set list

场景技巧

查找替换

Vim 中,查找和替换主要用 :s 命令完成。常见用法如下:


1. 替换当前行

1
:s/old/new/
  • 只替换当前行第一个匹配的 oldnew
1
:s/old/new/g
  • 替换当前行所有的 oldnew

2. 替换整个文件

1
:%s/old/new/
  • 在整个文件中,替换第一个匹配的 old
1
:%s/old/new/g
  • 在整个文件中,替换所有 oldnew

3. 替换指定范围

1
:10,20s/old/new/g
  • 在第 10 行到第 20 行之间替换所有 oldnew

4. 每次替换时确认

1
:%s/old/new/gc
  • 替换整个文件所有 oldnew,**每次替换都会提示 (y/n/a/q/l)**。
    • y = 替换
    • n = 跳过
    • a = 替换所有
    • q = 退出
    • l = 替换当前并退出

5. 使用正则表达式

Vim 的替换支持正则:

1
:%s/foo[0-9]\+/bar/g
  • 把所有 foo 加数字的字符串换成 bar

6. 忽略大小写

1
:%s/old/new/gi
  • i 表示忽略大小写。

7. 使用寄存器或变量替换

比如用寄存器内容:

1
:%s/old/\=@"/g
  • 用系统寄存器里的内容替换 old