Linux-Vi编辑器使用
一、vi/vim 三种模式
1-命令模式
使用vi命令进入,此时就是命令模式,此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。
* 进入vi编辑器:vi hello.txt
*
* 常用命令:
i 切换到输入模式,以输入字符。
x 删除当前光标所在处的字符。
: 切换到底线命令模式,以在最底一行输入命令。
* 编辑多个文件:
vi demo1 demo2 demo3
使用:":n" 切换到下一个文件编辑
gg:光标回到第一行,第一个字符
nG:光标移到第n行
7G:光标移到第七行
0:表示回到句首行
$:表示行末尾
可以使用方向键移动光标,但进入insert模式,不能使用方向键(ubuntu下,CentOs可以使用光标)
nyy: 表示从该行开始复制n行
ndd: 表示从该行开始删除n行
按2次u: 可以回到上一步操作
Ctrl+D:向后反页
Ctrl+U:向前翻页
2-输入模式
如何进入输入模式?
- 命令模式下按小写
i
: 直接输入即插在光标左侧 - ~小写
a
: 在光标右侧插入内容 - ~大写
O
: 光标上方开启新行输入 - ~小写
o
: 光标下方开启新行输入 - ~大写
I
: 回到 光标所在行 行首输入 - ~大写
A
: 到行尾进行输入 (光标所在行)
* 可使用按键:
字符按键以及Shift组合,输入字符
Enter,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式
3-底线命令模式
如何进入底线模式?
命令模式下按下英文冒号(:
) 就进入了底线命令模式。
* 常用命令:
:q 退出程序 quit
:w 保存文件
:wq 退出并保存
:q! 退出不保存
:set nu 设置行号
二、命令模式操作
1-光标的移动:
1.使用方向移动光标:
命令模式下:可以使用方向键移动光标
2.使用字母:(命令模式)
l:右
j:下
h:左
k:上
3.数字加方向键
7->:向右7
其他同理...
4.数字加字母键
7+L:向右7
其他同理...
5.逐个单词移动光标
w:向前一个单词 word
b:向后移动一个单词 back
e:移动到所在单词结尾
2-替换文本
* 命令模式下:
问前查找字符串
* /+字符串
* eg:/class 查找class,光标会移动到查找位置处
* 继续向前查找:输入n
* 查找结束:
问后查找字符串
* /a 查找a /b 查找b
替换指定字符
*
* 命令模式下按大写R:即可向后替换光标所在的字符
单词替换
* 将光标定位到单词开头,命令模式输入cw,即可替换
3-复制,粘贴,剪切,删除行
* 命令模式下:
* 复制单个字符(光标所在处):yl (小写的L)
* 小p:复制到某行后面
* 大P:复制到某行上面
* 剪切单个字符(光标所在处):x
* 复制粘贴单词:yw
命令模式下:
先将光标移到单词首字符 然后按:yw
* 连续复制多个单词:nyw
** dd:删除该行
练习:
2.用vim打开test.txt并设置行号
vi /root/test.txt 然后按冒号“:”+set nu
2. 分别向下、向上翻两页
Ctrl+D:向后反页
Ctrl+U:向前翻页
3. 把光标移动到第49行
49G
4. 让光标移动到行末,再移动到行首
Esc 回到命令模式,按0回到行首,按$到行末
5. 移动到test.txt文件的最后一行
命令模式按G
6. 移动到文件的首行
命令模式按gg
7. 搜索文件中出现的 services并数一下一共出现多少个
:%s/services//gn
10. 把从第一行到第三行出现的services 替换成service
1,3s/services/service/g
11. 还原上一步操作
按2次u
12. 把整个文件中所有的light替换成lighting
:1,$s/light/lighting/g
13. 把光标移动到50行,删除字符”#”
50G,将光标移到到# 按x
15. 删除第50行
先到50行50G 再删除该行 dd
17. 删除从37行到42行的所有内容
先到37行37G 再向下删除6行6dd
19. 复制48行并粘贴到52行下面
先到48行48G 复制该行yy 再到52行52G 再按P
21. 复制从37行到42行的内容并粘贴到44行上面
先到37行 37G 再复制6行6yy 到44行44G 按P
24. 把37行到42行的内容移动到19行下面
先到37行37G 再复制6yy 再删除该6行6dd 到19行19G 按p
27. 在第一行下面插入新的一行,并输入”# Hello!”
先到第一行gg 再按o