Linux的简单命令(二)— vi 文本编辑器

1.vi的工作模式
命令模式(command mode):
 在命令模式下,输入的任何字符都作为命令来解释执行,屏幕上不显示输入内容,该模式用于完成各种文本修改工作。
输入模式(insert mode):
在输入模式下,输入的任何字符都将作为文件的内容被保存,并显示在屏幕上,该模式用于完成文本录入工作。
末行模式(last line mode):
末行模式也称为ex转义模式,在该模式下,光标停留在屏幕的最末行,在此接受输入的命令并执行,                                       末行模式用于执行一些全局性操作,如文件操作,参数位置,查找与替换,拷贝与粘贴,执行shell命令等。
在文本编辑的过程中,用户可以控制vi在这三种模式之间进行切换,完成各种编辑工作
2.vi的启动和退出
在shell下输入vi命令后,便进入全屏编程环境,命令格式是:vi  [文件名]
vi的启动过程是:先建立一个编辑缓冲区,若指定了文件且该文件存在,则将其内容读到编辑缓冲区中;若指定的文件不存在,则建立此文件。然后将光标定位在第一行第一列的位置上。vi启动后首先进入命令模式,此时用户可以使用vi的编辑命令进行文基本的输入和修改(编辑命令只是修改调入编辑缓冲区中的文件的副本,文件本身不会修改),编辑完成后,要用 :wq 命令将修改后的内容保存到文件中并退出vi。
3.vi 基本命令

3.1屏幕翻滚命令

当编辑的文件较大时,使用翻屏命令可以快速的将想要编辑的内容的区域读入屏幕显示区。
Ctrl+u  向上翻半屏
Ctrl+d  向下翻半屏
Ctrl+f  向下翻一屏。同pageDown键
Ctrl+b  向上翻一屏,同pageUp键
3.2 光标定位与移动
 
vi不支持用鼠标移动光标的方式。
光标定位命令:
0             光标移至行首,同home键
^             光标移至行首第一个非空格字符
$             光标移至行尾,同end键
[n]G          光标移到第n行,未指定n时移到末行
[n]I          光标移到第n列,未指定n时移到首行
H、M、L       光标移到屏幕首、中、尾行行首
光标移动命令:
h、j、k、l  光标左、下、上、右移一个字符,同箭头键
b、w        光标移到上一个词,下一个词首
e           光标移到词尾
(、)        光标移到句首、句尾
{、}        光标移到段首、段尾
(以上光标移动命令前带数字n时,表示重复移动n次。如:2h为左移2格,3e为移到后面第三个词词尾)

3.3 文本输入与删除

在输入文本内容之前,应先将光标移动到要输入的位置上,然后执行插入命令
插入命令:
a、A    在光标位置后,行尾开始插入
i 、I   在光标位置前、行首前开始插入,i的作用和insert键相同
o、O    在光标所在行之后,光标所在行之前的新行开始插入
删除命令:
x、X     删除光标处、光标前的字符。x的作用和Delete键相同
dd       删除光标所在的行
D        删除光标右边的文本
J        删除当前行尾的换行符,使当前行与下一行合并为一行
d+定位符  删除从光标位置到指定位置范围内的字符,常用的有:
               d0、d^   删除光标左面的文本,0或^代表行首
               d$       删除光标右面的文本。$代表行尾
               dG       删除光标所在行之后的所有行,G代表最后一行
               db       删除光标处前的字符直到词首,b代表词首
               de       删除光标处的字符直到词尾,e代表词尾
               dw       删除光标处的字符直到下一个词的词首,w代表下一次词尾
(以上命令带数字n时,表示删除的范围扩大n倍,如:3dd为删除3行,2de为删除从光标开始的两个词)
3.4文本修改与替换
文本修改是指改写一部分的内容,修改的过程是:先删除指定范围内的文本,然后插入新文本,最后用Esc键结束插入
修改命令:
cc        修改光标所在的行
C         修改光标处到行尾的文本
c+定位符   修改光标到指定范围内的文本,常用的有:
     c0、c^    修改光标左边的文本
     c$        修改光标右面的文本
     cG        修改光标所在行之后的所有行
     cb        修改光标处前的字符直到词首
     cw        修改光标处的字符直到词尾
     cl        修改光标处的字符
(以上命令前带数字n时,表示修改的范围扩大n倍,如5cc为修改从光标所在处开始的5行,3cw为修改从光标开始的3个词)
替换(replace)是指用一个字符替换另一个字符,这是一种覆盖操作,替换后文本的长度保持不变;
替代(substitute)则是指用多个字符取代一个字符或一行,是一个先删除后插入的操作,通常情况下,替代后的文本的长度会发生变化
替换与替代命令:
r      用输入的字符替换光标处的字符
R     用输入的文本逐个替换从光标处开始的各个字符,直到按下Esc键
s     用输入的文本替代光标处的字符,用Esc键结束输入,等同于cl
S     用输入的文本带带光标处所在的行,用Esc键结束输入,等同于cc
(以上命令前带数字n时,表示替换或替代的范围扩大n倍,如:4r为用输入的字符替换从光标处开始的4个字符)
3.5文本拷贝与粘贴
拷贝(copy)操作是将光标处的文本复制到一个缓冲区中(类似于window中的剪贴板);粘贴(paste)是将缓冲区中的内容插入到光标处
拷贝与粘贴命令:
yy          拷贝光标所在的行至缓冲区
y+定位符     拷贝光标到指定范围内的文本,常用的有:
     y0、y^     拷贝光标左面的文本
     y$         拷贝光标右面的文本
     yG         拷贝光标所在行之后的所有行
     yb         拷贝光标处的字符直到词首
     yw         拷贝光标处的字符直到词尾
P、p    若缓冲区中的内容是完整的行,则将这些行插入到光标所在行之前、之后;
        若不是完整的行,则将这些文本插入到光标处之前、之后
3.6撤销与重做
  撤销(undo)即消除上一个命令所做的修改,恢复到命令执行前的样子;
重做(redo)就是重复执行上一个命令
命令:
u       撤销上一个命令所做的修改
U       撤销最近针对这一行所做的全部修改,在对一行连续做了多处修改后,用此命令可以一次恢复全行
.        重复前一个命令
4.vi常用末行命令
在命令模式下,输入“:”、“/”或“?字符(成为ex转义字符)都将进入末行模式,随后的输入被解释为行命令,在屏幕末行显示。输入完成后按Enter键,末行命令执行结束后返回命令模式,或退出vi.
末行模式主要有以下几类:
字符串搜索与替换命令
文件操作与退出命令
其他命令

4.1搜索与替换命令

字符串搜索:执行搜索命令后,光标将停留在第一个匹配字符的首字符处,按 n 或 N 则移到下一个匹配字符串之首;
如果不存在匹配的字符串,则会在末行显示“找不到模式”。搜索命令有以下两种:
/ 模式        从光标处向后搜索与指定模式匹配的字符串,按n向后查找
?模式        从光标处向前搜索与指定模式匹配的字符串,按N向前查找

字符串替换用s命令,格式: :[n1,n2]s/p1/p2/[g][c]
其中n1,n2表示目标行的行号范围,可以用“%”代表所有行;
未指定范围时,目标行就是光标所在行的当前行。p1是用作搜索的字符串模式,p2是用作替代的字符串模式。
模式中可以用“^”代表行首,“$”代表行尾。s命令可以带g和c选项,g表示替代目标行中所有匹配的字符串,
没有g的话则只替换目标行中第一个匹配的字符串,选项c表示替换前要求用户确认。

全局命令:
g(global)的功能是在全文中搜索含有与指定模式相匹配的字符串的行,对匹配的行作标记
:g/p1    搜索所有包含p1字符串模式的行
:g!/p1   搜索所有不包含p1字符串模式的行
全局替换:
s命令时面向行的字符串替换命令,s命令经常与g命令联合使用
g命令/s命令,其含义是:先用g命令在文件中搜索含有某个模式的行,并做标记,然后用s命令对所有有标记的行执行搜索和替换
4.2文件操作与退出命令
:w [文件名]  写入指定文件,若未指定文件则写入当前文件,即vi启动时打开的文档
:q           未修改原文件,不保存文件,直接退出
:wq、:x     保存文件并退出
:q!          放弃修改,不保存文件,退出
:e!          放弃修改,编辑区恢复为文件原样
:e   文件名   打开指定的文件,调入编辑区
:r   文件名   读入指定的文件,将文件内容插入到光标位置
:f           在屏幕末行显示文件相关信息
4.3其他常用命令
行编辑命令:用于对指定的行进行编辑,在指定行范围时,可以用“.”代表当前行,用“$”代表最后一行,用“%”代表所有行
:n          跳至第n行
:n1,n2con3  将第n1至n2行之间的内容拷贝到第n3行下,如::3,7co$表示将第3到7行的文字复制到文件末尾处
:n1,n2mn3   将第n1至n2行之间的内容移到第n3行下,如:m10表示将当前行移动到第10行下
:n1,n2d     将第n1至n2行之间的内容删除,如:3,7d 表示删除第3到7行
:p          显示当前行的内容
:nu         显示当前行的行号和内容
执行shell命令:在vi编辑文件时,可以在不退出vi的情况下执行shell命令,执行命令期间vi暂时挂起,待命令执行结束后可返回vi继续执行
:!命令    执行指定的shell命令
设定vi选项:vi是一个高度可定制的编辑器,用户可以通过设置vi的选项来设定vi的一些外观和行为特性,使其满足特定的需求
:set all                          显示所有选项
:set ai、:set noai                设定、取消自动缩进
:set nu、:set nonu               设定、取消行号显示
:set hlsearch 、:set nohlsearch  设定、取消高亮显示搜索到的字符串
:set ic 、:set noic              设定、取消搜索命令中忽略大小写


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值