这里写目录标题
文本编辑器vi/vim
vi编辑器时Linux和Unix上最常用的文本编辑工具,能够对内容进行创建、查找、删除、替换、复制粘贴、块操作等文本操作,且用户可以根据自己的习惯需求对vi编辑器进行定制。
vim是vi的增强版,且功能强大,具有程序编辑能力,可以显示字体颜色方便辨别语法的正确性。
vi/vim的三种模式
命令模式
输入模式
末行模式
vim filename #打开文件
vim +n filename #打开文件时光标定位到第n行
vim +/pattern filename #打开文件并定位到第一次被/pattern匹配到的内容行首
[root@zyq ~]# vi /etc/yum.repos.d/zzz.repo
...
命令模式
命令模式----->输入模式
命令 | 在命令模式下转为输入模式 |
---|---|
i | insert,在当前光标所在字符的前面,转为输入模式 |
I | 大写的i,在当前光标所在行的行首转换为输入模式 |
a | append,在当前光标所在字符的后面转换为输入模式 |
A | 在当前光标所在行的行尾转换为输入模式 |
o | open,在当前光标所在行的下方新建一行并转为输入模式 |
O | 大写的o,不是数字0,在当前光标所在行的上方新建一行并转换为输入模式 |
关闭文件方式
末行模式下关闭文件
命令 | 意义 |
---|---|
q! | 不保存退出 |
wq! | 强制保存并推出 |
x | 强制保存并退出 |
命令模式下关闭文件
- ZZ
移动光标
移动方式 | 指令 | 效果 |
---|---|---|
逐字符移动 | h l j k #h #l #j #k | 向左移动一个字符 向右移动一个字符 向下移动一个字符 向上移动一个字符 向左移动#个字符 向右移动#个字符 向下移动#个字符 向上移动#个字符 |
以单词为单位移动 | w e b #w #e #b | 移动到下一个单词的词首 跳至当前或下一个单词的词尾 跳至当前或上一个单词的词首 以当前光标为起点跳至第#个单词的词首 以当前光标为起点跳至第#个单词的词尾 以当前光标为起点跳至第#个单词的词首 |
行内跳转 | 0 ^ $ | 数字0,跳转到绝对行首 跳转到行首的第一个非空白字符 跳转到绝对行尾 |
行间跳转 | gg G #gg #G | 跳转到第一行 跳转到最后一行 跳转到第#行 跳转到第#行 |
翻屏 | ctrl+f ctrl+b | 向下翻一屏 向上翻一屏 |
字符编辑
编辑命令 | 意义 |
---|---|
x | 删除光标所在处的单个字符 |
#x | 删除光标所在处及其向后共#个字符 |
xp | 交换光标所在处的字符及其后面字符的位 |
删除命令
命令模式下d命令常与跳转命令组合使用
命令 | 意义 |
---|---|
d$ | 表示删除当前光标所在位置到行尾的内容 |
d^ | 表示删除当前光标所在位置到第一个行首非空白字符位置的内容 |
d0 | 表示删除当前光标所在位置到绝对行首的内容 |
#d | 删除跳转符指定范围内的#个 |
dd | 删除当前光标所在行整行 |
#dd | 删除包括当前光标所在行在内的#行 |
D | 删除包括当前光标所在行在内的#行 |
末行模式下d命令的使用
语法::StartADD,EndADDd
这里的StartADD与EndADD是指一个范围,例如:
-
1,5d:表示删除第1到第5行
范围表示方法:
表示方法 意义 . 光标所在当前行 $ 最后一行 +# 光标所在行往后#行 $-# 倒数第#行 % 全文 复制命令:yy
粘贴命令:p
- p:小写p
- 若删除或复制的为整行内容,则粘贴至光标所在行的下方
- 若删除或复制的为非整行,则粘贴至光标所在字符的后面
- P:大写p
- 若删除或复制的为整行内容,则粘贴至光标所在行的上方
- 若删除或复制的为非整行,则粘贴至光标所在字符的前面
替换:r
- R:替换模式,替换多个字符
- r#:将当前光标的字符替换为#,这里的#可以是任何字符
撤销编辑:u
- u:撤销前一次的编辑操作,连接u命令可以撤销此前的n次编辑操作
- #u:直接撤销此前的#次编辑操作
- ctrl+r:还原最近一次的撤销操作
重复前一次编辑操作:.
可视化模式:
可视化模式下可以对选取的内容进行前面讲的所有编辑操作
- v:按字符选取内容
- V:按矩形块(行)选取内容
文本查找:
- /pattern:从上往下查找匹配的内容
- ?pattern:从下往上查找匹配的内容
- n:从上往下查找匹配到的内容的下一条
- N:从下往上查找匹配到的内容的下一条
查找并替换:s
s命令只能在末行模式下使用
语法:ADDR1,ADDR2 s/pattern/string/gi
- 1,5 s/abc/def/g:表示把第一行到第五行的所有abc替换为def
末行模式下显示或取消显示行号:
- set nu:显示行号
- set nonu:取消显示行号
- p:小写p