一、保存与退出
- 离开VI
- ZZ 保存并离开
- :q 不保存退出
- :w 保存不退出
- :wq 保存且退出
- :q! 不保存强制退出
- :wq! 强制保存退出
- :w <newfile> 将当前文件内容保存到制定的newfile中
- :w! <newfile> 将当前文件保存到newfile中,如果newfile已经存在,则覆盖原有内容
- :x 保存并离开
二、代码维护命令
- set nu 添加行号显示
- set nonu 取消行号显示
- set autoindent 自动缩进
- set noautoindent 取消自动缩进
- u 恢复最后一个指令之前的结果
- U 恢复光标行之所有改变
- Ctrl+r 重做
三、插入模式
- a(append) 由光标时候插入资料
- A 由行末插入资料
- i(insert) 由光标之前加入资料
- I 由行首加入资料
- o(open) 新增一行于该行之下供输入资料用
- O 新增一行于该行之上供输入资料用
- ESC 离开插入模式
四、搜索
- /字符串 往光标之后寻找字符串
- /字符串 往光标之前寻找字符串
- n 往下继续寻找以下一个相同的字符串
- N 往上继续寻找下一个相同的字符串
五、替换
- s(substitute) 搜索某行列范围
- g(global) 搜索整个编辑器缓冲区
- :1,%s/old/new/g 将文件中的所以old改成new
- :10,20s/od/new/ 将第10行到20行中间的old改成new
- :%s/old/new/g 将编辑器缓冲区中的所有old改成new
- :1,%s/^/str 在文件的第一个行至最后一行行首插入str
- :%s/$/str/g 在文件的每一行行尾添加str
- :1,%s/str1/str2/gc 从文件第一行到最后一行寻找str1并替换成str2,需要逐一确认
六、删除与剪切
- x 删除光标所在的单个字符
- nx 删除光标后面的n个字符
- X 删除光标前面的一个字符
- nX 删除光标前面的n个字符
- dd 删除光标所在行
- ndd 删除光标所在行向下n行
- dw 删除光标所在位置开始的当前字的剩余部分
- dd 删除光标所在位置前面的当前字的剩余部分
- d$ 删除光标所在位置到行末的部分
- d0 删除光标所在位置到行首的部分
- d) 删除光标当前位置到本段落的结尾部分
- d( 删除光标当前位置到本段的开始部分
- d} 删除光标当前位置到本段落的结果部分
- d{ 删除光标当前位置到本段落的开始部分包括前面的空行
- :3,7d 删除第三行到第7行
- 7dd 剪切光标所在行开始的7行
七、复制与粘贴
- yy 复制当前行
- nyy 复制当前行开始的n行
- p 粘贴
八、定位
- 0 把光标移到当前行第一个字符
- $ 把光标移到当前行最后一个字符
- ctrl+f 向后滚一页
- ctrl+d 向后滚半页
- ctrl+b 向前滚一页
- ctrl+u 向前滚半页
- ctrl+e 向下滚一行
- ctrl+y 向上滚一行
- ) 光标所在位置移至下一个句子的第一个字元
- ( 光标所在位置移至该句子的第一个字元
- { 光标所在位置移至该段落的最后一个字元
- } 光标所在位置移至该段落的的第一个字元
- 段表示以一个空行开始和结束的片段
- H 将光标移至屏幕首行的行首,若在H命令之前加n标识将光标移至屏幕第n行的行首
- M 将光标移至屏幕显示文件的中间的行首
- L 将光标移至屏幕显示文件的底行的行首
- nG 光标移至行号所指定的行首
- G 将光标移至文件的最后一列
- gg=G