vim文本编辑器操作指南
vim的三大主要模式:
- 正常模式(菜单模式):进入vim后的默认模式,可以阅读、修改代码,有很多快捷键
- 插入模式(编辑模式):主要用来编写代码
- 命令模式(行底模式):对vim进行设置、执行命令
三种模式的切换:
- 正常模式 输入i、a -> 插入模式
插入模式 ESC或Ctrl+c -> 正常模式 - 正常模式 输入: -> 行底模式
行底模式 ESC或Ctrl+c -> 正常模式 - 注意:插入模式与行底模式不能直接转换必须经过正常模式中转
正常模式的操作:
进入插入模式:
命令 | 功能 |
---|
i | 在当前光标前面进入插入模式 |
a | 在当前光标后面进入插入模式 |
I(Shift+i) | 光标跳转到行首进入插入模式 |
A(Shift+a) | 光标跳转到行尾进入插入模式 |
o | 在当前光标下一行插入一个空白行,然后进入插入模式 |
O(Shift+o) | 在当前光标上一行插入一个空白行,然后进入插入模式 |
s | 删除光标当前位置的一个字符,并进入插入模式 |
S(Shift+s) | 删除光标当前行的所有内容,并进入插入模式 |
删除代码:
命令 | 功能(d :delete(删除)、p :place(放置)、w :word(单词)) |
---|
x | 删除光标位置的字符(仅一个字符) |
X(Shift+x) | 删除光标位置的前一个字符(仅一个字符) |
dw | 删除一个单词,包括空格(使用时将光标置于起始位置) |
de | 删除一个单词,不包括空格(使用时将光标置于起始位置) |
d$/D(Shift+d) | 删除当前光标当前位置直到行末 |
dd | 删除一行 |
ndd | 删除n行 |
dgg | 删除光标当前行及以上内容 |
dG/d+Shift(g) | 删除光标当前行及以下内容 |
dH/d+Shift(h) | 删除当前页面第1行至光标行 |
p | 将最后一次删除的内容(可以是字符、单词、一段内容、甚至几行)置于光标后 |
xp | 可以快速颠倒两个字符的位置 |
提示 | 删除的代码还存在于缓冲区中,可以跨终端跨文件操作 |
复制代码:
命令 | 功能(y :copy(拷贝)) |
---|
yw | 复制一个单词,包括空格(使用时将光标置于起始位置) |
ye | 复制一个单词,不包括空格(使用时将光标置于起始位置) |
y$ | 复制当前光标从当前位置直到行末全部内容 |
yy/Y(Shift+y) | 复制一行 |
nyy | 复制n行 |
p | 将最后一次复制的内容(可以是单词、一段内容、甚至几行)置于光标后 |
提示 | 删除的代码还存在于缓冲区中,可以跨终端跨文件操作 |
修改代码:
命令 | 功能(r :replace(替换)、c :change(修改)) |
---|
r | 替换光标所在位置的字符,替换后(只一次)返回正常模式 |
R(Shift+r) | 进入替换模式(覆盖效果),替换光标所在位置字符,ESC或Ctrl+c -> 正常模式 |
cw | 修改一个单词,从光标位置进入插入模式 |
c$/C(Shift+c) | 删除光标位置到行末的全部内容,并进入插入模式 |
cc | 清空当前行,并从行首位置进入插入模式(光标可在当前行的任意位置执行本命令) |
撤消:
命令 | 功能(u :undo(撤销)、r :reverse(逆转)) |
---|
u | 撤消一次操作 |
U(Shift+u) | 恢复光标行到原始状态(可以撤销多次操作) |
Ctrl+r | 撤消撤消操作,反撤消(一次操作) |
定位:
命令 | 功能 |
---|
Home键 | 将光标跳转到行首,并且可以按行首快速移动光标(适用于正常模式和插入模式) |
End键 | 将光标跳转到行尾,并且可以按行尾快速移动光标(适用于正常模式和插入模式) |
0/^/(Shift+6) | 将光标跳转到行首,并且可以按行首快速移动光标(只适用于正常模式) |
$/(Shift+4) | 将光标跳转到行尾,并且可以按行尾快速移动光标(只适用于正常模式) |
H(Shift+h) | 光标跳转到当前页面的首行 |
gg | 光标跳转到文件首行 |
G(Shift+g) | 光标跳转到文件末行 |
行号+G(Shift+g) | 光标跳转到指定行(输入行号时,不会在屏幕上显示行号) |
Ctrl+g | 显示当前文件中当前光标所在行位置以及文件状态信息 |
查找:
命令 | 功能 |
---|
/key | 查找关键字key (降序查找) |
?key | 查找关键字key (升序查找) |
n | 查找模式下:查找下一次出现的关键字 |
N(Shift+n) | 查找模式下:反向查找下一次出现的关键字 |
提示 | :如果查找已经到达文件末尾,查找会自动从文件头部继续查找。 |
% | 可以查找配对的括号:)、]、} |
插入模式的操作:
- tab/Ctrl+i 自动缩进4个字符(字符数可配置)
- Ctrl+p/n 自动补齐
- Ctrl+c 返回正常模式
- Ctrl+z 保存退出
命令模式的操作:
格式处理:
命令 | 功能 |
---|
:# | 光标回到第#行 |
:$ | 光标跳转到文件最后一行 |
:>n | 从光标当前行开始,n行代码向右缩进 |
:<n | 从光标当前行开始,n行代码向左缩进 |
:set nonu | 不显示行号 |
:set nu | 显示行号 |
注意 | :set 开头命令都是对vim进行一些设置,在行底的设置都只是临时有效 |
~/.vimrc | 如果想持续有效需要把命令写入配置文件 |
匹配替换:
命令 | 功能 |
---|
:s/old/new | 替换光标当前的第一个匹配串 |
:s/old/new/g | 替换光标当前行整行的匹配串 |
:#,#s/old/new/g | 替换第# 行至第# 行内所有的匹配串(# :行号) |
:%s/old/new/g | 替换文件内所有的匹配串 |
:%s/old/new/gc | 进行全文替换时询问用户确定每个替换(c =confirm(确认)) |
退出保存:
命令 | 功能 |
---|
:q | 退出(有修改不能退出) |
:q! | 强制退出(不保存修改) |
:wq | 写入并退出 |
:wq! | 强制写入并退出 |
文件操作:
命令 | 功能 |
---|
:!command | 用于执行一个外部命令(ls :显示当前目录内容、rm :删除文件 …) |
:w FILENAME | 可将当前文件保存到名为FILENAME 的文件中 |
:#,# w FILENAME | 可将当前文件第 # 行至第 # 行的內容保存到文件FILENAME 中 |
:r FILENAME | 可提取磁盘文件FILENAME 并将其插入到当前文件的光标位置后面 |
注意:命令模式下所有命令都需以Enter(回车键)
结尾
如果觉得不错,欢迎关注点赞收藏
哪里有不对或可以补充的地方欢迎评论
另外还有一篇博客是介绍Linux系统命令