Vi编辑器的工作原理

Vi编辑器命令整理:

1.编辑器概述:

  • 简单的编辑任务一般都会涉及以下操作:
    (1) 打开文件操作:创建新文件或者打开新文件。 (2)输入文本、删除文本、搜索文本、修改文本操作。 (3)关闭操作:保存文本并退出编辑。
  • 文本编辑器的作用:
    (1)创建或修改文本文件。 (2)维护Linux系统中的各种配置文件。
  • Linux中最常用的文本编辑器: (1)Vi:类Linux系统中默认的文本编辑器。 (2)Vim:Vi编辑器的增强版本,习惯上也称为Vi。

2.Vi编辑器的工作模式:

  • 命令模式:是进入Vi的初始模式,也是Vi的基本工作模式,主要包括移动光标、删除文本、粘贴文本和查找文本等。
  • 文本输入模式:可录入文件内容,该模式下除Esc键以外的所有其它键都作为输入字符添加到被编辑的文本中,文本输入完后必须按Esc键从文本输入模式返回到命令模式后,才能继续完成其它操作。
  • 状态行:为在屏幕底部的一行,命令模式下的有些命令以“:”号、“/”号和“?”号开头,显示在状态行,反馈用户编辑操作的结果,显示错误或其它信息。

3.Vi编辑器的部分原理:

  • Vi编辑器为用户所要创建或修改的文件建立了一个临时的工作区(缓冲区或工作缓冲区)。
  • 如果用户创建新文件时,Vi为新文件打开一个缓冲区。
  • 如果指定的文件已存在,Vi将源文件复制到缓冲区,用户对文件所做的修改只作用于缓冲区中文件的副本而不是源文件。
  • 如果用户希望保存所做的修改,必须用保存的已修改文件(缓冲区中的副本)替换源文件。
  • 对源文件所做的修改不会自动保存,用户必须发出写命令才能保存文件。

4.Vi编辑器的启动与退出:

  • 启动Vi: (1)vi [options] file:编辑已有文件。

(2)vi:创建新的工作缓冲区,可以写入内容。 (3)vi -R:-R表示以只读方式打开文件,不允许修改,但可以使用w!强制写入。vi的一个特殊版本——view,总是以制度方式打开文件。 (4)vi -c:-c表示指定的vi命令作为启动的一部分,通常用来在开始编辑之前定位光标。例如,vi -c/hello myfirst表示在打开myfirst文件之后,搜索hello字符串,并将光标定位到搜索位置。

  • 退出Vi: 【保存文件】 (1)保存::w (2)另存为其它文件::w 路径/新文件名 (3)未修改退出::q (3)放弃对文件内容的修改,并退出Vi::q! (4)保存文件退出Vi::wq或ZZ (5)注:Vi通常不允许覆盖已存在的文件,若要覆盖,用:w!命令或:wq!命令。 【例子】 (1)对于已存在的f1文件的保存与退出:修改内容后,有两种保存退出方案。一种是先按Esc键,再:w(用当前f1的缓冲区副本替换f1),然后:q(将缓冲区内容写入文件f1,并退出Vi编辑器); 另一种是先按Esc键,再:wq(保存和退出同时进行)。

(2)对于直接用vi命令打开的缓冲区的保存与退出:修改内容后,有两种保存退出方案。一种是先按Esc键,再:w 新文件名(当前缓冲区的文本内容保存到新文件中),然后:q(将缓冲区内容写入文件f1,并退出Vi编辑器); 另一种是先按Esc键,再:wq 新文件名(保存和退出同时进行)。

5.Vi编辑器的相关命令:

  • Vi编辑器刚启动时,处于命令模式,只有在文本输入模式下,方可输入文本。
  • 命令模式切换到文本输入模式的命令键: (1)i:在光标左侧输入正文。 (2)I:在光标所在行开头输入正文。 (3)a:在光标右侧输入正文。 (4)A:在光标所在行结尾输入正文。 (5)o:在光标所在行下一行插入新行。 (6)O:在光标所在行上一行插入新行。
  • 文本输入模式下的特殊键: (1)空格键(Spacebar):输入一个空格。 (2)制表键(Tab):在光标前插入8个空格(空格数可以配置)。 (3)退档键(Backspace):删除光标前面一个字符,并且光标回退一个字符。 (4)回车键(Return):添加新行,如果光标处于行中间,则在光标位置将本行截断。 (5)↑↓←→ / kjhl:上下左右移动光标。 (6)w、b:光标向右、向左移动一个字(光标移动到字首、字尾)。 (7)e:光标移动到字尾。 (8)Home键 / “^” / 数字0:跳转至行首。 (9)End键 / “$”:跳转至行尾。 (10)1G / gg:跳转至文件的首行。 (11)G:跳转至文件的末尾行。 (12)行号G / :行号:跳转至文件中指定的行。 (13)+和-:光标下,上移动一行。 (14)空格键、退格键:光标右移、左移一格。 (15)回车键:光标移动到下一行的行首。
  • 命令模式下的文本修改: (1)x:删除光标位置指定的字符,连续按x多次,可连续删除多个字符,输入5x可以一次删除5个字符。 (2)dd:删除光标所在行,连续按dd多次,可连续删除多行,输入3dd可以一次删除3行。 (3)u:撤销最近的修改。 (4)U:撤销对当前行的所有修改。 (5)r:替换光标位置上的一个字符。 (6)R:替换从光标位置开始的字符,同时进入文本输入模式,按Esc键才能回到命令模式。 (7).(点):重复上一次修改。
  • 命令模式下的查找: (1)/word:从上而下在文件中查找字符串"word"。 (2)?word:从下而上在文件中查找字符串"word"。 (3)n:定位下一个匹配的被查找字符串。 (4)N:定义上一个匹配的被查找字符串。

