吐血整理--VI编辑器常用操作汇总

举报
小蔡coding 发表于 2024/11/01 11:06:06 2024/11/01
【摘要】 相信不少小伙伴在写SHELL脚本或者编辑一些文件的时候,用到的vim编辑器还蛮多的,VIM编辑器用好了真的很方便用不好真的闹心! 我总结了日常工作常用的VI编辑器常用操作供大家一起学习!记得点赞收藏加关注哦!(^ _ ^)

1、前言
相信不少小伙伴在写SHELL脚本或者编辑一些文件的时候,用到的vim编辑器还蛮多的,VIM编辑器用好了真的很方便用不好真的闹心!

我总结了日常工作常用的VI编辑器常用操作供大家一起学习!记得点赞收藏加关注哦!(^ _ ^)

2、vi基础操作
1、概念
vi的三种模式
1.命令模式
2.编辑模式
3.末行模式(命令模式下,按“:”即可进入末行模式)

默认情况下,VI编辑器是命令模式,需要在里面写东西的时候需要进入编辑模式

命令模式到编辑模式:插入命令i,附加命令a,打开命令o,修改命令c,取代命令r,替换命令s

编辑模式到命令模式:Esc

退出流程:
1.进入命令模式
2.进入末行模式
3.在末行模式输入以下内容,对应相应操作
【:w】 保存文件
【:w!】 若文件为只读,强制保存文件
【:q】 离开vi
【:q!】 不保存强制离开vi
【:wq】 保存后离开
【:wq!】 强制保存后离开
【:! command】 暂时离开vi到命令行下执行一个命令后的显示结果
【:set nu】 显示行号
【:set nonu】 取消显示行号
【:w newfile】 另存为

 

2、插入命令

i:插入光标前一个字符
I:插入行首
a:插入光标后一个字符
A:插入行末
o:向下新开一行,插入行首
O:向上新开一行,插入行首
移动光标
h:左移     
j:下移        
k:上移      
l:右移      
M:光标移动中间行      
L:光标移动到屏幕最后一行行首      
G:移动到指定行,行号 -G       
{:按段移动,上移      
}:按段移动,下移     
Ctr-d:向下翻半屏     
Ctr-u:向上翻半屏     
gg:光标移动文件开头      
G:光标移动文件末尾     

 

3、删除命令

x:删除光标后一个字符,相当于del
X: 删除光标前一个字符,相当于Backspace
dd:删除光标所在行,n dd删除指定的行数D:删除光标后本行所有的内容,包括光标所在字符

 

4、撤销命令

u:一步一步撤销
ctr-r:反撤销

5、重复命令

.:重复上一次操作的命令
文本行移动
>>:文本行右移
<<:文本行左移
复制粘贴
yy:复制当前行,n yy 复制n行
p:在光标所在位置向下新开辟一行,粘贴
可视模式
v:按字符移动,选中文本
V:按行移动,选中文本可视模式可以配合d,y,>>,<< 实现对文本块的删除,复制,左右移动
替换
r:替换当前字符
R:替换当前行光标后的字符

区域选择 替换 搜索

/string  向光标之下寻找一个名称为string字符串

?string   向光标之上寻找一个名称为string字符串

n  正向查找,搜索出的string,可以理解成next

N  反向查找,搜索出的string,可以理解成Not next

n是从上到下,N是从下到上

v和V主要的是进行行选择,而Ctrl+v是进行的列选择,从灵活性上来说,ctrl+v更加的灵活一点

:n1,n2s/string1/string2/g  这里的n1是查找的开始行数,n2是查找结束的行数。【:2,7s/ddd/fff/g】在第2行,第7行之间,将ddd替换成fff

:1,$s/string1/string2/g   从第一行到最后一行寻找 string1 字符串,并将该字符串替换为 string2 !(常用)

:1,$s/string1/string2/gc  从第一行到最后一行寻找 string1 字符串,并将该字符串替换为 string2 !且在替换前显示提示字符给用户确认 (confirm) 是否需要替换!(常用)

:s/vivian/sky/     替换当前行第一个 vivian 为 sky
:s/vivian/sky/g     替换当前行所有 vivian 为 sky

:n,$s/vivian/sky/   替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
:n,$s/vivian/sky/g   替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
n 为数字,若 n 为 .,表示从当前行开始到最后一行

:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky
:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky

:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/

不加 g,表示只对搜索字符串的首次出现进行替换;

 g放在命令末尾,表示对搜索字符串的每次出现进行替换;

g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作

 

补充

以下均在命令模式下

跳到首行和尾行

shift + g 跳到尾行
gg 跳到首行

在当前行下一行插入

按o

删除所有内容

ggdG

显示行号

:set nu

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。