操作
启动退出
vim
: 打开某个文件
:q
: 未做任何修改退出
:wq
: 保存并退出
:q!
: 强制退出并忽略所有更新
:e!
: 放弃所有修改, 并打开原来文件
模式
Esc/Ctrl + [
: 进入正常模式
i
: 正常模式进入插入模式(可编辑)
v
: 正常模式进入可视模式
命令历史
:
, /
: 可选择某个历史命令
文件
vim [file ...]
: 打开单个或多个文件
:open file
: 在 vim 窗口打开一个新文件
:split file
: 在新窗口中打开文件
:bn
: 切换到下一个文件
:bp
: 切换到上一个文件
:args
: 查看当前打开的文件列表, 当前文件会被 [] 括起来
:e ftp://file
: 打开远程文件
插入文本
i
: 在当前位置前插入
I
: 在当前行首插入
a
: 在当前位置后插入
A
: 在当前行尾插入
o
: 在当前行之后插入一行
O
: 在当前行之前插入一行
删除文本
x
: 删除当前字符
X
: 删除当前字符的前一个字符
dl
: 删除当前字符, dl = x
dh
: 删除前一个字符
dd
: 删除当前行
dj
: 删除上一行
dk
: 删除下一行
nd
: 删除当前行开始的 n 行
d$
: 删除当前字符之后的所有字符
复制黏贴
yy
: 拷贝当前行
p
: 在当前行光标后黏贴
查找文本
正则查找
/text
: 查找 “text”, 按 n 键查找下一个, 按 N 键查找上一个
?text
: 查找 “text”, 反向查找, 按 n 键查找下一个, 按 N 键查找前一个
:set ignorecase
: 设置忽略大小写
:set noignorecase
: 设置不忽略大小写
:set hlsearch
: 设置搜索结果高亮
:set nohlsearch
: 设置搜索结果不高亮
:set incsearch
: 逐步搜索, 每键入一个字符都搜索
替换文本
正常模式
ra
: 将当前字符替换为 ‘a’
:s/old/new/
: 将 “old” 替换为 “new”
:s/old/new/g
: 将当前行所有的 “old” 替换为 “new”
:%s/old/new/
: 将所有行的第一个 “old” 替换为 “new”
:%s/old/new/g
: 将整个文件的 “old” 替换为 “new”
:10,20 s/^/ /g
: 在第 10 行到第 20 行每行前面添加四个空格, 用于缩进
移动光标
正常模式
[n]h
: 左移 n 个字符(默认 n 为 1)
[n]l
: 右移 n 个字符
[n]k
: 上移 n 个字符
[n]j
: 下移 n 个字符
w
: 向后移动一个单词
b
: 向前移动一个单词
e
: 向后移动一个单词, 光标在词尾
^
: 移动到本行第一个非空白字符上
0
: 移动到本行第一个字符上
Ctrl + e
: 向下滚动一行
Ctrl + y
: 向上滚动一行
Ctrl + d
: 向下滚动半屏
Ctrl + u
: 向上滚动半屏
Ctrl + f
: 向下滚动一屏
Ctrl + b
: 向上滚动一屏
撤销
u
: 撤销(Undo)
U
: 撤销对整行的操作
Ctrl + r
: 重做(Redo)
窗口
:split
: 打开新窗口
:new
: 打开新窗口
:split file
: 横向窗口打开文件
:vsplit file
: 纵向窗口打开文件
:close
: 关闭窗口
:only
: 关闭其它窗口
Ctrl + ww
: 移动到下一个窗口
Ctrl + wj
: 移动到下方窗口
Ctrl + wk
: 移动到上方窗口
shell
:!command
: 执行 command 命令