vim三大模式
- 命令模式
移动光标、删除字符等 - 输入模式
输入字符 - 末行模式
保存文件、退出vi、设置vi、查找等功能
命令 | 作用 |
---|---|
ESC | 输入–>命令 |
: | 命令–>末行 |
ESC | 末行–>命令 |
常用命令
打开文件
命令 | 作用 |
---|---|
vim filename | 打开文件 |
vim + filename | 打开文件,定位至文件末尾 |
vim +num filename | 打开文件,定位至第num行 |
vim +/PATTERN filename | 打开文件,定位至第一次被PATTERN匹配到的行的行首 |
编辑多个文件
命令 | 作用 |
---|---|
vim file1 file2 file3 | 打开文件 |
:next | 切换至下一个文件 |
:prev | 切换至前一个文件 |
:first | 切换至第一个文件 |
:last | 切换至最后一个文件 |
:q | 退出当前文件 |
:qa | 全部退出 |
编辑多个文件
命令 | 作用 |
---|---|
:split file 或 :new file | 用新窗口打开文件,光标停在顶层的窗口上 |
Ctrl+ww | 移动到下一个窗口 |
Ctrl+wj | 移动到下方的窗口 |
Ctrl+wk | 移动到上方的窗口 |
:close | 关闭窗口,最后一个窗口不能使用此命令,可以防止意外退出vim |
:q | 如果是最后一个被关闭的窗口,那么将退出vim |
退出文件
- 末行模式
命令 : | 作用 |
---|---|
w | 保存 |
w filename | 保存为该文件 |
w! | 强行保存 |
q | 退出 |
q! | 不保存并退出 |
wq 或 x | 保存并退出 |
e! | 放弃所有修改,并打开原来文件 |
- 命令模式
命令 | 作用 |
---|---|
ZZ | 保存并退出 |
插入
命令 | 作用 |
---|---|
i | 在当前位置前插入 |
I | 在当前行首插入 |
a | 在当前位置后插入 |
A | 在当前行尾插入 |
o | 在当前行之后插入一行 |
O | 在当前行之前插入一行 |
r | 单字符替换 |
# r | 光标后#个字符全部替换为某个字符 |
R | 替换(覆盖)当前光标位置及后面的若干文本 |
J | 合并光标所在行及下一行为一行 |
移动
- 逐字符移动:
命令 | 作用 |
---|---|
h | 左 |
l | 右 |
j | 下 |
k | 上 |
# h/l/j/k | 移动#个字符/行 |
backspace | 左 |
space | 右 |
enter | 下 |
- | 上 |
方向键 | 上下左右 |
- 以单词为单位移动
命令 | 作用 |
---|---|
w | 移至下一个单词的词首 |
e | 跳至当前或下一个单词的词尾 |
b | 跳至当前或上一个单词的词首 |
# w/e/b | 移动#个单词 |
- 行内跳转:
命令 | 作用 |
---|---|
0 | 绝对行首 |
^ | 行首的第一个非空白字符 |
$ | 绝对行尾 |
# $ | 移动到#行后的行尾 |
- 行间跳转
命令 | 作用 |
---|---|
# G | 跳转至第#行 |
G | 最后一行 |
gg | 第一行 |
# + | 向下跳#行 |
# - | 向上跳#行 |
- 编程辅助-函数中跳转
命令 | 作用 |
---|---|
[{ | 转到上一个位于第一列的“{” |
]} | 转到下一个位于第一列的“}” |
{ | 转到上一个空行 |
} | 转到下一个空行 |
gD | 跳转到全局变量的定义处,从当前文件开头开始搜索 |
gd | 转到当前光标所指的局部变量的定义 |
g; | 上一个修改过的地方 |
g, | 下一个修改过的地方 |
* | 转到当前光标所指的单词下一次出现的地方 |
# | 转到当前光标所指的单词上一次出现的地方 |
- 末行模式
命令 : | 作用 |
---|---|
. | 表示当前行 |
$ | 最后一行 |
# | 第#行 |
+ # | 向下#行 |
- # | 向上#行 |
可视化
- 命令模式
命令 | 作用 |
---|---|
v | 按字符选取 |
V | 按矩形选取 |
删除 复制 剪切 粘贴 撤销
- 命令模式
命令 | 作用 |
---|---|
x | 删除当前字符 |
n x | 删除从光标开始的n个字符 |
X | 删除当前光标前一字符 |
yw | 复制从光标开始到词尾的字符 |
n yw | 复制从光标开始的n个单词 |
y^ | 复制从光标到行首的内容 |
y$ | 复制从光标到行尾的内容 |
yy | 拷贝当前行 |
n yy | 拷贝当前行开始的n行,比如,2yy拷贝当前行及其下一行 |
#dw, #de, #db | 与单词跳转命令结合,用来删除单词 |
d h/l/j/k | 用来删除字符 |
dd | 剪切当前行 |
n dd | 剪切当前行开始的n行,比如,2dd剪切当前行及其下一行 |
p | 如果复制或剪切为整行内容,则粘贴至光标所在行的下方,如果复制或剪切的内容为非整行,则粘贴至光标所在字符的后面 |
shift+p 或 P | 如果复制或剪切为整行内容,则粘贴至光标所在行的上方,如果复制或剪切的内容为非整行,则粘贴至光标所在字符的前面 |
u | 撤销上一步操作 |
# u | 直接撤消最近#次编辑操作 |
Ctrl+r | 撤消最近一次撤消操作 |
搜索
- 命令模式
命令 | 作用 |
---|---|
/abc | 向光标下搜索abc字符串 |
?abc | 向光标上搜索abc字符串 |
n | 向下搜索前一个搜素目标 |
N | 向上搜索前一个搜索目标 |
搜索高亮 打开与关闭
- 末行模式
命令 : | 作用 |
---|---|
set hlsearch | 打开高亮搜索 |
set nohlsearch | 关闭高亮搜索 |
搜索替换
- 末行模式
命令 : | 作用 |
---|---|
s/old/new | 用new替换行中首次出现的old |
s/old/new/g | 用new替换行中所有的old |
n,m s/old/new/g | 用new替换从n到m行里所有的old |
%s/old/new/g | 用new替换当前文件里所有的old |
滚屏
- 命令模式
命令 | 作用 |
---|---|
ctrl+u\d | 向上\下滚动半屏 |
ctrl+e\y | 向上\下滚动一行 |
ctrl+b\f | 向上\下滚动一屏 |
行号显示与取消
- 末行模式
命令 : | 作用 |
---|---|
set nu | 显示行号 |
set nonu | 取消显示行号 |
语法高亮与取消
- 末行模式
命令 : | 作用 |
---|---|
syntax on | 开启 |
syntax off | 关闭 |
编辑其他文件
- 末行模式
命令 : | 作用 |
---|---|
e otherfilename | 编辑文件名为otherfilename的文件 |
r /path/to/somefile | 将另外一个文件的内容填充在当前文件中,附加到当前光标后 |
工作目录
- 末行模式
命令 : | 作用 |
---|---|
pwd | 显示vim的工作目录 |
多行缩进缩出
- 命令模式
命令 | 作用 |
---|---|
>>或<< | 光标所在行会缩进/缩出 |
n >>或<< | 光标以下的n行会缩进/缩出 |
= | 可视模式下,选择要调整的代码块,按=,代码会按书写规则缩排好 |
n = | 调整n行代码的缩排 |
配置文件
文件 | 作用 |
---|---|
/etc/vimrc | 针对所有用户 |
~/.vimrc | 针对当前用户 |