Vi简介

  1. Vi是一种广泛存在于各种UNIX和Linux系统中的文本编辑程序。
  2. Vi不是排版程序,只是一个纯粹的文本编辑程序。
  3. Vi是全屏幕文本编辑器,它没有菜单,只有命令。
  4. Vi不是基于窗口的,所以,这个多用途编辑程序可以用于在任何类型的终端上编辑各式各样的文件。
  5. Vi的功能十分强大,但是命令繁多,熟练掌握起来有一定难度。
  6. Vi的发明者:bill joy

Vi的启动

$ Vi  filename  或者$ Vi
如果filename已经存在,Vi会打开现存文件
如果是一个新文件,Vi会创建它

Vi的退出

在命令行模式下输入:q,:q!,:wq或者:x,可以退出Vi
:w                  保存
:w filename         另存为filename
:wq!                保存并退出
:wq! filename       以filename为文件名保存后退出
:q!                 不保存退出
:x                  保存并退出,功能和:wq!相同

Vi的工作模式

Vi有三种工作模式,分别为:命令模式、插入模式(编辑模式)和末行模式,三种模式分别进行不同的操作,它们之间可以进行切换。

  1. 命令模式:进入Vi后,首先进入的就是命令模式,等待用户输入编辑命令,此时输入的字母将作为编辑命令来解释。
  2. 插入模式:在命令模式下输入插入命令i、附加命令a、打开命令o等命令可以进入插入模式,在插入模式下,用户输入可以对文本进行编辑,输入的任何字符都被当作文件内容保存起来。【Esc】键可以返回命令模式。
  3. 末行模式:在命令模式下,按【:】键可以进入末行模式,Vi光标会显示在窗口的最后一行,以“:”作为末行模式的提示符,等待用户输入命令。末行命令执行后,Vi自动回到命令模式。

Vi命令大全

1、移动光标
h或者向左方向键:光标向左移动一个字符
l或者向右方向键:光标向右移动一个字符
k或者向上方向键:光标向上移动一个字符
j或者向下方向键:光标向下移动一个字符
【Ctrl】+f:         屏幕“向下”移动一页,相当于【PageDown】
【Ctrl】+b:         屏幕“向上”移动一页,相当于【PageUp】
0:                  数字0,移动到这一行的最前面一个字符处
$:                  移动到这一行的最后一个字符处
G:                  移动到这个文件的最后一行
gg:                 移动到这个文件的第一行
n【Enter】:         n是一个数字,光标向下移动n行

2、搜索与替换
/str:从光标开始,向下寻找一个名为str的字符串。
?str:从光标开始,向上寻找一个名为str的字符串。
:n1,n2s/str1/str2/g:n1与n2为数字,在第n1行与n2行之间寻找str1         这个字符串,并将该字符串替换成str2

:1,$s/str1/str2/g:从第一行到最后一行寻找str1字符串,并将该字符             串替换为str2

:1,$s/str1/str2/gc:从第一行到最后一行寻找str1字符串,并将该字                 符串替换为str2,且在替换前提示符给用户确认   是否需要替换

3、删除、复制与粘贴
x,X:x为向后删除一个字符,X为向前删除一个字符
nx:n为数字,为连续向后删除n个字符
dd:删除光标所在的那一整行
ndd:n为数字,从光标位置开始,删除向下n列,如20dd则是删除20列。
yy:复制光标所在的那一行
nyy:n为数字,复制光标所在的向下n行,如20yy则是复制20行
p,P:p为将复制的数据粘贴到光标的下一行,P则为粘在光标的上一行。
u:复原前一个操作
【Ctrl】+r:重做上一个操作
.:小数点,重复前一个动作,常用在重复删除、重复粘贴。

4、插入模式
i,I:插入:在当前光标所在处插入输入文字,已存在的文字会向后    退,其中i为从当前光标所在位置前开始插入,I将光标移到当前 行的行首,然后开始插入。

a,A:a为从当前光标所在的下一个字符开始插入,A为从光标所在行的 最后一个字符处开始插入

o,O:这是英文字母o的大小写,o为在当前光标所在的下一行插入新的 一行,O为在当前光标所在处的上一行插入新的一行。

r,R:替换:r为替换光标所在的那一个字符;R会一直替换光标所在的 文字,直到安下【Esc】键为止。

5、文件操作相关
:w:保存文件
:w filename:另存为filename
:n1,n2 w filename!:将n1行到n2行的内容保存到filename中
:n w filename:将第n行保存到filename中
:l,. w filename:将从第一行起到光标当前位置的内容保存到 filename中
:.,$ w filename:将从光标当前位置到文件结束的内容保存到 filename中
:r filename:打开另外一个文件filename
:e filename:编辑新文件filename代替原有内容
:f filename:把当前文件改名为filename

