vim的三种模式
模式 | 描述 |
---|---|
命令行模式 | 用户一进入vim就处于该模式下 可以进行复制,粘贴等操作 |
插入模式 | 进行文件编辑,按Esc可以回到命令行模式 |
底行模式 | 光标位于屏幕的底行 可以进行文本的查找,替换,显示行号等操作 |
vim的命令
模式切换命令
命令 | 切换前模式 | 切换后模式 | 功能 |
---|---|---|---|
i | 命令模式 | 插入模式 | (insert)从当前光标所在字符前方开始插入 |
a | 命令模式 | 插入模式 | (append)从当前光标所在字符后方开始插入 |
o | 命令模式 | 插入模式 | (open)从当前光标所在行下面开启一新行开始插入 |
I | 命令模式 | 插入模式 | (Insert)从当前光标所在行首开始插入 |
A | 命令模式 | 插入模式 | (Append)从当前光标所在行尾开始插入 |
O | 命令模式 | 插入模式 | (Open)从当前光标所在行上面开启一新行开始插入 |
Esc | - | 命令模式 | |
: | 命令模式 | 底行模式 | |
:! Command | 命令模式 | 命令模式 | 在编辑器外部执行命令Command ,再回到编辑器继续工作 |
保存和退出指令(底行模式)
命令 | 功能 |
---|---|
:q | (quit)退出未修改的文件(若文件已修改且未保存,则此命令无效) |
:q! | (quit)强制退出,且不保存未修改的部分 |
:w | (write)保存文件但不退出 |
:w Filename | (write)另存为文件名为Filename 的文件且不退出 |
:x | (exit)保存文件并退出 |
:r Filename | (read)读入文件名为Filename 的文件内容并插入到当前光标所在行的下一行 |
拷贝与粘贴命令
命令 | 功能 |
---|---|
[N] x | (expurgate)删除从当前光标所在字符开始的连续N 个字符(并复制到编辑器缓冲区) |
[N] dd | (delete)删除从当前光标所在行开始连续的N 行(并复制到编辑器缓冲区) |
[N] yy | (yank)复制从当前光标所在行开始连续的N 行到编辑器缓冲区 |
p | (put)将编辑器缓冲区内的文本复制到当前光标所在位置 |
u | (undo)撤销上一次操作 |
y0 | (yank)将当前光标至行首的字符复制到缓冲区 |
y$ | (yank)将当前光标至行尾的字符复制到缓冲区 |
d0 | (delete)将当前光标至行首的字符剪切到缓冲区 |
d$ | (delete)将当前光标至行尾的字符复制到缓冲区 |
: n1,n2 d | (delete)将第n1 到n2 行的内容剪切到缓冲区 |
: n1,n2 y | (yank)将第n1 到n2 行的内容复制到缓冲区 |
光标命令
命令 | 功能 |
---|---|
h ,j ,k ,l | 方向键,相当于←,↓,↑,→ |
:N | 跳转到文件第N 行 |
:1 或gg | 跳转到文件第1行 |
:$ 或G | 跳转到文件最后一行 |
set nu 和set nonu | 设置显示和取消行号显示 |
查找和替换命令
-
查找命令
命令 功能 /pattern
查找符合正则表达式 pattern
的字符串,匹配的结果会以高亮显示n
正向查找下一个匹配结果 N
反向查找上一个匹配结果 -
替换命令
命令 功能 :s/oldstring/newstring
将当前行第一个 oldstring
替换为newstring
:s/oldstring/newstring/g
将当前行所有 oldstring
替换为newstring
:3,5 s/oldstring/newstring
将第 3~5
行内每行第一个oldstring
替换为newstring
:% s/oldstring/newstring
将所有行内每行第一个 oldstring
替换为newstring
:% s/oldstring/newstring/g
将所有行内所有 oldstring
替换为newstring