很多发行版Linux中,直接把vi做成vim的软链接,so ,你输vi与vim基本一样。vi=Visual interface,vim=vi improved 即vi升级版,支持代码补全,编译,错误跳转等方法。
基本操作
- 打开或新建文件 $ vi 文件名
- 开始编辑 按下i即可
- 退出编辑 按下esc,然后:wq保存退出文件
- 进入末行模式 :
- 保存 w
- 退出 q
- 强行 !
- 保存退出 x 效果等同于 wq
常用命令
1.移动光标
方向移动
- h向左 j向下 k向上 l向右(键盘上hjkl是连着的)
行内移动
- w向后移动一个单词的距离,b向前移动一个单词的距离
- 0 快速回到行首
- ^ 快速回到非空格行首
- $ 快速回到行尾
行内移动
- gg 文件顶部
- G 文件末尾
- 数字gg 移动到数字对应行数
- 数字G 移动到数字对应行数
- :数字 移动到数字对应行数(即末行模式输入数字后回车)
屏幕移动
- Ctrl+b 向上翻页
- Ctrl+f 向下翻页
- H 屏幕顶部
- M 屏幕中间
- L 屏幕底部
段落移动
- { 上一段 }下一段
- % 在{} [] 等之间前后切换
标记
- mx 对当前行打标记,标记为x,x可以为a-z A-Z
- ‘x 回到x标记,同理可以为其他标记
选中文本
- v 可视模式 即选中当前标开始到光标移动位置
- V 可视行模式 即光标当前行到光标移动行
- Ctrl+v 可视块模式 当前位置到光标移动位置,不同行加上所有行相应位置
撤销和恢复撤销
- u 撤销上次命令
- **Ctrl+r 恢复撤销的命令 **
删除文本
- x 剪切光标所在字符,或者选中文字
- d 删除移动命令对应的内容
- dd 删除光标所在行,可以ndd删除多行
- D 删除至行尾
复制粘贴
- y复制
- yy复制一行
- p粘贴
替换命令
- r 替换命令
- R 替换模式
缩排和重复执行(可以结合选中文本使用v V ctrl+v等)
- >> 向右增加缩进
- << 向左减少缩进
- . 重复上次执行
查找命令
- **/查找内容 **
- n 向下查
- N 向上查找
- * 向下查找光标单词
- # 向上查找光标单词
查找并替换
- %s/原文本/替换文本/g 全局替换固定格式 例~ :%s/hello/haha/g 该命令表示把所有hello替换成haha
- s/原文本/替换文本/g 局部替换,需结合选中文本使用
- %s/原文本/替换文本/gc (y/n/a/q/l/^E/^Y == 替换/不替换/全替换/退出替换/最后一个/下滚屏/上滚屏)
插入命令
- i 光标前插入并开始插入模式
- I 行首插入并开始插入模式
- a 光标后插入并开始插入模式
- A 行尾插入并开始插入模式
- o 下一行插入空行并开始插入模式
- O 上一行插入空行并开始插入模式
其他末行命令
- :e . 浏览当前文件夹下文件,
- :n . 新建文件
- :w . 另存为
其他操作
- 打开文件,直接定位到文件末尾 $ vi 文件名 +
- 打开文件,直接定位到某一行 $ vi 文件名 +行号 ,例$ vi demo +3
- 编辑命令与数字连用,输入10 ,按i进入插入模式,输入* 按Esc回到命令模式,会出现10个*
- 可视块与I连用,Ctrl+v进入可视块,选中对应行,然后I进入插入,插入想要信息AA,ESC退出,所有行前统一出现AA
附
若未提交更改,比如中途死机,可以根据vi界面提示,R恢复,D删除临时文件等