文档章节

vi详解

不朽灵都
 不朽灵都
发布于 2014/06/10 11:07
字数 1791
阅读 143
收藏 6
vi

VI 由加州大学伯克利分校,Bill Joy 研究开发。

文本编辑器有很多,比如图形模式的gedit、kwrite、OpenOffice,文本模式下的编辑器有vi、vim(vi的增强版本)。vi和vim是我们在Linux中最常用的编辑器。vi或vim是Linux最基本的文本编辑工具,vi或vim虽然没有图形界面编辑器那样点鼠标的简单操作,但vi编辑器在系统管理、服务器管理字符界面中,永远不是图形界面的编辑器能比的。

vi常用命令

(注意:vi是unix/linux操作系统中最经典的文本编辑器,只能是编辑字符,不能对字体、段落进行排版;它既可以新建文件,也可以编辑文件;他没有菜单,只有命令,且命令繁多。

虽然vi的操作方式与其他常用的文本编辑器(如gedit)很不相同 ,但是由于其运行于字符界面,并可用于所有unix/linux环境,目前仍被经常使用。)

vi 的三种命令模式

Command(命令)模式,用于输入命令

Insert(插入)模式,用于插入文本

Visual(可视)模式,用于视化的的高亮并选定正文

光标移动

(注:不同的版本所给与vi的三种工作模式也不同。vi有三种工作模式:命令模式、文本编辑模式和最后行模式。不同工作模式下的操作方法有所不同。

1.命令模式:

命令模式是启动vi后进入的工作模式,并可转换为文本编辑模式和最后行模式。在命令模式下,从键盘上输入的任何字符都被当作编辑命令来解释,而不会在屏幕上显示。如果输入的字符是合法的vi命令,则vi就会完成相应的动作;否则vi会响铃警告。

2.文本编辑模式:

文本编辑模式用于字符编辑。在命令模式下输入i(插入命令)、a(附加命令)等命令后进入文本编辑模式,此时输入的任何字符都被vi当作文件内容显示在屏幕上。按Esc键可从文本编辑模式返回到命令模式。

3.最后行模式:

在命令模式下,按“:”键进入最后行模式,此时vi会在屏幕的底部显示“:”符号年作为最后行模式的提示符,等待用户输入相关命令。命令执行完毕后,vi自动回到命令模式。

为了实现跨平台操作兼容不同类型的键盘,在vi编辑器中无论是输入命令还是输入内容都是用字母键。例如按字母键“i”在文本编辑模式下表示输入字母“i”,如果在命令模式下则表示将工作模式转换为文本编辑模式。)


当我们按ESC进入Command模式后,

#我们可以用下面的一些键位来移动光标;
j 向下移动一行
k 向上移动一行
h 向左移动一个字符
l 向右移动一个字符
ctrl+b 向上移动一屏
ctrl+f 向下移动一屏
向上箭头 向上移动
向下箭头 向下移动
向左箭头 向左移动
向右箭头 向右移动
我们编辑一个文件时,对于 j、k、l和h键,还能在这些动作命令的前面加上数字,比如 3j,表示向下移动3行。
/# +Enter #为查找的内容
插入模式(文本的插入)
i 在光标之前插入
a 在光标之后插入
I 在光标所在行的行首插入
A 在光标所在行的行末插入
o 在光标所在的行的下面插入一行
O 在光标所在的行的上面插入一行
s 用输入的文本替换光标所在字符
S 用输入的文本替换光标所在行
文本内容的删除操作;
x 一个字符
#x 删除几个字符,#表示数字,比如3x
dw 删除一个单词
#dw 删除几个单词,#用数字表示,比如3dw表示删除三个单词
dd 删除一行;
#dd 删除多个行,#代表数字,比如3dd 表示删除光标行及光标的下两行
d$ 删除光标到行尾的内容
J 清除光标所处的行与下一行之间的换行,行尾没有空格的话会自动添加一个空格。
#J 表示合并#(数字)行。
退出保存;
在命令模式下按 shift+: 文本底端出现冒号
:w     保存;
:w filename 另存为filename;
:wq!  保存退出;
:wq! filename 注:以filename为文件名保存后退出;
:q!   不保存退出;
:x    应该是保存并退出 ,功能和:wq!相同
#撤销操作
u    命令取消最近一次的操作,可以使用多次来恢复原有的操作[1]
U    取消所有操作
Ctrl+R可以恢复对使用u命令的操作
复制操作
yy    命令复制当前整行的内容到vi缓冲区
yw    复制当前光标所在位置到单词尾字符的内容到vi缓存区,相当于复制一个单词
y$    复制光标所在位置到行尾内容到缓存区
y^    复制光标所在位置到行首内容到缓存区
#yy    例如:5yy就是复制5行
#yw    例如:2yw就是复制两个单词
如果要复制第m行到第n行之间的内容,可以在末行模式中输入m,ny例如:3,5y复制第三行到第五行内容到缓存区。
#查找和替换
#vi的查找和替换功能主要在末行模式完成:
#至上而下的查找
/ 要查找的字符串,其中/代表从光标所在位置起开始查找,例如:/ work
#至下而上的查找
?    要查找的字符串 例如:? work
#替换
:s/old/new              用new替换行中首次出现的old
: s/old/new/g           用new替换行中所有出现的old
:#,# s/old/new/g        用new替换从第#行到第#行中出现的old
:% s/old/new/g          用new替换整篇中出现的old
如果替换的范围较大时,在所有的命令尾加一个c命令,强制每个替换需要用户进行确认,例如:s/old/new/c 或s/old/new/gc
恢复文件
#vi在编辑某一个文件时,会生成一个临时文件,这个文件以 . 开头并以 .swp结尾。正常退出该文件自动删除,如果意外退出例如忽然断电,该文件不会删除,我们在下次编辑时可以选择一下命令处理:
O    只读打开,不改变文件内容
E    继续编辑文件,不恢复.swp文件保存的内容
R    将恢复上次编辑以后未保存文件内容
Q    退出vi
D    删除.swp文件
或者使用vi -r 文件名来恢复未保存的内容

