vi/vim编辑器的三种工作模式
命令模式
启动 vi/vim,便进入了命令模式。此状态下敲击键盘动作会被vim识别为命令,而非输入字符。 该模式中主要完成如光标移动、字符串查找,以及删除、复制、粘贴文件内容等相关操作。
输入模式
命令模式按下i, I, o, O, a, A, r, R等任何一个字母之后即可进入输入模式。可以对内容进行编辑。 处于输入模式时,vi编辑器的最后一行会出现“–INSERT–”的状态提示信息。
按Esc键可以回到命令模式。
末行模式
命令模式下,按 : (英文冒号)即进入末行模式。在此模式下,可进行读取、查找替换文件内容、保存文件、 退出编辑器等操作
不同模式之间的切换
命令格式:
vim [option] file
vi [option] file
:w 新文件名 另存为新的文件
命令模式下的基本操作
操作类型 | 操作键 | 功能 |
---|---|---|
翻页 | ctrl+f或者Pagedown | 向下翻页 |
ctrl+b或者Pageup | 向上翻页 | |
行内快递跳转 | Home或0 | 跳到行首 |
End 或$ | 跳到行尾 | |
2$ | 跳转到下一行的行尾 | |
行间快速跳转 | gg | 跳转到文件的首行 |
G | 跳转文件的末尾 | |
#G或#gg | #代表行号数字,直接跳转到#行 | |
M | 跳转到当前显示页面的中间行 | |
删除 | x或delete | 删除当前光标的字符 |
#d | 删除#个字符 | |
dd | 删除一整行 | |
#dd | 删除当前光标处向下的#行(包括当前行) | |
d^ | 删除当前光标之前到行首 | |
d$ | 删除当前光标到行尾 | |
替换 | R 或shift+r | 替换当前光标处文字,会进入替换模式 |
复制粘贴 | yy | 复制当前光标处整行 |
#yy | 复制当前光标处向下的#行(包括当前行) | |
p (小写) | 粘贴到光标处下一行 | |
P(大写) | 粘贴到光标处上一行 | |
撤销操作 | u | 只取消上一次的操作,可多次使用 |
U | U 取消所有操作 | |
反撤销 | ctrl+r | 取消上一次的撤销操作 |
查找 | /字符 | 向下查找 |
?字符 | 向上查找 | |
n | 向同一方向重复上次的查找指令 | |
N | 向相反方向重复上次的查找指定 |
命令模式切换至输入模式
i | 在光标前插入随后输入的文本,光标后的文本相应向右移动 |
I | 行首插入命令。=^i ,移动到第一个非空字符并进入插入模式 |
o | 在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本 |
O | 在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本 |
a | 在当前光标所在位置之后插入随后输入的文本 |
A | 行尾插入命令 |
末行模式下的基本操作
末行模式:文件中的指定内容执行保存、查找或替换等操作。使 Vim 切换到编辑模式的方法是在命令模式状态下按“:”(英文冒号)键,此时 Vim 窗口的左下方出现一个“:”符号,这是就可以输入相关指令进行操作了
快捷键 | 功能效果 |
:q | 退出不保存 |
:q! | 强制退出不保存 |
:w | 保存 |
:w 新文件名 | 另存为新文件 |
:wq 或 :zz 或 :x | 保存并退出 |
: [替换范围] s/旧内容/新内容[/g] | 将旧内容替换为新内容 |
:s /old/new | 替换当前行中的第一个old改为new |
:s /old/new/g | 替换当前行中的所有old改为new |
:#,# s/old/new/g | $表示最后一行,最后一行的AB替换为CD |
:% s/old/new | %代表全文,全文替换所有old改为new |
:# d | 删除 第#行 |
:#,# d | 删除#到#行 |
:#,# y | 复制三到6 行 |
:set nu (:set nonu取消设置) | 加行号 不显示行号 |
:set cul (:set nocul 取消设置 | 光标所在行有下划线(取消) |
:set key=password | 加密码 |
:1,3 co 10 | 将第1~3行复制粘贴到第10行下方(co表示copy) |
:1,3 m 10 | 将第1~3行剪切到第10行下方(m表示move |