Vi命令总结
进入vi的命令
- vi filename:打开或新建文件,并将光标置于第一行首
- vi +n filename:打开文件,并将光标置于第n行行首
- vi + filename:打开文件,并将光标置于最后一行行首
- vi + /pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
- vi -r filename:在上次正用vi编辑时发生系统崩溃,恢复filename
- vi filename1 … filenamen:打开多个文件,依次进行编辑
移动光标类命令
- i:在光标前
- I:在当前行首
- a:光标后
- A:在当前行尾
- o:在当前行之下新开一行
- O:在当前行之上新开一行
- r:替换当前字符
- R:替换当前字符及其后的字符,直至按ESC键
- s:从当前光标位置处开始,以输入的文本替代指定数目的字符
- S:删除指定数目的行,并以所输入文本替代体
- ncw/nCW:修改指定数目的子
- nCC:修改指定数目的行
移动光标类命令
- h:光标左移一个字符
- l:光标右移一个字符
- space:光标右移一个字符
- Backspace:光标左移一个字符
- k或ctrl+p:光标上移一行
- j或ctrl+n:光标下移一行
- Enter:光标下一一行
- w或W:光标右移一个字至字首
- b或B:光标左移一个字至字首
- e或E:光标右移一个字至字尾
- ):光标移至句尾
- (:光标移至句首
- }:光标移至段落开头
- {:光标移至段落结尾
- nG:光标移至第n行行首
- n+:光标下移n行
- n-:光标上移n行
- n$:光标移至第n行行尾
- H:光标移至屏幕顶行
- M:光标移至屏幕中间行
- L:光标移至屏幕最后行
- 0:光标移至当前行行首
- $:光标移至当前行行尾
删除命令
- dd:删除光标所在当前行
- ndw或ndW:删除光标处开始及其后的n-1个字
- do:删至行首
- d$:删至行尾
- ndd:删除当前行及其后n-1行
- x或X:删除一个字符,x删除光标后的,而X删除光标前的
- ctrl+u:删除输入方式下所输入的文本
- :n1, n2 d:将n1行到n2行之间的内容删除
搜索及替换命令
- /pattern:从光标开始处向文件尾搜索pattern
- ?patter:从光标开始处向文件首搜索pattern
- n:在同一方向重复上一次搜索命令
- N:在反方向上重复上一次搜索命令
- :s/p1/p2/g:将当前行中所有p1均用p2替代
- :n1, n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代
- :g/p1/s//p2/g:将文件中所有p1均用p2替换
复制粘贴命令
- y:在使用v模式选定了某一块的时候,复制选定块到缓冲区用
- yy:复制正行(nyy或者yny,复制n行,n为数字)
- y^:复制当前到行头的内容
- y$:复制当前到行尾的内容
- yw:复制一个word(nyw或者ynw,复制n个word,n为数字)
- yG:复制到文档(nyG或者ynG,复制到第n行,如1yG或y1G,复制到文档尾)
- d:剪切选定块到缓冲区
- dd:剪切整行
- d^:剪切至行首
- d$:简介至行尾
- dw:剪切一个word
- dG:剪切至文档尾
- p:小写p代表粘至游标后(下),因为游标是在具体字符的位置上,所以实际是在该字符的后面
- P:大写P代表粘至游标前(上)
- n1, n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
- n1, n2 m n3:将n1行到n2行之间的内容移至到第n3行下
重要命令
- w:保存当前文件
- e filename:打开文件filename进行编辑
- x:保存当前文件并退出
- q:退出vi
- q!:不保存文件并退出vi
- !command:执行shell命令command
- n1, n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示整个文件内容作为command的输入
- r!command:将命令command的输出结果放到当前行
参考文献
https://zhuanlan.zhihu.com/p/21278816?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io