参考资料






© 著作权归作者所有

共有 人打赏支持
不朽灵都
粉丝 8
博文 38
码字总数 18073
作品 0
海淀
高级程序员
ELK6.0日志从收集到处理完整版教程(三)配置文件讲解

FIlebeat 配置文件内容详解: vi filebeat.yml logstash 配置详解: 日志从filebeat 收集到Logstash输出的流程图: Kibana 上边的日志通过logstash 过滤之后取出来在kibana上显示如下:...

bz_z
06/26
0
0
从0到1导出Linux下的MySQL中含有中文数据的文件(not complete)

注明版本号:[object Object] 这是刚安装完的时候的样子: 首先解决securefilepriv的问题: 由于文件是只读的,所以只能在root模式下来改。使用vi命令编辑mysqld.cnf: 在文件结尾加上这一行...

AKSPD2016
05/10
0
0
【转】Linux/Unix笔记本

文章转自:http://www.cnblogs.com/ggjucheng/archive/2012/08/18/2645321.html#2566680 Linux/Unix   了解Linux     Linux入门——个人感想   初入Linux     Windows XP硬盘安装...

张玉涛
2012/11/30
0
0
Linux目录(Centos)

easy808
2017/12/01
0
0
修改root登录用户名减少阿里云Linux主机“被暴力破解”警告

自从试用阿里云Linux主机后,几乎每天在“云邮箱”中都会收到“主机被暴力破解”的警告,警告信息如下: 云盾用户您好!您的主机:... 正在被暴力破解,系统已自动启动破解保护。详情请登录h...

boco
2013/07/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

(一)软件测试专题——之Linux常用命令篇01

本文永久更新地址:https://my.oschina.net/bysu/blog/1931063 【若要到岸,请摇船:开源中国 不最醉不龟归】 Linux的历史之类的很多书籍都习惯把它的今生来世,祖宗十八代都扒出来,美其名曰...

不最醉不龟归
24分钟前
6
0
蚂蚁金服Java开发三面

8月20号晚上8点进行了蚂蚁金服Java开发岗的第三面,下面开始: 自我介绍(要求从实践过程以及技术背景角度着重介绍) 实习经历,说说你在公司实习所做的事情,学到了什么 关于你们的交易平台...

edwardGe
31分钟前
7
0
TypeScript基础入门 - 函数 - this(三)

转载 TypeScript基础入门 - 函数 - this(三) 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.4 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban
40分钟前
0
0
Spark core基础

Spark RDD的五大特性 RDD是由一系列的Partition组成的,如果Spark计算的数据是在HDFS上那么partition个数是与block数一致(大多数情况) RDD是有一系列的依赖关系,有利于Spark计算的容错 RDD中每...

张泽立
48分钟前
0
0
如何搭建Keepalived+Nginx+Tomcat高可用负载均衡架构

一.概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已...

Java大蜗牛
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部