Shell脚本与vi编辑器:vi启动与退出、工作模式、命令大全的更多相关文章

  1. linux可运行的shell脚本与设置开机服务启动(自己总结)

    完整的ln命令参考:http://www.runoob.com/linux/linux-comm-ln.html ln :创建连接文件 - 默认创建的是硬连接,好比复制 ,但是两个文件会同步 命令:l ...

  2. Spring源码解析之:Spring Security启动细节和工作模式--转载

    原文地址:http://blog.csdn.net/bluishglc/article/details/12709557 Spring-Security的启动加载细节   Spring-Securit ...

  3. Shell脚本_判断apache是否启动

      安装nmap:  yum install nmap -y nmap 127.0.0.1   脚本 vim apache_is_start.sh chmod 755 apache_is_start. ...

  4. 如何解决jenkins中shell脚本明明执行失败却不自行退出,且构建结果仍然显示success的问题??

    首先,需要明确shell命令执行结果$?为0或者非0仅能代表此执行语句是否顺利执行了,例如: 执行语句:adb connect 192.168.XX.XX 执行结果:unable to connect ...

  5. linux shell 脚本攻略学习12--文件权限详解,chmod命令详解,chown命令详解,chattr命令详解

    文件权限详解 一.chmod命令详解 文件权限和所有权是Unix/Linux文件系统最显著的特征之一.linux中的每一个文件都与多种权限类型相关联,在这些权限中主要分类为3种: 用户(User)是文 ...

  6. linux shell 脚本攻略学习8---md5校验,sort排序,uniq命令详解

    一.校验与核实 目前最为出名的校验技术是md5sum和sha1sum,它们对文件内容使用相应的算法来生成校验和. 举例: amosli@amosli-pc:~/learn$ md5sum text.t ...

  7. vi编辑器的常规使用

    1.命令模式(command mode)-执行命令 在该模式中,可以输入命令来执行许多种功能.控制屏幕光标的移动,字符.字或行的删除,移动复制某区段及进入Insert mode下,或者到 last l ...

  8. linux中vi编辑器

    vi编辑器,通常称之为vi,是一种广泛存在于各种UNIX和Linux系 统中的文本编辑程序.它的功能十分强大,但是命令繁多,不容易掌握,它可以执行输出.删除.查找.替换.块操作等众多文本操作,而且用户 ...

  9. vi编辑器的三种模式

    1.命令模式(command mode)—执行命令 在该模式中,可以输入命令来执行许多种功能.控制屏幕光标的移动,字符.字或行的删除,移动复制某区段及进入Insert mode下,或者到 last l ...

  10. vi编辑器简单应用(摘抄)

    摘抄于 vi编辑器的使用 (2) (3) 1 vi编辑器的基本使用 1.1 vi的启动 打开: $ vi example.c 只读打开 $ vi –R example.c 1.2 vi的工作模式 1. ...

随机推荐

  1. 找出能被5或6整除,但是不能被两者同时整除的数 Exercise05_11

    /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:找出能被5或6整除,但是不能被两者同时整除的数 * */ public class Exercise05_11 { publi ...

  2. 十. 图形界面(GUI)设计5.布局设计

    在界面设计中,一个容器要放置许多组件,为了美观,为组件安排在容器中的位置,这就是布局设计.java.awt中定义了多种布局类,每种布局类对应一种布局的策略.常用的有以下布局类: FlowLayout, ...

  3. HTML5 Boilerplate笔记(3)

    HTML5 Boilerplate项目网址:https://github.com/h5bp/html5-boilerplate

  4. RabbitMq_05_Topics

    Topics (using the .NET client) Prerequisites This tutorial assumes RabbitMQ isinstalled and running ...

  5. java只有值传递,不存在引用传递

    今天,我在一本面试书上看到了关于java的一个参数传递的问题: 写道 java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? 我毫无疑问的回答:“引用传递!”,并且还觉得自己对java的这 ...

  6. Javascript高级程序设计-问答模式

    1.谈谈javascript数组排序方法sort()的使用,重点介绍sort()参数的使用及其内部机制 sort的实现的功能类似JAVA的比较器,数据排序从多维数组的第一维开始排序可以自己定义排序方法 ...

  7. iOS:Xcode中SVN不能提交CocoaPods中的.a文件的解决方法

    不能提交.a文件, 这个与SVN的配置有关, 其实与xcode倒没有关系. 解决方法: 1. 打开终端,  在命令行中输入: vi ~/.subversion/config  来打开配置文件.2. 然 ...

  8. oracle 10g函数大全--其他函数

    DUMP(w[,x[,y[,z]]]) [功能]返回数据类型.字节长度和在内部的存储位置. [参数] w为各种类型的字符串(如字符型.数值型.日期型……) x为返回位置用什么方式表达,可为:8,10, ...

  9. http://www.360doc.com/content/12/0516/14/1671317_211422841.shtml

    http://www.360doc.com/content/12/0516/14/1671317_211422841.shtml

  10. MapReduce初学习

    内容来源,工具下载:点此链接  点此链接 Mapreduce概述: MapReduce是一种分布式计算模型,主要用于搜索领域,解决海量数据的计算问题.MR是由两个阶段组成,Map和Reduce,用户只 ...