文本编辑器:vi,vim,nano
vi编辑器的工作模式
正常模式:
低端什么也没有或者只有文件名,改模式表示 命令模式(正常模式)
插入模式:
低端有INSERT字样表示当前模式为插入模式
命令模式:
低端含有:,表示当前模式为扩展命令模式(冒号模式/命令模式)
可视模式:
分别表示 ‘可视行’、‘可视’、‘可视块’
命令模式(正常模式):
(1)光标定位
- hjkl(左、下、上、右)
- 0 $(0:当前行首;$:当前行尾)
- gg G(gg:第一行首;G:最后一行行首)
- 3G(第三行行首)
- /xxx(快速定位到含有xxx的行;n 向下定位,N 向上定位)
- /^xxx(快速定位以xxx开头的行;n 向下定位,N 向上定位)
- /xxx$(快速定位以xxx结尾的行;n 向下定位,N 向上定位)
(2)文本编辑(少量)
y 复制
- yy 复制当前光标行
- 3yy 复制当前光标以下3行(包括当前光标行)
- ygg 从当前光标位置一直复制到第一行
- yG 从当前光标位置一直复制到最后一行
p 粘贴
d 删除
- dd 删除当前光标行
- 3dd 删除当前光标以下3行(包括当前光标行)
- dgg 从当前光标位置一直删除到第一行
dG 从当前光标位置一直删除到最后一行
x 删除光标所在的字符
D 从光标处删除到行尾
u 撤销
Ctrl + r 反撤销
r 可以用来修改当前光标的一个字符
(3)进入其它模式
- i 进入插入模式
- o 进入插入模式
- A 进入插入模式
- a 进入插入模式
- :进入末行模式(扩展命令模式)
- v 进入可视模式
- Ctrl+v 进入可视块模式(通过方向键可选中块,然后通过 y进行复制,p进行粘贴)
- V 进入可视行模式(通过方向键可选行,然后通过 y进行复制,p进行粘贴)
- R 进入替换模式(可以连续替换当前光标所在的字符)
插入模式:
Ctrl + p 或者 Ctrl + n 能自动提示需要插入的字符(只能在vim下使用,vi不支持)
可视块模式:
(1)块插入(在指定块前面加入字符):选择块 =》按 I =》在块前面插入字符 =》 按ESC
(2)块替换:选择块 =》按 r =》输入替换的字符
(3)块删除:选择块 =》按 d 或者 x
(4)块复制:选择块 =》 按 y
扩展命令模式(冒号模式):
(1)保存退出
- :10 进入第10行
- :w 保存
- :q 退出
- :wq 保存并退出
- :w! 强制保存
- :q! 不保存并退出
- :wq! 强制保存退出
- :x 保存并退出
- ZZ 保存并退出
(2)查找替换
- :1,5 s/xxx/yyy/(查找1-5的每一行的第一个xxx字符将其换成yyy)
- :5,$ s/xxx/yyy/(查找5-最后一行的每一行的第一个xxx字符将其换成yyy)
- :1,$ s/xxx/yyy/g【等同于 :% s/xxx/yyy/g】(查找5-最后一行的xxx字符将其换成yyy)
- :% s#/dev/sda#/var/ccc#g(将所有的/dev/sda换成/var/ccc)
- :,8 s/xxx/yyy/(从当前行到第8行的第一个xxx换成yyy)
- :4,9 s/^#//(正则:将4-9行以#开头的#换成空)
- :5,10 s/.*/#&/(5-10行开头加入#字符【.*整行 &引用查找的内容】)
- :5,10 s/.*/&#/(5-10行结尾加入#字符【.*整行 &引用查找的内容】)
(3)读入文件/写入文件(另存为)
- :w 存储到当前文件
- :w /tmp/aaa.txt 另存为/tmp/aaa.txt
- :1,3 w /tmp/aaa.txt 将1-3行另存为/tmp/aaa.txt
- :r /etc/hosts 读入文件到当前光标行后
- :5 r /etc/hosts 读入文件到第5行后
(4)环境设置
临时环境:
:set nu 设置行号
:set ic 不区分大小写(使用场景:先设置不区分大小写,然后可使用查找)
:set ai 自动缩进
:set list 显示控制字符
:set nonu 取消行号
:set noic 取消不区分大小写
永久的环境:
/etc/vimrc 影响所有系统的用户
~/.vimrc 影响某一个用户
举例:
vim ~/.vimrc #默认不存在,自动创建
set ic
set nu
: