3.vi编辑器

vi是文本编辑器,只编辑纯ASCII码的文档,没有任何多余的修饰符。

首先需要确保系统已经安装了 VI 工具,那么怎样去检查是否已经安装了呢?
使用 rpm 命令查看是否已安装 vi:

[root@exercise1 ~]# rpm -qf `which vi`
vim-minimal-7.4.160-2.el7.x86_64

###以上输入的查询结果表示已安装好

vim是vi的增加版,最明显的区别就是vim可以语法加亮,它完全兼容vi

安装
yum -y install yum

模式介绍:

(1) 首次进入文件 处于“一般模式”。
(2) 出现 “Insert” 处于“编辑模式”。
(3) 输入 : 处于“命令行模式”。

即有三种模式:一般模式、编辑模式、命令行模式

模式切换

1. 一般模式 ==> 编辑模式: 
    (1) i:当前字符之前插入 (光标前)
    (2) I:行首插入 (行首)
    (3) a:当前字符之后插入 (光标后)
    (4) A:行尾插入(行尾)
    (5) o:下一行插入 (另起一行)
    (6) O:上一行插入(上一行插入)

2. 在一般模式下做的操作:
    (1) h:光标向左移动
    (2) j :光标向下移动
    (3) k:光标向上移动
    (4) l :光标向右移动
    (5) 0 和 home 键:切换到行首, $和 end 键表示切换到行尾
    (6) gg:快速定位到文档的首行 , G 定位到未行
    (7) 3gg:或者 3G 快速定位到第 3 行
    (8) u:撤销一步,每按一次就撤销一次
    (9) r :替换
    (10) /string(字符串):找到或定位你要找的单词或内容,如果相符内容比较多,
    我们可以通过 N、n 来进行向上向下查找,并且 vi 会对查找到的内容进行高亮显示,
    取消用 :noh
    (11) /^d:^符号表示以什么开头,查找以字母 d 开头的内容
    (12) /t$:$符号表示以什么结尾,查找以字母 t 结尾的内容

3.  一般模式---》对文本进行编辑:

​ 对于文本的内容编辑主要有:删除、复制、粘贴、撤销、等等常见操作。
​ (1) y:复制(以字符为单位)表示对单个字符进行复制,如果要复制整行,用 yy(以行为单位)
​ (2) Nyy:复制 N 行,比如: 2yy ,表示在光标所在的行往下复制 2 行
​ (3) dd:删除,以行为单位,删除当前光标所在行
​ (4) Ndd:删除 N 行,比如:2dd,表示光标所在行往下删除 2 行
​ (5) p:在光标所在位置往下插入粘贴的内容
​ (7) x:向后删除一个字符,等同于 Delete
​ (8) X:向前删除一个字符
​ (9) D:从光标处删除到行尾
​ (10) u:撤销操作
​ (11) ctrl+r:还原撤销过的操作,将做过的撤销操作再还原回去,也就是说撤销前是什么样,再还原成什么样

​ 总结:vi 如何进入其它模式。
​ (1) a、A、o、O、i、I 都是可以进行插入,编辑模式
​ (2) : 输入冒号进入命令行模式
​ (3) r 擦除、改写,进入替换模式
​ (4) 进入以上模式后,想要退出 ,按 esc

​ 4.命令行模式操作
​ (1) :w 保 存 save
​ (2) :w! 强制保存
​ (3) :q 没有进行任何修改,退出 quit
​ (4) :q! 修改了,不保存,强制退出
​ (5) :wq 保存并退出
​ (6) :wq! 强制保存并退出
​ (7) :x 保存退出
​ (8) :w filename 保存到新文件
​ (9) :n1,n10 w filename 将n1到n2的内容保存到新文件

文本替换:

格式 : 范围(其中%代表所有内容) s分隔符 旧的内容 分隔符 新的内容 (分隔符可以自定义)

默认是每一行的第一个符合要求的词 (/g全部)

:1,3 s/Jan/Feb              替换第1到3行中出现的第一个Jan进行替换为Feb
:1,3 s/Jan/Feb/g            替换第1到3行中查找到所有的Jan进行替换为Feb
:3 s/Jan/January            只把第3行中内容替换了
:% s/Jan/January/g  	    将文本中所有的Jan替换成January
:% s/Jan/January/gi	        将文本中所有的Jan替换成January, 并且忽略Jan的大小写
:% s@a@b@g	                将文本中所有的a替换成b
:1,$ s/Jan/January/g        替换第一行到最后所有的Jan替换成January

块选择

在一般模式下:
v       字符选择,会将光标经过的地方选中
V       行选择,会将光标经过的地方选中
ctrl+v  可以用长方形的方式选择数据
shift+v 进入行模式
y       将选中的地方复制
d       将选中的地方删除
vim异常退出: 
方法1:
vim -r filename 恢复 
方法2:
rm -f .filename.swp 删除 

vim快速跳转至多少行: 

vim proxy.conf +12 


自定义 vi 使用环境

临时设置
    (1) :set nu 设置行号
    (2) :set nonu 取消设置行号
    (3) :N 移动到第N行

永久设置
    [root@exercise1 ~]# vi /etc/vimrc #设置后会影响到系统所有的用户
    
    [root@exercise1 ~]# vi ~/.vimrc #在用户的家目录下,创建一个
                               #以点开头的的文件.vimrc 此修改的应用范围仅生效于
                               #该用户,~符号表示匹配当前登录用户匹配家目录,
                               #以.点开头的表示隐藏文件
    
    root用户下所有文件打开默认带行号:
    [root@exercise1 ~]# vi /root/.vimrc   #使用vi命令创建或修改家目录下的.vimrc并添加set nu
    set nu
    [root@exercise1 ~]# cat /root/.vimrc 
    set nu
    [root@exercise1 ~]# vi /etc/passwd    #以上设置完成后,使用vi打开文件,自动会显示行号

vi/vim经典报错(这些报错有选项提示是用vim操作的)

情况一:
如果发现交换文件的占用进程状态是正在运行,说明有人正在修改该文件,一般我们会选择终止,或者退出。否则,
谁最后退出,就以谁的修改版本为准。这样会造成先提交修改的用户修改的内容丢失。

vim1.png

情况二:
非正常状态退出vi,导致不正常的保存退出,导致Swap文件残留。
出现以下提示。此时占据的进程号没有运行,这个是时候,我们一般会利用swp文件进行之前工作的恢复操作R,
恢复后,即可删除swp文件。也可以直接在报错界面输入:q退出,直接删掉.swp文件。


​ [root@exercise1 opt]# ls -a #此时没有.swp文件
​ . … 1 1d 1e 1f 2 3 4 5 i.bak id j log log.bak messages
​ [root@exercise1 opt]# vi /opt/messages #vi进去以后使用ctrl+z停止

​ [1]+ 已停止 vi /opt/messages
​ [root@exercise1 opt]# vi /opt/messages #此时进去会报错
​ [root@exercise1 opt]# ls -a #查看发现多了一个.swp文件
​ . … 1 1d 1e 1f 2 3 4 5 i.bak id j log log.bak messages .messages.swp
​ [root@exercise1 opt]# rm -rf .messages.swp #删掉.swp文件,删完再进去就正常了
​ [root@exercise1 opt]#
vim2.png
vim2_1.png

vi练习示例1

1.将/etc/passwd复制到/opt目录下,并重命名为test.txt

cp -r /etc/passwd /opt/test.txt

2.用vim打test.txt并显示行号

cd /opt

vi test.txt

:set nu

image-20220713113621324

3.分别向下、向右、向左、向右移5个字符,分别向下、向上翻两页

​ (1) h:光标向左移动
​ (2) j :光标向下移动
​ (3) k:光标向上移动

​ (4) l :光标向右移动

​ (5)上下翻页分别用PgUpPause跟PgDnBreak来实现

4.把光标移动到第10行,让光标移动到行末,再移动到行首,移动到st.txt文件的最后一行,移动到仪件的首行

操作分别为:10+G,End,Home,G,gg,

5.搜索文件中出现的r0ot并数一下一共出现多少个,不区分大小写搜索

/root\c N(向上)n(向下)来上下查找后存在4个,

6.把从第一行到第三行出现的root替换成-od-,然后还原上一步操作

:1,3 s/root/-od-/g

8.把整个文件中所有的root替换成-od-

:% s/root/-od-/g

9.把光标移动到20行,删除本行,还原上一步操作

20+G,dd,u

10.删除第19行,还原上一步操作

19+G+dd,u

11.删除从5行到10行的所有内容,还原上一步操作

5+G,6+dd,u

12.复制2行并粘贴到11行下面,还原上一步操作

2+G,yy,11+G,End,p,u

image-20220713121008475

13.复制从11行到15行的内容并粘贴到8行上面,还原上一步操作

11+G,5yy,7G,End,p,u

image-20220713121415377

14.把13行到18行的内容移动文件的尾部,还原上一步操作

13G,V选中1318行内容,y,V选中1318行内容,d,G,End,p,u

15.光标移动到首行,把sbin/nologin改成bin/bash

gg,:% s@sbin/nologin@bin/bash@g

16.在第一行下面插入新的一行,并输入"#Helo!"

gg,End,i,回车,输入"#Helo!"

image-20220713124617193

17.保存文档并退出

:wq

vi练习示例2

[root@exercise1 opt]# cat proxy.conf
server {
        listen       8080;
        server_name  LOCALhost;
        location / {
        	proxy_pass http://127.0.0.1:8080;
        	proxy_set_header Host $http_host;
        	proxy_set_header X-Forward-for;
        	proxy_intercept_errors on;
			proxy_next_upstream error timeout;
			proxy_next_upstream_timeout 3s;
			proxy_next_upstream_tries 2;
			error_page 500 502 403 404 /proxy_error.htm1;          
        } 
        location =/proxy_error.html {
            root /code/proxy;
        }
    }

1.使用vim打开proxy.conf文件

2.修改Listen为listen.小写,并将8080修改为80

3.修ServerName为server name小写。

4.修LOCALhost为localhost

5.在server name行下插入一行root/code;

5.复制5-14行的内容,然后将其粘贴到14行下面

6.删除与proxy_set_headerj相关的两行全部删除

7.如上操作完成后,在13-20行前面加上#号

8.删除21-23的行,然后保存当前文件

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值