6.Vi编辑器的在线帮助:

  • 命令模式下输入:help,会显示帮助命令。
  • 输入:q,退出帮助屏幕,返回到文件之中。
  • 为获得指定命令的帮助信息,在:help后面跟着该命令名。
  • 例如::help wq

7.Vi编辑器的复杂应用:

  • 编辑多个文件的部分原理与命令:
    (1)Vi可以一次打开多个文件进行编辑。

在这里插入图片描述

(2)每一个文件编辑结束后,不直接退出Vi,而是进行下一个文件的编辑。 (3)可以使用命令:n(next)启动下一个文件的编辑,vi将用下一个文件的内容替换缓冲区的内容,所有如果上一个文件尚未保存,则会提示出错,可以用:n!强制切换文件,但将丢失上一个文件的修改。 (4)使用:ar命令查看Vi打开的文件名列表。 (5)在Vi中打开并编辑另一个文件:e file (6)读入另一个文件:r file,读入的文件将追加到光标之后,称为正在编辑的当前文件的一部分。 (7)写入另一个文件:[n-start, n-end] w file,如果不指定行,则写入整个文件。如果文件已存在,则提示出错,但可以使用w!强制写入。例子:5,100 w temp将当前编辑的文件的第5行到100行写入到temp文件中。

  • 命令模式下的重排文本: (1)d:删除指定位置的文本,并保存到临时缓冲区。 (2)dd:删除一行内容,光标下移一行。 (3)y:复制指定位置的文本到临时缓冲区。 (4)yy:将当前行复制到临时缓冲区。 (5)P:将临时缓冲区的文本插入到光标位置之上。 (6)p:将临时缓冲区的文本插入到光标位置之下。
  • 命令模式下Vi操作符的域: (1):光标从当前位置移动到行尾。():光标从当前位置移动到行首。():光标从当前位置移动到字尾。():光标从当前位置移动到字首。【例子】():光标从当前位置移动到行尾。(2)0:光标从当前位置移动到行首。(3)�/�:光标从当前位置移动到字尾。(4)�:光标从当前位置移动到字首。【例子】(1)�:从光标位置开始,删除到行尾。 (2)d0: 从光标位置开始,删除到行首。 (3)3dw:从光标位置开始,删除3个字。 (4)y $:(注:同(1))从光标位置开始,复制至行尾放到临时缓冲区中。

8.Vi编辑器的缓冲区:

Vi编辑器有多个用作临时存储的缓冲区。

  • Vi缓冲区的类型: 【工作缓冲区】 (1)保存用户文件副本。 (2)当Vi打开一个文件进行编辑时,文件内容被载入到工作缓冲区。 (3)执行Vi写入命令之前,所有的修改只是对工作缓冲区的副本进行修改,执行了写入命令后,缓冲区内容真正写入文件,修改才永久有效。 (4)Vi打开多个文件进行编辑时,工作缓冲区存储当前编辑的文件内容,主要修改丢失问题。 【数字编号缓冲区】 (1)编号为1到9的9个临时缓冲区。 (2)每次删除或复制的文本存放在这些缓冲区中。 (3)缓冲区1总时保存最新内容,其它缓冲区按数字排列一次存储从新到旧的内容(类似队列FIFO思想)。 (4)访问指定的缓冲区:双引号+缓冲区编号+p,例如:" 6p表示将第6个缓冲区的内容粘贴到光标位置。 【字母编号缓冲区】 (1)26个以英文字母编号的缓冲区。 (2)系统不自动将删除或复制的内容存储到字母缓冲区。用户需要指定将内容存储到哪个缓冲区:双引号+缓冲区名+命令。例如:" wdd表示将当前行删除并复制到w缓冲区。" e7yy表示复制当前光标开始的7行内容到e缓冲区。

9.其他Vi命令:

  • 运行Shell命令:用户可以在Vi的命令行中运行Shell命令。使用时:!开头,例如::!date表示显示当前时间,:!pwd表示显示当前目录,:r!date表示当前日期和时间会被写入当前行下。
  • J命令:连接两行,将当前行的下一行连接到当前光标所在行之后。
  • Vi的-r选项:当编辑文件时,Vi或者UNIX崩溃,-r选项可以恢复原来的文件。例如:vi -r mypro.cpp恢复上次崩溃前的mypro.cpp文件。

10.定制Vi编辑器:

  • 参数默认值: (1)Vi编辑器有许多参数(选项或者标识)可供用户设置,从而控制工作环境,这些参数有默认值,但可以调整。 (2)在命令模式,输入:set all即可查看完整的参数列表以及它们在系统上的当前设置。 (3)参数分为三种类型:布尔、数字式、串。 (4) 布尔:set X或set noX(例如:set nu或:set nonu表示显示行号或不显示行号)。 (5):set ignorecase:搜索时忽略大小写。 (6) :set noignorecase:大小写敏感。 (7)数字式或串:set X=值(等号两边没有空格)。 (8)set X?可以显示参数X的值。
  • 缩写操作符:
    (1):ab命令用来定义缩写,取消缩写用:unab命令。例如::ab sqp suiyongping、:unab syp (2):map命令用来定义缩写(宏操作符),用map可以指定单个键代表键序列。例如::map q 5x、:unmap q,:map #2 3x(给3x指定F2键)、:unmap #2
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值