一、vi/vim概述
vi/vim是所有Linux系统都提供的文本编辑器,它提供了一个窗口,通过它可以编辑文件;
(一)为什么要学习vi/vim?
- 面试可能问
- 工作中有的情况必须用到
- 提高工作效率
(二)vim是vi的增强版本,支持vi的全部功能
- 增加命令
- 增强功能包括颜色标记功能
二、vi操作模式
(一)vi编辑器创建文件
命令格式:vi 文件名
如果vi后面跟具体的文件名,表示打开该文件进行查看和编辑
- 如果文件已存在,则打开并编辑文件(看底部提示)
- 如果文件不存在,则新建并编辑文件(看底部提示)
没有鼠标,纯键盘操作(和Windows的记事本比较)
(二)vi操作模式
vi可分为三种操作模式,分别是
- 命令模式(command mode)
- 插入模式(insert mode)
- 底线模式(last line mode)
三种工作状态,完成不同的任务。
1.命令模式
- 刚进入时的默认模式
- 此时不可以直接添加文字
- 不能用退格删除文字
- 控制屏幕光标的移动
- 字符的删除、复制、粘贴
- 进入插入模式
- 进入底线模式
2.插入模式
- 在插入模式下面可以对文件内容进行编辑
- 插入模式下底部有个--INSERT--标记
- 在命令模式下,可以输入下面的字符进入插入模式
- i 插入,从目前光标所在之处插入所输入的字符
- a 增加,目前光标所在的下一个字符处开始插入字符
- o 插入新的一行,从行首开始输入字符
- 插入模式下按ESC健切换到命令模式
3.底线模式
- 在插入模式下先按Esc键进入命令模式,再输入冒号: 进入底线模式
- 在底线模式下,可以完成对文件的保存、内容替换、显示格式的设置等工作
4.三种模式切换
三、模式功能
(一)vi命令模式
1.光标移动
- 按shift+g:移动到文件的最后一行行首
- 按gg:移动到文件的开头
- 按0或^:移动到所在行的行首
- 按$:移动到所在行的行尾
- 光标的上下左右移动:
- 使用键盘上的方向键
- 或者kjhl对应上下左右
- 按ctrl+f或者pg dn:往下翻一页
- 按ctrl+b或者pg up:往上翻一页
2.复制、粘贴、删除
x:删除
- x是往后删,相当于delete键,X是往前删,相当于Backspace键
- 3x表示删除光标所在位置开始的3个字符,包括光标所在位置
- 如果输入命令错误,可以按Esc键取消
- dw:删除光标所在处直到词尾的内容
- dd:删除光标所在行,3dd表示删除从光标所在行开始的3行,包括光标所在行
- yw:复制光标所在处到词尾的内容
- yy:复制光标所在行,3yy表示复制3行
- p:粘贴
3.替换、撤销
- r:替换光标所在处的字符
- shift + r:连续替换字符直到按ESC为止
- u:假如误操作一个命令,可以马上按u进行撤销,可以连续按u撤销多个之前做出的操作(等于Windows下的ctrl + z)
- 反撤销:Ctrl + r
(二)插入模式
- 可以插入字符
注意:
- 上下左右键也可以导航
- delete和backspace键可以删除字符
(三)底线模式
1.定位查找
在命令模式下输入冒号进入底线模式
- :set nu 在每一行的行首显示行号
- :set nonu 关闭显示行号
- n n是你要输入的数字,再按回车,将跳转到数字指定 的行
- /关键字 先按/,再输入你要查找的字符
- 可以输入n,向下继续查找
- shift+n是往上查找
- set ic:设置忽略大小写
- set noic:设置不忽略大小写
2.字符替换
在底线模式下输入"1,$s/oldstring/newstring/g"会将全文的oldstring字符串替换成newstring字符串
- 1,$表示从第一行到最后一行
- s表示替换
- g表示每行全部替换
- 或者简写成:%s/oldstring/newstring/g
:1,20s/oldstring/newstring/g 将1至20行间的oldstring替换成newstring字符串
3.保存退出
:行号 w 文件名 如果你想摘取文件的某一段,存为另一个文件,可以使用这个指令,例如30,50 w nice
:w 新文件名 将文件另存为新文件
:wq 保存并退出
:q! 强制退出vi并不保存当前的修改内容