vi命令详解

vi命令详解
vi命令详解

vi命令详解☆整理人:廖天宇☆

vi(Visual)是以视觉为导向的全屏幕编辑器、共分为三种方式(mode):

?command方式:

任何输入都会作为编辑命令,而不会出现在屏幕上,若输入错误则有“岬”的声音;任何输入都引起立即反映

?insert方式:

任何输入的数据都置于编辑寄存器。在command方式下输入(I,a,A等),可进入insert方式,insert方式下按ESC或者Ctrl+c或者Ctrl+[[,可跳回command方式。

?escape方式:

以“:”或者“/”为前导的命令,出现在屏幕的最下一行,任何输入都被当成特别命令。

一、进入vi(在系统提示符下面输入以下命令):

vi 进入vi而不读入任何文档。

vi filename 进入vi并读入指定名称的文档(新建文档或者已有文档均可)。

vi +n filename 进入vi并且由文档的第n行开始。

vi +$ filename 进入vi并且由文档的最后一行开始。

vi +/word filename 进入vi并且由文档的word这个字开始。

vi -r 列出所有可能恢复的文件。

vi -r filename 恢复系统崩溃时正在编辑的文件(如果此文件不是崩溃时正在编辑的文件,则打开文件为空)。

vi -R filename 以只读方式打开文档,并且禁止文档被覆盖。

vi filename(s) 进入vi并且将各指定文档列入名单内,第一个文档先读入。如vi *.c。

vedit 进入vi并且在输入方式时会在状态行显示“INSERT MODE"。

view 用view代替上述vi使用时,表示以只读方式打开文档,如果不小心对文档做了修改,在:w存盘时,将提示“.. File is read only”不能存盘。如果以只读方式打开,同时确实要保存对文档的改动,则按:w!命令强行保存文档。

Ctrl+l 刷新屏幕显示

Ctrl+g或:f 告诉用户有关现行编辑文档的名称、总行数、光标所在行数等信息。

二、编辑数个文档(利用vi filename(s))进入vi后)

:args 显示编辑名单中的各个文档名

:n 读入编辑名单中的下一个文档

:n filename(s) 读入并编辑filename(s)文档名单

:rew 读入编辑名单中的第一个文档

:e#/Ctrl+A/Ctrl+^ 读入编辑名单内的前一个文档

:e filename 不离开vi编辑另一文档filename(此文档可不在编辑名单内)。若原文档经修改还没有存档,则应先以:w 存档。

:e +n filename 不离开vi编辑另一文档filename,同时将光标定位于filename的第n行,如果n大于filename总行数则定位于filename的末尾,+$表示定位于文档filename 的末尾。

:e! 强迫原文档不作存档动作并重新载入(恢复到上一次存盘状态)。

:e! filename 强迫读入另一个文档进入vi,原文档不作存档动作。

:r filename 将指定文档的内容读入到光标所在行的下一行。

:0r filename 将指定文档的内容读入到当前文档的第零下面(最开始)。

:$r filename 将指定文档的内容读入到当前文档的最后一行的下面。

:80r filename 将指定文档的内容读入到当前文档的第80行的下面。

:r !command 运行shell命令command,并将运行结果插入到光标当前行的下面。

:$r !command 运行shell命令command,并将运行结果插入到当前文档的最后一行的下面。

三、存储及退出vi

:w filename 存入指定文档,但未退出vi(若未指定文档名则为当前工作的文档名)。

:wq 或者 :x或者zz 存文档,并且退出vi.

:q 不作任何修改并退出vi。

:q! 放弃任何修改并退出vi。

:w! 覆盖当前文件(强行保存当前文档)。

:w filename 文档另存为filename。

:w! filename 用当前文档覆盖filename(如果filenam不存在则新建,如果filename存在则覆盖原内容)。

:w >> filename 将当前文档的内容添加到文档filename的末尾。

:.,$w>>filename 将当前文档光标当前行最文档末尾的内容添加到文档filename的末尾。

:26,50w filename 将当前文档中第26行到第50行的内容写入文档filename。

:108w filename 将当前文档中第108行的内容写入文档filename。

:/str/w filename 向下搜索,并将第一次找到的str所在的行写入文档filename。

:/str1/,/str2/w filename 向下搜索,并将第一次找到的str1所在的行与第一次找到的str2所在的行之间的内容写入文档filename。

:?str1?,?str2?w filename 向上搜索,并将第一次找到的str1所在的行与第一次找到的str2所在的行之间的内容写入文档filename。

:?str1?,/str2/w filename 向上搜索第一次找到的str1所在的行与向下搜索第一次找到的str2所在的行之间的内容写入文档filename。

:/str1/,?str2?w filename 向下搜索第一次找到的str1所在的行与向上搜索第一次找到的str2所在的行之间的内容写入文档filename。

:!command 执行shell命令并返回结果,回车后回到vi。

:!! 重复执行上一个shell命令并返回结果,回车后回到vi。

:f filename 将当前文档重命名为filename。

:recover 意外退出重新进入后恢复当前文档。

:sh 暂时退出vi到系统下执行其它操作,结束时按Ctrl+d 或者执行exit 回到vi。

:so filename 读取filename,并执行filename里的ex命令(vi下以:开头的命令),执行完后回到vi。

四、关标移动

0 C.移动到光标当前行的第一个字符

^ C.移动到光标当前行的第一个非空格非TAB字符

$ C.移动到光标当前行的最后一个字符

n| C.移动到光标当前行的第n列。|表示将光标移动到当前行的第一列。

h C.往左移一位。

j L.往右移一位。同spacebar

k L.向上移一行。

l C.向下移一行。

nh C.往左移n位。

nj L.向下移n行。

nk L.向上移n行。

nl C.往右移n位。同spacebar

n+ L.向下移n行,光标在该行的第一个非空字符处

n- L.向上移n行,光标在该行的第一个非空字符处

H L.移到屏幕的第一行开头

M L.移到屏幕的中间行开头

L L.移到屏幕的最后一行开头

nH L.移到屏幕的第n行开头

nL L.移到屏幕的倒数第n行开头

G L.移到文档的最后一行

nG L.移到文档的第n行。同:n

w C.向右移到一个字组开头,分隔符为标点符号或特殊符号,数字和字符不分

W C.向右移到一个字串开头,分隔符为空格或TAB键等。数字、字符、特殊符号、标点符号不分

e C.向右移到一个字组结尾,分隔符为标点符号或特殊符号,数字和字符不分

E C.向右移到一个字串结尾,分隔符为空格或TAB键等。数字、字符、特殊符号、标点符号不分

b C.向左移到一个字组开头,分隔符为标点符号或特殊符号,数字和字符不分

B C.向左移到一个字串开头,分隔符为空格或TAB键等。数字、字符、特殊符号、标点符号不分

nw C.向右移到第n个字组开头(不包含光标当前字组)。

nW C.向右移到第n个字串开头(不包含光标当前字串)。

ne C.向右移到第n个字组结尾(不包含光标当前字组)。

nE C.向右移到第n个字串结尾(不包含光标当前字串)。

nb C.向左移到第n个字组开头(包含光标当前字组)。

nB C.向左移到第n个字串开头(包含光标当前字串)。

% C.从光标位置开始向行尾搜索(,[,{等,如果在本行中搜索到,则将光标定位到与第一次出现的'('或'['或'{'相匹配的')'或']'或'}'字符上。如果从光标当前位置开始向后搜索且在本行中没有找到'('或'['或'{',则光标位置不动。

) C.向后移动到下一语句开始处,语句分隔标识为句号(.)、空行(^$)或者字符'{'。

( C.向前移动到上一语句开始处,语句分隔标识为句号(.)、空行(^$)或者字符'{'。

} C.向后移动到下一段落开始处,段落分隔符为空行(^$)或者字符

'{'。

{ C.向前移动到上一段落开始处,段落分隔符为空行(^$)或者字符

'{'。

n) C.向后移动到第n个语句开始处(包含当前语句),语句分隔标识为句号(.)、空行(^$)或者字符'{'。

n( C.向前移动到第n个语句开始处(不包含当前语句),语句分隔标识为句号(.)、空行(^$)或者字符'{'。

n} C.向后移动到第n个段落开始处(包含当前段落),段落分隔符为空行(^$)或者字符'{'。

n{ C.向前移动到第n个段落开始处(不包含当前段落),段落分隔符为空行(^$)或者字符'{'。

[[ C.从光标当前位置开始向后移动到一个函数的开始行,即以{开始的行。如果找不到,则移动到文档最后一行。'{'是后一块的开始,'{'的前一字符是前一块的结束。实际就是将光标移动到下一节开始处。

]] C.从光标当前位置开始向前移动到一个函数的开始行,即以{开始的行。如果找不到,则移动到文档第一行。'{'是后一块的开始,'{'的前一字符是前一块的结束。实际就是将光标移动到上一节开始处。

fc C.将光标向右移动到当前行中光标当前字符右边第一次出现的字符c上。

tc C.将光标向右移动到当前行中光标当前字符右边第一次出现的字符c的前一字符。

Fc C.将光标向左移动到当前行中光标当前字符左边第一次出现的字符c上。

Tc C.将光标向左移动到当前行中光标当前字符左边第一次出现的字符c的后一字符。

; C.配合f或t继续向右移动到下一位置。

, C.配合f或t反向向左移动到下一位置。

mk 在光标当前位置作标记,记号为字母k。(k可以用其它合法字母代替)[作记号,为移动光标作准备]。

`k C.将光标移动到记号为字母k的标记处。

'k L.将光标移动到记号为字母k的标记处所在行的开头。

`` C.将光标移动到最后一次所做的标记处。

'' L.将光标移动到最后一次所做的标记处所在行的开头。

以上操作为光标移动,C表示按字符操作,L表示按行操作。

如果在移动操作前先按一下y,再移动光标,则将原光标位置到新光标位置之间的内容复制。

如果在移动操作前先按一下d,再移动光标,则将原光标位置到新光标位置之间的内容删除并复制。

如果在移动操作前先按一下c,再移动光标,则将原光标位置到新光标位置之间的内容复制后删除并进入插入模式。

如果在移动操作前先按一下>,再移动光标,则将原光标所在行到新光标所在行之间的行全部向右移动一个位移并复制。

如果在移动操作前先按一下<,再移动光标,则将原光标所在行到新光标所在行之间的行全部向左移动一个位移并复制。

如果在按[ydc><]之前先按"a,则将复制内容保存一份于寄存器a;

如果在按[ydc><]之前先按"A,则将复制内容追加到寄存器a原内容之后的下一新行上。

移动光标在与[ydc><]结合使用且有数字n时,数字n放在y或d的前面和后面都可以。如 y3w 等效于 3yw,以次类推。

按y键复制时,光标位置虽然不动,但内容实际上已经被复制。

Ctrl + e 屏幕下卷一行

Ctrl + d 屏幕下卷半屏

Ctrl + f 屏幕下卷一屏

Ctrl + y 屏幕上卷一行

Ctrl + u 屏幕上卷半屏

Ctrl + b 屏幕上卷一屏

五、查找命令

/text C.从光标位置向后循环查找字串text,如果找不到,则返回到文档第一行继续向下查找。最后定位于text串的第一个字符,text串作为下一块的开始,text 的前一字符作为上一块的结尾。与其它命令结合使用时,操作对象不包括text串。

/text/+n C.从光标位置向后循环查找字串text,如果找不到,则返回到文档第一行继续向下查找。最后定位于text串所在行的下面第n行(不包括text所在行)的开头,此行为上面块的最后一行,下面一块不包括此行。

/text/-n C.从光标位置向后循环查找字串text,如果找不到,则返回到文档第一行继续向下查找。最后定位于text串所在行的上面第n行(不包括text所在行)的开头,此行为上面块的最后一行,下面一块不包括此行。

?text C.从光标位置向上查找字串text,如果找不到,则返回到文档最后一行继续向上查找。最后定位于text串的第一个字符,与其它命令结合使用时,操作对象包括text串。

?text?+n C.从光标位置向上循环查找字串text,如果找不到,则返回到文档最后一行继续向上查找。最后定位于text串所在行的下面第n行(不包括text所在行)的开头,此行为上面块的最后一行,下面一块不包括此行。

?text?-n C.从光标位置向上循环查找字串text,如果找不到,则返回到文档最后一行继续向上查找。最后定位于text串所在行的上面第n行(不包括text所在行)的开头,此行为上面块的最后一行,下面一块不包括此行。

/\ C.从光标位置向后循环查找字组text(text作为一个完整的字组,而不一个长字组的一部分),如果找不到,则返回到文档第一行继续向下查找。最后定位于text的第一个字符,text作为下一块的开始,text的前一字符作为上一块的结尾。与其它命令结合使用时,操作对象不包括text。相似/\、?\、?\,字组分隔符为标点符号、特殊符号、空格、TAB等。

n C.相同方向继续找下一个字串(在输入上面的寻找命令之后使用)。同//。

N C.相反方向继续找下一个字串(在输入上面的寻找命令之后使用)。同??。

以上操作也属于光标移动的范畴,它们与[ydc><]的结合操作也适用于光标移动命令的说明(使用较少)。

六、修改命令

与c相关的修改命令参见光标移动命令的说明和查找命令的说明。

i 在关标字符之前开始插入字符,结束时候按ESC键。

I 在光标所在行的最前面开始插入字符,结束时按ESC键。

a 在光标字符之后开始插入字符,结束时按ESC键。

A 在光标所在行的最后面开始插入字符,结束时按ESC键。

ni 插入字符串一遍,在按回车键或ESC键时将所插入的内容再重复n-1遍,共n遍。相似:nI、na、nA等。如要插入10个'1234567890'时,可以在命令模式下先按10,再按插入命令(i/I/a/A),再输入串'1234567890',然后按ESC退出编辑或者按回车键继续编辑,此时串会再自动重复输入9次,共10次。

o 在光标下加一空白行并开始插入字符,结束时按ESC键。

O 在光标上加一空白行并开始插入字符,结束时按ESC键。

!command 执行shell命令,并把结果加在光标所在行的下一行。

r 将光标位置的字符修改为随后输入的一个字符,修改完后自动返回命令模式。

nr 将光标位置的字符开始的n个字符都修改为随后输入的一个字符,修改完后自动返回命令模式。

R 从光标位置开始改写原内容,结束时按ESC键。

s 将光标位置的一个字符修改为随后输入的内容,结束时按ESC键。

ns 从光标位置开始的n个字符修改为随后输入的内容,结束时按ESC 键。

S 将光标所在行内容清除,并将光标定位在该行原内容第一个字符处,且为输入模式,结束时按ESC键。同cc。

C 将光标所在字符到行尾的所有字符替换成随后随后输入的内容,结束时按ESC键。如果不输入新内容,直接按ESC键,效果同D,即删除光标所在字符到行尾的内容。

cc 将光标所在行内容删除并进入编辑模式,结束时按ESC键

ncc 将光标所在行到向下第n行(包含光标当前行)删除并进入编辑模式,结束时按ESC键

J 把下一行的数据连接到本行之后

<< 将光标当前行向左移动一个位移宽度(:set可以看到shiftwidth的值)。

>> 将光标当前行向右移动一个位移宽度。

n<< 将光标当前行到向下的第n行(包含当前行)同时向左移动一个位移宽度。

n>> 将光标当前行到向下的第n行(包含当前行)同时向右移动一个位移宽度。

~ 将光标所在字符大小写互换并向右移动到下一个字符上。

. 重复前一操作。

u 撤销前一操作。

U 撤销当前行的操作。

:e! 撤销前一次存盘w以来的所有操作。

七、复制与粘贴命令

与[ydc><]相关的复制命令参见光标移动命令的说明和查找命令的说明。

nY或者nyy 将光标所在行开始的n行数据复制(复制内容为逐次覆盖的,缓存中只存放最后一次复制数据,复制后请立即粘贴,否则复制数据将被任何一个操作命令覆盖)。

p(小写) 粘贴复制数据在光标所在位置的后面(按行操作时,在当前行的下一行粘贴,否则在光标所在字符的后面插入粘贴)。

P(大写) 粘贴复制数据在光标所在位置的前面(按行操作时,在当前行的上一行粘贴,否则在光标所在字符的前面插入粘贴)

"ap(小写) 将复制于寄存器a中的数据粘贴在光标所在位置的后面(整行时粘

贴于当前行的下一行,非整行时粘贴于光标所在字符的后面。因为整行数据的行开头有开头字符^,所以整行操作时,都会将数据粘贴于光标当前行的下面一行,而不会将光标当前行一分为二的。)。

"aP(大写) 将复制于寄存器a中的数据粘贴在光标所在位置的前面(整行时粘

贴于当前行的上一行,非整行时粘贴于光标所在字符的前面)。

"np(小写) 将复制于寄存器n中的数据粘贴在光标所在位置的后面(n为1-9,在删除时,编辑器自动将删除的内容存放于1-9这几个寄存器中,越新删除的内容存放于编号越小的寄存器中。这9个寄存器循环覆盖使用)。

"nP(大写) 将复制于寄存器n中的数据粘贴在光标所在位置的前面(n为1-9)。

八、删除命令

与d/c相关的删除命令参见光标移动命令的说明和查找命令的说明。

x 删除光标所在字符。同dl。

X 删除光标所在字符的前一字符。同dh。

nx 删除由光标位置起始的n个字符。

nX 删除由光标位置起始的n个字符(不含光标位置)。

dd 删除光标所在行。

ndd 删除光标所在行开始向下的n行(整行)。

:start,endd 删除文档的第start到end行。

:g/^$/d 删除文档中所有的空行。

:g/^#/d 删除文档中所有以#开头的行。

九、查找并执行动作命令(分隔符/可以用#来替换,但不能混用)

:查找范围/查找内容/执行动作/原内容/新内容/动作选项 (主要是替换操作)

:查找范围/查找内容/执行动作动作参数 (主要是复制、移动等操作)

:查找范围/查找内容/执行动作 (主要是重复替换、删除、显示、排序等操作)

查找范围:

省略(NULL)-表示从光标当前行(不包括当前行)开始向后查找,只处理第一次查找到的行,如果当前行后面没有查找到,则返回到文档第一行继续查找,直到第一次找到。

g-表示全文查找。

也可以在g前面加上一个行的范围,表示在这些行内都进行查找。

行的范围可以是“起始行号,终止行号”或者是“%”。%表示所有行。

“起始行号,终止行号”表示从起始行号到终止行号之间的行将被查找,其中行号可以用数字表示,如1表示第一行,100表示第100行,也可以用.表示光标当前行,用$表示文档最后一行,用'a表示标记a所在行。

“终止行号”可以是+n,表示“起始行号”向下的第n行(不包括起始行号)。

“起始行号”也可以是-n,表示“终止行号”向上的第n行(不包括终止行号)。

行号也可以是/str/,表示从当前行向下开始搜索,第一次找到的str所在的行。

行号也可以是?str?,表示从当前行向上开始搜索,第一次找到的str所在的行。

所以g、%g、1,$g都表示全文查找。

如果行号不都是通过搜索定位的话,起始行号必须小于等于终止行号。

如果行号都是通过搜索定位的话,则可以出现起始行号大于终止行号,此时行的范围将是小的行号到大的行号之间的内容。

查找内容: 可省略(NULL)-表示对文档所有行进行处理,没有省略时表示对文档中出现“查找内容”的行进行处理。可以用\(...\)将查找内容分成最多九份的序列,然后在原内容和新内容里用\1到\9来代表查找内容序列的第一份到第九份。特殊字符需要用\进行转义。查找内容可以是:

#.*表示每一行中第一次出现的#到每行行尾的内容

STR.*表示每一行中第一次出现的STR到每行行尾的内容

STR..表示每一行中第一次出现的STR到STR后面的第二个字符之间的内容

...STR表示每一行中第一次出现的STR的前面第三个字符到STR之间的内容

.$表示每行最后一个字符,..$表示每行最后二个字符

^.表示每个第一个字符,^...表示每行前三个字符

^表示所有行

^$表示所有空行

[123]表示每行中第一次出现的1、2或者3

[1-9]表示每行中第一次出现的一个非零数字字符

[a-z]表示每行中第一次出现的一个小写字母

执行动作: 不可省略。

s-表示要进行替换动作。

~-表示重复上一次替换操作(因其它动作都是一次性操作完成,所以其它动作不需要进行重复)

d-表示要进行删除动作

m-表示要进行移动动作

co-表示要进行复制动作

p-表示要进行显示动作

w-表示将选定内容存为新文件(w filename)

!sort-表示对当前文档选定部分进行排序

...

原内容: 可省略。非替换动作时,包括原内容在内的后面部分都不要。原内容可以是查找内容详细说明部分。

对于替换动作:

查找内容不省略原内容也不省略时,表示要被替换的原内容与查找内容不一致。

查找内容不省略原内容省略时,表示被替换的原内容与查找内容一致。

查找内容省略原内容不省略时,表示对文档所有的行进行处理。

查找内容省略原内容也省略时,表示对文档所有的行进行处理,原内容与上一次替换动作中原内容一样,如果本次替换是打开文档后的第一次替换,则命令报错"No previous regular expression"。

新内容: 可省略。非替换动作时,包括原内容在内的后面部分都不要。对于替换动作,新内容可以省略(NULL),表示新原内容替换为空,即找到原内容并删除原内容,其它内容保持不变。新内容也可不省略,表示原内容被删除,同时用新内容填补原内容位置,原内容与新内容长度不一致时,原位置后面的内容自动前移或者后退,不会出现内容覆盖或者出现空格现象。

新内容中间可以含有一些特殊序列:

& 表示查找时匹配到的内容

\1第一个用\(和\)括起来的内容。类推\2、\3、...、\9

\u下一个字符将被改成大写

\U以后的字符都被改成大写,直到遇到\e或\E

\l下一个字符将被改成小写

\L以后的字符都被改成小写,直到遇到\e或\E

\e更改大小写选择区域的终点标志,同\E

动作选项: NULL/g/c/i。可省略(NULL)-表示只对要处理的行中第一次出现的原内容进行替换,同时不出现确认提示,也不忽略大小写,同一行中第二次及其以后出现的原内容将不予替换。g-表示对同一行中出现的所有原内容都进行替换。c-表示对每一外替换都进行讯问,只有用户输入y后对对当前原内容进行替换,否则,对于在讯问时没有输入y的原内容将都不替换。i-表示忽略大小写。

将查找内容与原内容合并后命令格式:

:查找范围执行动作/原内容/新内容/动作选项 (主要是替换操作)

:查找范围执行动作动作参数 (主要是复制、移动等操作)

:查找范围执行动作 (主要是重复替换、删除、显示、排序等操作)

查找范围与执行动作中间没有空格。这种方式下的查找内容就是原内容。

查找范围: 可以为空(NULL),表示只对当前行操作。也可以是“起始行号,终止行号”或者是“%”。%表示全文所有的行都将被操作。“起始行号,终止行号”的规范同前述的内容。

查找动作、新内容、动作选项同前面所述。

原内容: 可以为空(NULL),表示原内容与上次替换操作原内容相同。也可以不为空,表示要操作的对象。

实例:

:g/ERROR/s/tmp/temp/g 将文档中所有出现过ERROR字符串的行中的所有的tmp串替换为temp串。同:%g/ERROR/s/tmp/temp/g、:1,$g/ERROR/s/tmp/temp/g。(有些行虽然有tmp 串,但该行内没有ERROR串,则这些tmp串将不被替换。)

:g/tmp/s/tmp/temp/g 将文档中所有的tmp串替换为temp串。

同:%g/tmp/s//temp/g、:%s/tmp/temp/g、:1,$s/tmp/temp/g。

:132,361s/tmp// 将文档中第132行(包含)与第361行(包含)之间含有tmp串的行中的第一个tmp串删除(替换为NULL串)。同:132,361g/tmp/s///、:132,361g/tmp/s/tmp//。

:.,$s/tmp//g 将文档中从光标当前行开始到文档最后一行之间的所有的tmp 串删除(替换为NULL串)。同:.,$g/tmp/s///g、:.,$g/tmp/s/tmp//g。

:g##s#/#\\#g 将文档中所有的/替换成\。

同:g//s/\//\\/g、:%s/\//\\/g、:%s#/#\\#g

:g/[a-z]/s//\u&/ 将文档中含有小写字母的行的第一个小写字母修改为大写字母。同:g/^/s/[a-z]/\u&、:%s/[a-z]/\u&/、:%s/[a-z]/\u&。

:g/\(err..\)\(.\)/s//\U\1\e\l\2/g 将文档中所有err及后面的二个字母修改大写字母,并将err后面的第三个字母修改为小写字母。

同:g/\(err\)\(..\)\(.\)/s//\U\1\2\e\l\3/g、:%s/\(err\)\(..\)\(.\)/\U\1\2\e\l\3/g。

:g/..$/s// & 将文档中所有行的倒数第二个字符前插入一个空格。

同:g/^/s/..$/ &/、:%s/..$/ &、:%s/..$/ &/、:%s/..$/ &/g。

:g/\(.\)\(..$\)/s//\2/ 将文档中所有行的倒数第三个字符删除。

同:%g/^/s/\(.\)\(..$\)/\2、:%s/\(.\)\(..$\)/\2/g。

:g/STR/s/#\(..\)\(.\)/#\1/将文档中所有包含STR的行中第一次出现的字符#后面的第三

个字符删除。同:%g/STR/s/\(#..\)\(.\)/\1。

:g/#/s/^\(..\)\(.\)/\1 将文档中所有包含#的行的开头第三个字符删除。

同:%g/#/s/\(^..\)\(.\)/\1/。

:g/STR/s/^\(.\)\(.\)\(.\)/\U'\1''\2''\3' 将文档中所有含有STR的行的前三个字符都各自加上单引号,同时如果是字母的话并将其转换为大写字母。

同:g/STR/s/\(^.\)\(.\)\(.\)/\U'\1''\2''\3'/。

:g/[a-z]/s//\U&/g 将文档中所有的小写字母都转换为大写字母。

同:g//s/[a-z]/\U&/g、:%s/[a-z]/\U&/g。

:.g/[A-Z]/s//\L&/g 将光标当前行所有的大写字母都转换为小写字母。

同:.g//s/[A-Z]/\L&/g、:s/[A-Z]/\L&/g。

:g/xyz/s/^/abc/g 将文档中含有xyz的行的开头加上abc。

:g/xyz/~ 再次将文档中含有xyz的行的开头加上abc。(~表示重复上次替换操作)。

:g//~ 再次将文档中所有行的开头加上abc。同:%~。

:~ 再次将文档中光标当前行的开头加上abc。

:5,28~ 再次将文档中第5行到第28行的开头加上abc。

:g/^M/s///g 删除文档中所有的DOS回车符。同:%s/^M//g、1,$s/^M/g。(^M 是用Ctrl+v+m打出来的,它是一个字符)。

:10,30s/and/^Mand/g 将文档中第10行到第30行之间的所有的and都放在新的一行开头。同:10,30g/and/s/and/^Mand/g、:10,30g/and/s//^Mand/g。其中:10,30

同:-20,30、:10,+20。(^M是用Ctrl+v+m打出来的,它是一个字符)。

:g/$/s// ABC/g 在每一行的结尾添加' ABC',同:g/$/s// ABC、:g/$/s/$/ ABC/、:%s/$/ ABC、:1,$s/$/ ABC/、:%s/$/ ABC/g。($表示行结尾标识,每一行只有一个结尾标识,所以最后一个g可以不要。最后一个g不要的时候,最后一个/可要可不要)。

:g/^/s//def /g 在每一行的开头添加'def ',同:%g/^/s//def 、:g/^/s/^/def /、:%s/^/def 、:1,$s/^/def /、:%s/^/def /g。(^表示行开头标识,每一行只有一个开头标识,所以最后一个g可以不要。最后一个g不要的时候,最后一个/可要可不要)。

:/TAG1/,/TAG2/g/^/s//def /g 当前行向下搜索第一次找到的TAG1所在的行与当前行向下搜索第一次找到的TAG2所在的行之间的行的开头添加'def ',

同:/TAG1/,/TAG2/g/^/s//def 、:/TAG1/,/TAG2/g/^/s/^/def

/、:/TAG1/,/TAG2/s/^/def 、:/TAG1/,/TAG2/s/^/def /、

:/TAG1/,/TAG2/s/^/def /g。

:65,108s/.*/\/\* & \*\//g 在65行到108行的每行开头添加'/* ',同时在行尾添加' */'。同:65,108s/.*/\/\* & \*\//、:65,108s//.*/\/\* & \*\/。(动作操作时从文档开头第一个

字符开始,一直到文档最后一个字符终止,.代表当前光标字符,.*代表当前行所有内容,/当作字符使用时需要加反义符\,所以\/代表字符'/',\*代表字符'*',字符'&'代表原内容,如":%s/%s/\[&\]/g"表示将文档中所有的%d前面加上字符'[',同时在%d后面加上字符']'。每一行只操作一次,所以最后一个g可以不要。最后一个g不要的时候,最后一个/可要可不要)。

:g/^$/d 删除文档中所有的空行。(^表示行开头,$表示行结尾,^$表示一行刚开始就结束了,即空行,行中没有空格/TAB等任何字符)。

:g/^#/d 删除文档中所有以#开头的行。(^表示行开头,此为有条件(查找内容)的删除行)。

:.,$g/^#/d 删除文档中当前行到文档末尾之间所有以#开头的行。

:?TAG1?,?TAG2?g/^#/d 删除文档中当前行向上搜索第一次找到的TAG1所在的行与当

前行向上搜索第一次找到的TAG2所在的行之间的以#开头的行。

:g/\*\/$/d 删除文档中所有以*/结尾的行。($表示行尾,此为有条件(查找内容)的删除行)。

:g//s/:.*//g 删除文档中每行中第一次出现的字符:到行尾的内容。

同:g/^/s/:.*//、:g/.*/s/:.*/、:%s/:.*/、:1,$s/:.*//、%s/:.*//g。

:101,198d 删除文档中第101行到198行之间的内容。(此为无条件的删除行)。同:101,+97d、-97,198d。

:'a,'bd 删除文档中标记a所在行到标记b所在行之间的内容。(此为无条件的删除行)。

:g/^/m0 将文档中所有的行整行反转。同:g/.*/m0。(^表示行开头,.*表示当前行。m表示move,0表示第零行-即第一行的上面一行。此动作是从第一行到最后一行逐行move到第0行,结果就是将所有行反转)。

:g/^#/m$ 将文档中所有以#开头的行移动到文档最后。相似:g/^\/\*/m50,将所有以/*开头的行移动到第50行。

:/TAG1/,?TAG2?g/^#/m$ 将文档中当前行向下搜索第一次找到的TAG1所在的行与当前

行向上搜索第一次找到的TAG2所在的行之间的以#开头的行移动到文档最后。相

似:?TAG1?,/TAG2/g/^#/m$、:?TAG1?,.g/^#/m$、:/TAG1/,$g/^#/m$、:.,/TAG1/g/^#/m$(如果向下搜索到TAG1则正确,如果向下搜索不到,自动返回文档第一行开始搜索并找到的话,就会使起始行号大于终止行号,将会报错)。

:11,80m$ 将文档中第11行到第80行之间的内容移动到文档最后。相似:.,$ m 0,将光标当前行到文档最后一行的所有内容移动到文档开头。(m表示move,m两边有没有空格都可以。$表示文档最后)。

:g/^#/co0 将文档中所有以#开头的行复制到文档开头。相似:g/^\/\*/co0,将所有以/*开头的行复制到文档开头。(^表示行开头,co表示copy,0表示第零行-即第一行的上面一行)。

:51,100co0 将文档中第51行到第100行的内容复制到文档开头。同:51,100 co 0。

:g/^#/p 将文档中所有以#开头的行显示出来。同:!grep ^\# 文档名(^表示行开头,p表示print)。

:300,600g/^#/p 将文档中第300行到第600行之间所有以#开头的行显示出来。

:31,81w z.txt 将文档中第31行到第81行之间的内容存到新文档z.txt中,原文档内容不变。

:101,165w >> z.txt 将文档中第101行到第165行之间的内容追加到文档z.txt的最后,原文档内容不变。

:101,165w >> z.txt 将文档中第101行到第165行之间的内容追加到文档z.txt的最后,原文档内容不变。

:%!sort 对当前文档进行排序。

:20,50!sort 对当前文档第20行到第50行之间的内容进行排序。

十、vi命令索引

... 是指有些东西需要在命令之前或之后指明,文档的开始是前面,文档的最后是后面。

# 这里的#代表一个数字

: 进入ex模式

) 下一句

( 上一句

} 下一段

{ 上一段

]] 下一节

[[ 上一节

0 行的开头

$ 行的末尾

^ 行的第一个非空白字符

+ 下一行的开头

- 上一行的开头

(空格) 下一个字符

(回车) 下一行

/ 向后搜索

? 向前搜索

% 查找当前小(中,大)括号的匹配字符

, 反方向重复上一个f,F,t或T操作

; 同方向重复上一个f,F,t或T操作

. 重复上一个操作

` 转到标记处

' 转到标记所在行的开头

`` 查找前回到上一个做标记的地方

'' 查找前回到上一个做标记所在行的开头

~ 切换字符的大小写

" 保存到寄存器中

!! 重复上一次SHELL命令

! 把后面的文本送给命令, 取代输出(例如, !}fmt把当前的段落送给命令fmt处理,然后用fmt返回的东西替换输出.)

>> 右移当前段落一个移动宽度(shiftwidth)

<< 左移当前段落一个移动宽度(shiftwidth)

>% 从当前到匹配小(中,大)括号之间的文本右移

<% 从当前到匹配小(中,大)括号之间的文本左移

#| 移动到当前行的第#列

a 在当前位置之后添加

A 在当前行的末尾添加

^a 返回到前一编辑文档

b 移动到上一个字组的开头

B 移动到上一个字串的开头,忽略标点符号

^b 上移一屏

c 覆盖...(光标移动的区域)

C 覆盖到行末尾

^c 插入模式下终止插入模式,在命令模式没有用

d 删除...(光标移动的区域)

D 删除到行末尾

^d 命令模式下移半屏,插入模式下移到上一个位移宽度(ShiftTab)处

e 移动到字组的末尾

E 移动到字串的末尾,忽略标点符号

^e 屏幕下卷一行

f 向后到...(某一字符处)

F 向前到...(某一字符处)

^f 下移一屏

g 未用

G ...跳至某一行[缺省是到文件末尾]

^g 显示状态栏

h 向左移动一个字符

H 移动到屏幕上的第一行

^h 命令模式下是左移,插入模式下是退格

i 在当前的光标位置前面插入

I 在本行的第一个非空白字符前面插入

^i 插入模式下是制表键(TAB),命令模式下未用

j 光标下移一行

J 把下一行合并到本行

^j 命令模式下是下移,插入模式下是建一个新行

k 光标向上移动一行

K 未用

^k 未用

l 光标向右移动一个字符

L 光标移动到屏幕的最后一行

^l 重绘屏幕(刷新屏幕)

m 把当前位置标记到...(某个寄存器)中

M 光标移动到屏幕的中间行

^m 回车

n 相同方向重复上次查找(与/或?配合使用)

N 相反方向重复上次查找(与/或?配合使用)

^n 命令模式下是光标下移一行

o 在当前行的下面建一个新行

O 在当前行的上面建一个新行

^o 未用

p 在当前位置的后面粘贴

P 在当前位置的前面粘贴

^p 命令模式下是上移

q 未用

Q 退出并且启动ex

^q 去^s加的锁

r 用随后输入的字符覆盖当前的字符

R 在插入模式下一直覆盖当前行光标后面的字符

^r 在命令模式下面重绘屏幕

s 用随后输入的内容替换光标当前一个字符

S 用随后输入的内容替换光标当前整行内容

^s 锁工作界面(去锁^q)

t 向后到...(某一字符前)

T 向前到...(某一字符后)

^t 移到下一个移动宽度(shifttab)处

u 撤消上一次操作

U 撤消对本行的所有修改

^u 上移半屏

v 未用

V 未用

^v 未用

w 下一个字组的开头

W 下一个字串的开头,忽略标点符号

^w 插入模式下是到上一个单词的开头处,命令模式下未用 x 删除光标所在字符

X 删除光标位置的前一个字符

^x 未用

y 复制...(光标移动的区域)

Y 复制光标所在行的整行内容

^y 屏幕上卷一行

z 重新配置当前行周围的屏幕

ZZ 保存之后退出

^z UNIX暂停

未用:g、K、^k、^o、q、v、V、^v、^x

十一、vi设置选项set

设置选项时,可以使用括号里的缩写形式。语法:

:set 选项 [选项参数] (如果有参数的话)

可以在一行中指定多个选项

:set 选项 ? 显示出一个选项的当前值

:set 显示当前所有已经修改过的选项的值

:set all 显示所有选项的当前值

对于那些没有选项参数的选项来说,使用:set no<选项> 就可以把它给关闭

vi打开时,先执行.profile中的选项设置,再执行$HOME/.exrc中的选项设置,再执行当前目录下.exrc中的选项设置

autoindent (ai) noai 使新行自动缩进,和上(下)行的位置对齐

autoprint (ap) noap 每条命令之后都显示出修改之处

autowrite (aw) noaw 在:n,:!命令之前都自动保存文件

beautify (bf) nobf 在输入的时候忽略所有的控制字符(除了制表键(tab),换行(newline),进纸(formfeed))

directory= (dir=) /tmp 存放缓冲区的目录名

edcompatible noedcompatible 在替换的时候使用类ed的用法

errorbells (eb) noeb 出错的时候响铃

exrc (ex) noex 允许在主目录(home)外面之外放.exrc文件

hardtabs= (ht=) 8 设置硬制表的边界

ignore case (ic) noic 正规式里忽略大小写

lisp nolisp 打开lisp模式

list nolist 显示所有的制表键和行的结尾

magic nomagic 可以使用更多的正规表达式

mesg nomesg 允许向终端发送消息

number (nu) nonu 显示行号

open noopen 允许开放和可视化

optimize (opt) noopt 优化吞吐量,打印时不发回车

paragraphs= (para=) IPLPPPQPPLIbp 设置{、&、}的分界符

prompt noprompt 命令模式下的输入给出:的提示符

readonly (ro) noro 设置为只读模式,除非用!号否则不准保存文件redraw noredraw 当编辑的时候重绘屏幕

remap noremap 允许宏指向其他的宏

report= 5 如果影响的行数>这个数的话就报告

scroll 1/2 window下卷屏幕时滚动屏幕的数目, 同样这也是z命

令输出的行数(z 输出2倍滚屏的大小)

sections= SHNHH HUuhsh+c 定义节的末尾(当使用命令[[和]]时)

shell= (sh=) /bin/sh 缺省的SHELL,如果设置了环境变量SHELL的话,就使用变量

shiftwidth= (sw=) 8 当使用移动(shift)命令时移动的字符数

showmatch (sm) nosm 显示{,},(,),[,或者]的匹配情况

showmode (smd) nosmd 显示你处在什么模式下面

slowopen (slow) noslow 插入之后不要立刻更新显示

tabstop= (ts=) 8 设置制表停止位(tabstop)的长度

taglength= (tl=) 0 重要标记的字符个数(0表示所有的字符) tags= tag,/usr/lib/tags 定义包含标记的文件路径

term= vt100 设置终端类型为vt100

terse noterse 显示简短的错误信息

timeout (to) noto 一秒钟后键盘映射超时

ttytype= vt100 设置终端类型为vt100

warn nowarn 显示"No write since last change"信息 window= (wi=) 23 可视模式下窗口的行数

wrapmargin= (wm=) 0 右边距,大于0的话最右边的单词将折行,留出n个空白位置

wrapscan (ws) nows 查找到文件尾后再重头开始

writeany (wa) nowa 可以保存到任意一个文件去

:set ai 自动缩进,编写程序时很方便。:set noai不自动缩进,在手工粘贴时用。

:set noic 不忽略大小写,精确查找时用。:set ic忽略大小写,模糊查找时用。

:set nu 在每行前标记行号,频繁查看行号时用。:set nonu不显示行号,一般情况下时用。

:set ts=4 自己定义TAB宽度tabstop为4,书写规范代码时用,根据规范和方便程序定义。

:set sw=4 自己定义位移宽度shiftwidth为4,用<<、>>、<、>等相关命令对齐代码时用。

:set sm 会在你键入},]或)时自动显示出对应匹配的{,[或(,然后再回到当前编辑位置及状态。取消此功能:set nosm。

:set report=1 使得对文档变动的影响超过1行时都进行提示。

十二、关于宏

linux vim使用快捷键超好

Linux上vi(vim)编辑器使用教程 vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim)。vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率。vi是“visual interface”的缩写,vim是vi IMproved(增强版的vi)。在一般的系统管理维护中vi就够用,如果想使用代码加亮的话可以使用vim。下面vps侦探整理一下vi的使用教程:包含vi的基本介绍、使用模式、文件的打开关闭保存、插入文本或新建行、移动光标、删除、恢复字符或行、搜索等等,算是一篇比较适合新手学习vi的教程。 vi有3个模式:插入模式、命令模式、低行模式。 插入模式:在此模式下可以输入字符,按ESC将回到命令模式。 命令模式:可以移动光标、删除字符等。 低行模式:可以保存文件、退出vi、设置vi、查找等功能(低行模式也可以看作是命令模式里的)。 一、打开文件、保存、关闭文件(vi命令模式下使用) 1 2 3 4 5 6 vi filename //打开filename文件 :w //保存文件 :w https://www.360docs.net/doc/7113232442.html, //保存至https://www.360docs.net/doc/7113232442.html,文件 :q //退出编辑器,如果文件已修改请使用下面的命令:q! //退出编辑器,且不保存 :wq //退出编辑器,且保存文件 二、插入文本或行(vi命令模式下使用,执行下面命令后将进入插入模式,按ESC 键可退出插入模式) 1 2 3 4 5 6 7 8 a //在当前光标位置的右边添加文本 i //在当前光标位置的左边添加文本 A //在当前行的末尾位置添加文本 I //在当前行的开始处添加文本(非空字符的行首) O //在当前行的上面新建一行 o //在当前行的下面新建一行 R //替换(覆盖)当前光标位置及后面的若干文本 J //合并光标所在行及下一行为一行(依然在命令模式) 三、移动光标(vi命令模式下使用) 1、使用上下左右方向键 2、命令模式下:h 向左、j 向下、k 向上、l 向右。 空格键向右、Backspace 向左、Enter 移动到下一行首、- 移动到上一行首。

vi命令列表

一般模式:移动光标 h 或向左方向键光标向左移动一个字符 j 或向下方向键光标向下移动一个字符 k 或向上方向键光标向上移动一个字符 l 或向右方向键光标向右移动一个字符 [Ctrl] + [f] 屏幕『向前』移动一页(常用) [Ctrl] + [b] 屏幕『向后』移动一页(常用) [Ctrl] + [d] 屏幕『向前』移动半页 [Ctrl] + [u] 屏幕『向后』移动半页 + 光标移动到非空格符的下一列 - 光标移动到非空格符的上一列 n 按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20 则光标会向后面移动 20 个字符距离。 0 这是数字『 0 』:移动到这一行的最前面字符处(常用) $ 移动到这一行的最后面字符处(常用)H 光标移动到这个屏幕的最上方那一行M 光标移动到这个屏幕的中央那一行 L 光标移动到这个屏幕的最下方那一行G 移动到这个档案的最后一行(常用) nG 移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的 20 行(可配合 :set nu) n 光标向下移动 n 行(常用)

一般模式:搜寻与取代 /word 向光标之后寻找一个字符串名称为 word 的字符串。(常用) word 向光标之前寻找一个字符串名称为 word 的字符串。 :n1,n2s/word1/word2/g 在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !(常用) :1,$s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用) :1,$s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给使用者确认(confirm)是否需要取代!(常用)

vi 操作指令

vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个和pattern匹配的串处vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename....filename :打开多个文件,依次进行编辑 移动光标类命令 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 Enter :光标下移一行 w或W :光标右移一个字至字首 b或B :光标左移一个字至字首 e或E :光标右移一个字至字尾 ) :光标移至句尾 ( :光标移至句首 }:光标移至段落开头 {:光标移至段落结尾 nG:光标移至第n行首 n+:光标下移n行 n-:光标上移n行 n$:光标移至第n行尾 H :光标移至屏幕顶行 M :光标移至屏幕中间行 L :光标移至屏幕最后行 0:(注意是数字零)光标移至当前行首 $:光标移至当前行尾 屏幕翻滚类命令 Ctrl+u:向文件首翻半屏 Ctrl+d:向文件尾翻半屏 Ctrl+f:向文件尾翻一屏 Ctrl+b;向文件首翻一屏 nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。 插入文本类命令 i :在光标前 I :在当前行首 a:光标后 A:在当前行尾 o:在当前行之下新开一行 O:在当前行之上新开一行 r:替换当前字符

操作系统实验报告 LINUX基本命令使用和VI编辑器

实验报告模板 实验名称Linux基本命令使用和vi编辑器学院 姓名学号班级 实验地点实验日期评分 指导老师同组其他成员 一、实验目的 掌握Linux一般命令格式。 2.掌握有关文件和目录操作的常用命令。 3.掌握进程操作的常用命令。 4.熟练使用man命令。 5.学习使用vi编辑器建立、编辑、显示及加工处理文本文件。 二、实验环境 VMware,RedHat Linux 三、实验内容 正确地登录和退出系统(logout或exit)。 2.熟悉date,cal,who,clear命令。 3.在用户主目录下对文件进行操作:复制一个文件、显示文件内容、查找指定内容、排序、文件比较、文件删除等。 4.对目录进行管理:创建和删除子目录、改变和显示工作目录、列出和更改文件权限、链接文件等。 5.利用man显示date等命令的手册页。 6.显示系统中的进程信息。 7.进入和退出vi。 8.利用文本插入方式建立一个文件。 9.在新建的文本文件上移动光标位置。 10.对该文件执行删除、复原、修改、替换等操作。 四、实验结果(含程序、数据记录及分析和实验总结等) 1.使用简单命令:date,cal,who,echo,clear等,了解Linux命令格式。

Clear之后 2.浏览文件系统: (1)运行pwd命令,确定当前工作目录。 (2)运行ls–l命令,理解各字段含义。 第一部分“-rw-r--r--”表示该文件的权限,即所有者权限为读和写,组用户和其他用户的权限为只读。第二部分“l”表示该文件是符号链接,第三第四部分所 有者和所有者所在的用户组,第五部分的数字表示文件的大小(以字节为单位),剩下的依次是文件创建月日时间和文件名。

vi操作命令大全完整版

v i操作命令大全 HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】

一vi的操作模式 vi提供两种操作模式:输入模式(insert mode)和指令模式(command mode)。在输入模式下,用户可输入文本资料。在指令模式下,可进行删除、修改等各种编辑动作。 在输入模式下,按Esc键切换到指令模式下。 在指令模式下,按输入指令(i、a、o等)进入输入模式。 二进入vi $ vi filename 直接键入“vi + 所要编辑的文件名”,即可对指定的文件进行编辑。 如果指定的文件为新文件,则提示:“New file”,否则显示该文件的当前内容。 $ view filename 以只读方式打开文件filename 三指令模式 3.1进入输入模式 a 在当前游标之后输入 A 在当前行之末输入 i 在当前游标之前输入

I 在当前行之首输入 o 在当前行之下新增一行,并在新增行输入 O 在当前行之上新增一行,并在新增行输入 输入结束后,按Esc键退出输入模式。 3.2游标移动 h 向左移动一个字元 l 向右移动一个字元 j 向下移动一个字元 k 向上移动一个字元 b 左移一个单词,至词首 w 右移一个单词,至词尾 0 移到当前行行首 $ 移到当前行行尾 + 移至下一行的行首 - 移至上一行的行首 H 移至视窗的第一行 M 移至视窗的中间一行 L 移至视窗的最后一行 G 移至该文件的最后一行 nG 移至该文档的第n行 n+ 下移n行 n- 上移n 行 3.3视窗移动 * + f 视窗下卷一页 * + b 视窗上卷一页 + d 视窗下卷半页 + u 视窗上卷半页 * + e 视窗下卷一行 * + y 视窗上卷一行 3.4删除操作 x 删除游标所在字元 X 删除游标前一字元 dw 从游标当前位置开始向后删除一个单词 db 从游标当前位置开始向前删除一个单词 d0 从行首删除至当前游标位置 d$ 从游标当前位置删除至行尾 dd 删除游标所在行 D 同d$

Linux操作系统Vi文本编辑器试验报告

Vi 文本编辑器 1.实验目的 文本编辑器的原理和操作。1.了解vi文本编辑器的相关命令。了解vi 2.2.实验原理和实验设备 1.操作系统inuxL. 3.实验步骤 1.什么是vi文本编辑器? Vi是一个全屏幕文本编辑器 优点: 具有文本编辑所需的所有功能.1 适用于各种版本的Unix/Linux2.适用于各种类型的终端.3使用灵活快捷.4缺点: 界面不太好看1.按键命令太多2.2. 如何调用vi 在系统提示符后输入vi和想要编辑(或建立)的文件名(如:vi [path]filename),便可进入vi。如果只输入vi,而不带有文件名,也可以进入vi。然后先创建文件的内容,时,只需在退出命令后输入文件名即可。vi在退出进入vi之后,首先进入的就是编辑模式,进入编辑模式后vi等待编辑命令输入而不是文本输入,也就是说,这时输入的字母都将作为编辑命令来解释。.进入编辑模式后光标停在屏幕的第一行首位上(用_表示),其余各行的行首均有一个“~”符号,表示该行为空行。最后一行是状态行,显示出当前正在编辑的文件名及其状态。如果是[New File],则表示该文件是一个新建的文件。如果输入vi带有文件名后,文件已在系统中存在的话,则在屏幕上显示出该文件的内容,并且光标停在第一行的首位,在状态行显示出该文件的文件名,行数和字符数。在编辑模式下输入插入命令i、附加命令a、打开命令o、修改命令c、取代命令r或替换命令s都可以进入插入模式。在插入模式下,用户输入的任何字符都被vi当作文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式,按ESC键即可。在编辑模式下,用户按“:”键即可进入命令模式,此时vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为命令模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的。末行命令执行完成后,vi自动回到编辑模式。如图3.1所示。若在命令模式下输入命令过程中改变了主意,可用退格键(backspace)将输入的命令全回到编辑模式。部删除之后,再按一下退格键,即可使vi3. vi 的三种基本工作模式: 。)编辑模式、插入模式和命令模式(末行模式 三种模式之间的转换示意图图3.1 vi文件的保存和退出;4. 键切换ESC要通过如果我们处于其它命令模式时,的默认模式,vim或vi模式是Command 过来。会在屏幕的最下方等待我们输入命令:号时,vi当我们按ESC键后,接着再输入:保存;:w ;filename另存为:w filename

vi命令的使用

vi编辑器使用方法 1、vi的基本概念 基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode) 1) 命令行模式command mode) 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode 下,或者到 last line mode。 2) 插入模式(Insert mode) 只有在Insert mode下,才可以做文字输入,按[ESC]键可回到命令行模式。 3) 底行模式(last line mode) 将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。 一般把vi简化成两个模式,即将底行模式(last line mode)也算入命令行模式command mode)。 2、vi的基本操作 2.1、三种模式的转换 a) 进入vi 在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面: $ vi myfile 进入vi之后,是处于[命令行模式(command mode)],要切换到[插入模式(Insert mode)]才能够输入文字。 b) 切换至插入模式(Insert mode)编辑文件 在[命令行模式(command mode)]下键入对应字母就可以进入[插入模式(Insert mode)],此时可以开始输入文字了。 c) Insert 的切换 处于[插入模式(Insert mode)],就只能一直输入文字。若发现输错了字!要按[ESC]键转到[命令行模式(command mode)]再删除文字。 d) 退出vi及保存文件 在[命令行模式(command mode)]下,按一下[:]冒号键进入[Last line mode],例如: : w filename (输入 [w filename]将文章以指定的文件名filename保存): wq (输入[wq],存盘并退出vi) : q! (输入q!,不存盘强制退出vi) 2.2、命令行模式(command mode)功能键 1). 插入模式 按切换进入插入模式,按“i”进入插入模式后是从光标当前位置开始输入文件;

vi下的一些常用命令

vi 是visual edit 的缩写 文本编辑器是所有计算机系统中最常用的一种工具。UNIX下的编辑器有ex,sed和vi等,其中,使用最为广泛的是vi,而vi命令繁多,论坛里好像这方面的总结不多,以下稍做总结,以资共享!渴望更正和补充! 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename....filename :打开多个文件,依次进行编辑 移动光标类命令 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 Enter :光标下移一行 w或W :光标右移一个字至字首 b或B :光标左移一个字至字首 e或E :光标右移一个字至字尾 ) :光标移至句尾 ( :光标移至句首 }:光标移至段落开头 {:光标移至段落结尾 nG:光标移至第n行首 n+:光标下移n行 n-:光标上移n行 n$:光标移至第n行尾

H :光标移至屏幕顶行 M :光标移至屏幕中间行 L :光标移至屏幕最后行 0:(注意是数字零)光标移至当前行首 $:光标移至当前行尾 屏幕翻滚类命令 Ctrl+u:向文件首翻半屏 Ctrl+d:向文件尾翻半屏 Ctrl+f:向文件尾翻一屏 Ctrl+b;向文件首翻一屏 nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。插入文本类命令 i :在光标前 I :在当前行首 a:光标后 A:在当前行尾 o:在当前行之下新开一行 O:在当前行之上新开一行 r:替换当前字符 R:替换当前字符及其后的字符,直至按ESC键 s:从当前光标位置处开始,以输入的文本替代指定数目的字符S:删除指定数目的行,并以所输入文本代替之 ncw或nCW:修改指定数目的字 nCC:修改指定数目的行 删除命令 ndw或ndW:删除光标处开始及其后的n-1个字 do:删至行首 d$:删至行尾 ndd:删除当前行及其后n-1行 x或X:删除一个字符,x删除光标后的,而X删除光标前的 Ctrl+u:删除输入方式下所输入的文本 搜索及替换命令 /pattern:从光标开始处向文件尾搜索pattern ?pattern:从光标开始处向文件首搜索pattern n:在同一方向重复上一次搜索命令

Linux系统如何使用vi命令

Linux系统如何使用vi命令 linux系统使用vi命令方法 一、一般模式:删除、复制与粘贴类命令 x,x x为向后删除一个字符,x为先前删除一个字符 nx(n代表数字) 向后删除n个字符 dd 删除当前行 d 删除当前行所有字符,试成为空行 ndd(n代表数字) 删除光标所在行的向下n列 d1g 删除光标所在行到第一行的所有数据 dg 删除光标所在行到最后一行的所有数据 yy 复制光标所在行 y1g 复制光标所在行到第一行的所有数据 yg 复制光标所在行到最后一行的所有数据 ynj(n代表数字) 复制光标所在行向下n+1行 dnj(n代表数字) 删除光标所在行向下n+1行 p,p p为复制的数据粘贴在光标的下一行,p为复制的数据粘贴在光标的上一行 j 将光标所在行与下一行的数据结合成一行 u 恢复前一个动作(undo) 二、编辑模式命令 i,i i为在当前光标所在处插入输入的文字,i为在光标所

在行第一个非空字符插入输入的文字 a,a a为在当前光标所在处下一个字符插入输入的文字,a 为在光标所在行最后一个字符的下一个字符处插入输入的文字o,o o为在光标所在行的下一行行首开始插入字符,o为在光标所在行的上一行行首开始插入字符 r,r r为替换光标所在那一个字符,r为一直替换光标所指的文字,直到退出 esc 退出,回到一般模式 三、命令模式 h 光标向左移一个字符 j 光标向下移一个字符 k 光标向上移一个字符 l 光标向右移一个字符 ctrl+f 屏幕向下翻一页 ctrl+b 屏幕向上翻一页 ctrl+d 屏幕向下翻半页 ctrl+u 屏幕向上翻半页 + 光标移动到下一行的第一个非空字符 - 光标移动到当前行的第一个非空字符 n空格(n代表数字) 光标向当前行向右移动n个字符 0(数字0) 光标移动到当前行的第一个字符(可以为空字符,注意与-区分) $ 光标移动到当前行的最后一个字符(可以为空字符,注意与-区分)

vi命令手册

一、Unix编辑器概述 编辑器是使用计算机的重要工具之一,在各种操作系统中,编辑器都是必不可少的部件。Unix及其相似的ix 操作系统系列中,为方便各种用户在各个不同的环境中使用,提供了一系列的ex编辑器,包括ex,edit,ed和 vi.其中ex,edit,ed都是行编辑器,现在已很少有人使用,Unix提供他们的原因是考虑到满足各种用户特别 是某些终端用户的需要。 值得庆幸的是,Unix提供了全屏幕的Vi编辑器,这使我们的工作轻松不少。不少DOS用户抱怨Vi编辑器不象 DOS下的编辑器如edit那么好用,这是因为Vi考虑到各种用户的需要,没有使用某些通用的编辑键(在各个 不同的终端机上他们的定义是不同的,在某些终端机上甚至没有这些键)。而是采用状态切换的方法,但这 只是习惯的问题,一旦你熟练的使用上了vi你就会觉得它其实也很好用。 虽然Vi采用了状态切换的方法,但电脑的硬件及操作系统多种多样,某些电脑的键盘上没有特定的几个功 能键!那麽不就有某些功能不能用了?这个问题在Unix系统上也一样,几乎各大电脑厂商都有自己的 Unix系统,而vi的操作方法也会随之有点出入。这里我们采用PC的键盘来说明vi的操作,但在具体 的环境中还要参考相应的资料,这一点是值得注意的。 二、Vi入门 (一)、进入vi 在系统提示字符(如¥、#)下敲入vi<档案名称>,vi可以自动帮你载入所要编辑的文件或是开启一个新 文件(如果该文件不存在或缺少文件名)。进入vi后萤幕左方会出现波浪符号,凡是列首有该符号就代

表此列目前是空的。 (二)、两种模式 如上所述,vi存在两种模式:指令模式和输入模式。在指令模式下输入的按键将做为指令来处理:如输入 a,vi即认为是在当前位置插入字符。而在输入模式下,vi则把输入的按键当作插入的字符来处理。指令 模式切换到输入模式只需键入相应的输入命令即可(如a,A),而要从输入模式切换到指令模式,则需在 输入模式下键入ESC键,如果不晓得现在是处於什麽模式,可以多按几次[ESC],系统如发出哔哔声就表 示已处于指令模式下了。 付:有指令模式进入输入模式的指令: 新增(append) a:从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动。 A:从光标所在列最後面的地方开始新增资料。 插入(insert) i:从光标所在位置前面开始插入资料,光标後的资料随新增资料向後移动。 I:从光标所在列的第一个非空白字元前面开始插入资料。 开始(open) o:在光标所在列下新增一列并进入输入模式。 O:在光标所在列上方新增一列并进入输入模式。 (三)、退出vi 在指令模式下键入:q,:q!,:wq或:x(注意:号),就会退出vi。其中:wq和:x是存盘退出,而:q是直接退出,

linux下vi命令大全

linux下vi命令大全 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename....filename :打开多个文件,依次进行编辑 移动光标类命令 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 Enter :光标下移一行 w或W :光标右移一个字至字首 b或B :光标左移一个字至字首 e或E :光标右移一个字至字尾 ) :光标移至句尾 ( :光标移至句首 }:光标移至段落开头 {:光标移至段落结尾 nG:光标移至第n行首 n+:光标下移n行 n-:光标上移n行 n$:光标移至第n行尾 H :光标移至屏幕顶行 M :光标移至屏幕中间行 L :光标移至屏幕最后行 0:(注意是数字零)光标移至当前行首 $:光标移至当前行尾 屏幕翻滚类命令 Ctrl+u:向文件首翻半屏 Ctrl+d:向文件尾翻半屏 Ctrl+f:向文件尾翻一屏 Ctrl+b;向文件首翻一屏 nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。 插入文本类命令 i :在光标前

I :在当前行首 a:光标后 A:在当前行尾 o:在当前行之下新开一行 O:在当前行之上新开一行 r:替换当前字符 R:替换当前字符及其后的字符,直至按ESC键 s:从当前光标位置处开始,以输入的文本替代指定数目的字符S:删除指定数目的行,并以所输入文本代替之 ncw或nCW:修改指定数目的字 nCC:修改指定数目的行 删除命令 ndw或ndW:删除光标处开始及其后的n-1个字 do:删至行首 d$:删至行尾 ndd:删除当前行及其后n-1行 x或X:删除一个字符,x删除光标后的,而X删除光标前的 Ctrl+u:删除输入方式下所输入的文本 搜索及替换命令 /pattern:从光标开始处向文件尾搜索pattern ?pattern:从光标开始处向文件首搜索pattern n:在同一方向重复上一次搜索命令 N:在反方向上重复上一次搜索命令 :s/p1/p2/g:将当前行中所有p1均用p2替代 :n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代 :g/p1/s//p2/g:将文件中所有p1均用p2替换 选项设置 all:列出所有选项设置情况 term:设置终端类型 ignorance:在搜索中忽略大小写 list:显示制表位(Ctrl+I)和行尾标志($) number:显示行号 report:显示由面向行的命令修改过的数目 terse:显示简短的警告信息 warn:在转到别的文件时若没保存当前文件则显示NO write信息nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始mesg:允许vi显示其他用户用write写到自己终端上的信息 最后行方式命令 :n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下

linux下vi命令修改文件及保存等使用方法整理

vi是所有UNIX系统都会提供的屏幕编辑器,它提供了一个视窗设备,通过它可以编辑文件。当然,对UNIX系统略有所知的人, 或多或少都觉得vi超级难用,但vi是最基本的编辑器,所以希望读者能好好把它学起来,以后在UNIX世界里必将畅行无阻、 游刃有余,因为其他几种文本处理器并非UNIX标准配备。说不定别人的Linux机器没安装joe或pico,如果您不会vi,那您可能就没辄了。 vi的基本概念 基本上vi可分为三种操作状态,分别是命令模式(Command mode)、插入模式(Insert mode)和底线命令模式(Last line mode), 各模式的功能区分如下: 1. Comand mode:控制屏幕光标的移动,字符或光标的删除,移动复制某区段及进入Insert mode下,或者到Last line mode。 2. Insert mode:唯有在Insert mode下,才可做文字数据输入,按Esc等可回到Comand mode。 3. Last line mode:将储存文件或离开编辑器,也可设置编辑环境,如寻找字符串、列出行号等。 不过可以把vi简化成两个模式,即是将Last line mode也算入Command mode,把vi分成Command 和Insert mode。 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename....filename :打开多个文件,依次进行编辑 移动光标类命令 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 Enter :光标下移一行 w或W :光标右移一个字至字首 b或B :光标左移一个字至字首 e或E :光标右移一个字至字尾 ) :光标移至句尾

实验一 Linux下常用命令和Vi的使用

实验一Linux下常用命令和Vi的使用 实验学时:2学时 实验类型:验证型 一、实验目的 了解UNIX/LINUX运行环境,熟悉UNIX/LINUX的常用基本命令,熟悉和掌握 UNIX/LINUX下c语言程序的编写、编译、调试和运行方法。 二、实验内容 ●熟悉LINUX的常用基本命令如ls、who、pwd、ps等。 ●练习LINUX的文本行编辑器vi的使用方法 ●联机帮助命令-man的使用。 三、实验要求 按照要求编写程序,放在相应的目录中,编译成功后执行,并按照要求分析执行结果,并写出实验报告。 四、实验步骤: 1.用pwd显示当前工作目录名:pwd;如果当前目录不是root,需改变到root目录: cd/root。 2.用mkdir建立四个目录:mkdir /root/test1;mkdir /root/test2;mkdir /root/test2/abcd;mkdir /mypro。 3.用cd命令从root开始依次进入test1、test2、abcd、mypro目录,并用 pwd验 证。 cd test1; pwd cd ../test2;pwd cd abcd;pwd cd ../../mypro;pwd 4.用cd 命令从mypro目录返回到根目录,并用pwd命令验证。 cd / pwd 5.用rmdir命令删除子目录 abcd。 Rmdir /root/test2/abcd 6.分别用ls ls –a 和ls-l查看root目录的内容。 ls ls –a ls -l 7.man 命令: (按PageUp键向上翻页PageDown向下翻页,按q退出) man ls 查看ls的帮助信息。 man cp 查看cp的帮助信息。 man mkdir 查看mkdir的帮助信息。 man rm>rm_help 用重定向生成帮助文档

VI命令集精编

V I命令集精编 Document number:WTT-LKK-GBB-08921-EIGG-22986

( :光标移至句首 }:光标移至段落开头 {:光标移至段落结尾 nG:光标移至第n行首 n+:光标下移n行 n-:光标上移n行 n$:光标移至第n行尾 H :光标移至屏幕顶行 M :光标移至屏幕中间行 L :光标移至屏幕最后行 0:(注意是数字零)光标移至当前行首 $:光标移至当前行尾 屏幕翻滚类命令 Ctrl+u:向文件首翻半屏 Ctrl+d:向文件尾翻半屏 Ctrl+f:向文件尾翻一屏 Ctrl+b;向文件首翻一屏 nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。 插入文本类命令 i :在光标前 I :在当前行首 a:光标后 A:在当前行尾 o:在当前行之下新开一行 O:在当前行之上新开一行 r:替换当前字符 R:替换当前字符及其后的字符,直至按ESC键 s:从当前光标位置处开始,以输入的文本替代指定数目的字符 S:删除指定数目的行,并以所输入文本代替之

ncw或nCW:修改指定数目的字 nCC:修改指定数目的行 删除命令 ndw或ndW:删除光标处开始及其后的n-1个字 do:删至行首 d$:删至行尾 ndd:删除当前行及其后n-1行 x或X:删除一个字符,x删除光标后的,而X删除光标前的Ctrl+u:删除输入方式下所输入的文本 搜索及替换命令 /pattern:从光标开始处向文件尾搜索pattern pattern:从光标开始处向文件首搜索pattern n:在同一方向重复上一次搜索命令 N:在反方向上重复上一次搜索命令 :s/p1/p2/g:将当前行中所有p1均用p2替代 :n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代:g/p1/s//p2/g:将文件中所有p1均用p2替换 选项设置 all:列出所有选项设置情况 term:设置终端类型 ignorance:在搜索中忽略大小写 list:显示制表位(Ctrl+I)和行尾标志($) number:显示行号 report:显示由面向行的命令修改过的数目 terse:显示简短的警告信息 warn:在转到别的文件时若没保存当前文件则显示NO write 信息 nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符 nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开

Vi常用命令

进入vi的命令 (1) 移动光标类命令 (1) 屏幕翻滚类命令 (2) 编辑插入文本类命令 (3) 删除命令 (5) 搜索及替换命令 (6) 选项设置 (8) 组合命令 (10) 最后行方式命令 (14) 寄存器操作 (15) 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename....filename :打开多个文件,依次进行编辑 移动光标类命令 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 Enter :光标下移一行 w或W :光标右移一个字至字首 b或B :光标左移一个字至字首 e或E :光标右移一个字至字尾 ) :光标移至句尾 ( :光标移至句首 }:光标移至段落开头 {:光标移至段落结尾 nG:光标移至第n行首 n+:光标下移n行

n-:光标上移n行 n$:光标移至第n行尾 H :光标移至屏幕顶行 M :光标移至屏幕中间行 L :光标移至屏幕最后行 0:(注意是数字零)光标移至当前行首 $:光标移至当前行尾 ^ 光标移到行首 f 光标移到当前光标位置后面的第一个指定的字符下 F 光标移到当前光标位置前面的第一个指定的字符下 t 光标移到当前光标位置后面的第一个指定的字符前 T 光标移到当前光标位置前面的第一个指定的字符前 % 光标移动到与当前括号匹配的括号处 :n 光标移动到指定行 按数字:0:移到文章的开头。 按G:移动到文章的最后。 按w:光标跳到下个字的开头 按e:光标跳到下个字的字尾 按b:光标回到上个字的开头 按:#l:光标移到该行的第#个位置,如:5l,56l。 跳至指定的行 Ctrl + g列出光标所在行的行号。 #G:例如,15G,表示移动光标至文章的第15行行首 14.光标控制 k:上移nk 上移n行 j:下移nj 下移n行 将光标移到第n行,按下mk 将光标移到第m行,按下"ay'k 即将第n到m的行存到a寄存器,以此类推,b,c........寄存器等 屏幕翻滚类命令 Ctrl+u:向文件首翻半屏 Ctrl+d:向文件尾翻半屏 Ctrl+f:向文件尾翻一屏 Ctrl+b;向文件首翻一屏

Vi基本操作

Vi基本操作 首先看一下vi的三种模式的转换图: 需要先按Esc进入普通模式,这按“:”即进入了命令模式。再命令模式下想进入编辑模式, 则需要先按Esc键,然后再按“ i,a,o,O,s,S ”等进入编辑模式。 三种模式的简单说明: 1普通模式: 使用Vi打开一个文件后,默认是普通模式,即不能进行输入,仅可以执行一些操作命令; 2、编辑模式: 在此模式下可以进行常规的输入操作,可以在左下角看到插入的标记“--插入--”或“-- INSERT -- ”; 3、命令模式:在命令模式下,主要是执行保存、退出、搜索、替换等操作,则左下角可以看到“:",并有光标闪烁等待输入命令。

普通模式: 普通模式转为编辑模式 0:在光标所在行的上一行新增一行 o:在光标所在行的下一行新增一行 a:从当前光标所在的位置的下一个字符开始输入 i :在光标所在的位置插入新输入的字符 s:删除光标后的一个字符,然后进入插入模式; S:删除光标所在的行,然后进入插入模式; 移动 h:将光标向左移动一格 I :将光标向右移动一格j :将光标向下移动一格k:将光标向上移动一格 $:将光标移到当前行的最后面 数字0:将光标移到当前行的最前面 G :将光标移到最后一行的开头gg:将光标移到首行开头w或W将光标移到下一个字若输入“ w”,则标点符号如“ .”,“,”,“/ ”等字符都被当成一个字e或E:将光标移到本单字的最后一个字符;如果光标所在位置为本单子的最后一个字符,则跳到下一个单字的最后一个字符。 b:将光标移到本单词的第一个字符;如果光标所在位置为本单词的第一个字符,则跳到上一个单字的第一个字符。 翻页 ctrl+b :将页面向前卷动一页 ctrl+f :将页面向后卷动一页 ctrl+u :将光标向前移动半页 ctrl+d :将光标向右移动半页 ctrl+e :屏幕向下卷动一行,也可以说文章和光标向上卷动一行 ctrl+y :屏幕向上卷动一行,也可以说文章和光标向下卷动一行 复制文字 yy :可将光标目前所在位置的正行复制,复制时不会将文字反白显示 nyy :其中n为数字键,表示要复制的行数,若按3yy,则连同光标所在的位置的一行,与下 面2行一起复制 yw:可复制光标所在位置到整个单词结束的字符 nyw:n表示要复制的单词数目,若按3yw,则会将目前光标所在位置到单词结束,以及后面 的2个字一起复制 P:可将复制的文字粘贴到当前光标所在的位置。若复制的是整行文字,则会将整行内容粘贴在光标所在位置的下一行 shift+P 在光标之前粘帖

linux环境下vi命令编辑器详解(fedoraubuntu)

Linux环境下vi命令编辑器详解(FedoraUbuntu...) Linux环境下vi命令编辑器详解(Fedora/Ubuntu/.../) 2008-12-19 16:43 一、Unix编辑器概述 编辑器是使用计算机的重要工具之一,在各种操作系统中,编辑器都是必不可少的部件。Unix及其相似的ix 操作系统系列中,为方便各种用户在各个不同的环境中使用,提供了一系列的ex编辑器,包括ex, edit,ed 和vi.其中ex,edit,ed都是行编辑器,现在已很少有人使用,Unix提供他们的原因是考虑到满足各种用户特别是某些终端用户的需要。值得庆幸的是,Unix提供了全屏幕的Vi编辑器,这使我们的工作轻松不少。不少DOS用户抱怨Vi编辑器不象DOS下的编辑器如edit那么好用,这是因为Vi考虑到各种用户的需要,没有使用某些通用的编辑键(在各个不同的终端机上他们的定义是不同的,在某些终端机上甚至没有这些键)。而是采用状态切换的方法,但这只是习惯的问题,一旦你熟练的使用上了vi你就会觉得它其实也很好用。 虽然Vi采用了状态切换的方法,但电脑的硬件及操

作系统多种多样,某些电脑的键盘上没有特定的几个功能键!那麽不就有某些功能不能用了?这个问题在Unix 系统上也一样,几乎各大电脑厂商都有自己的Unix 系统,而vi 的操作方法也会随之有点出入。这里我们采用PC 的键盘来说明vi 的操作,但在具体的环境中还要参考相应的资料,这一点是值得注意的。二、Vi入门(一)、进入vi 在系统提示字符(如$、#)下敲入vi <档案名称>,vi 可以自动帮你载入所要编辑的文件或是开启一个新文件(如果该文件不存在或缺少文件名)。进入vi 后萤幕左方会出现波浪符号,凡是列首有该符号就代表此列目前是空的。(二)、两种模式 如上所述,vi存在两种模式:指令模式和输入模式。在指令模式下输入的按键将做为指令来处理:如输入a,vi 即认为是在当前位置插入字符。而在输入模式下,vi则把输入的按键当作插入的字符来处理。指令模式切换到输入模式只需键入相应的输入命令即可(如a,A),而要从输入模式切换到指令模式,则需在输入模式下键入ESC键,如果不晓得现在是处於什麽模式,可以多按几次[ESC],系统如发出哔哔声就表示已处于指令模式下了。

CentOS之VI编辑器的常用命令

CentOS之VI编辑器的常用命令 一.vi的模式 命令模式:vi启动默认进入的模式,可进入输入模"i",或末行模式(:),除了可以完成命令的功能外,也是后两种模式的转换点 输入模式:即文本辑辑状态,最后一行显示"-- INSERT --"提示,按ESC返回到命令模式 末行模式:可完成一些复杂操作,以":"开始,执行完一个末行命令后自动返回命令模式 二.基本使用 1.vi 编辑器的启动与退出: (1).使用命令"vi"直接进入编辑环境 (2).在命令模式下输入":q!",可以强行退出编辑环境,对文件修改不进行保存 (3).以文件名作为"vi"命令的参数时,若存在此文件,则vi可对内容进行编辑,若不存在,打开以参数名命名的空文件 2.文件操作: (1).打开新文件:在末行模式下":e filename"关闭当前文件并打开新文件,":e! filename 强制关闭当前文件并打开新文件" (2).读取文件内容到当前文件:":r filename",读取的文件内容粘贴到当前文件光标所在行的下面 (3)保存文件:命令为":w [filename]",如果文件已经命名,可直接使用":w"命令的参数,如果没有命名,第一次保存时需指定文件名作为参数 (4).另存为文件:命令为":w filename",只保存到新文件,而不更新原来文件的内容 (5).退出vi编辑器:退出格式为":q",保存并退出为":wq",强行退出为":q!" 3.光标的移动操作(命令模式下) (1).光标方向移动:"h"左、"l"右、"k"上、"j"下

(2).翻页移动:"ctrl+f"前一页、"ctrl+b"后一页、"ctrl+u"前半页、"ctrl+d"后半页 (3).行内快速跳转:"^"本行首字符、"$"本行尾字符、"w"后一单词首字母、"b"前一单词首字母、"e"后一单词尾字母;可添加数字组合使用,例如:"3w"后三个单词首字母、"4b"前4个单词首字母、"5e"后5个单词尾字母 (4).文件内行间跳转:显示行号":set nu",取消显示行号":set nonu","1G"跳转到首行,"G"跳转到末尾行,"#G"跳转到第#行 4.编辑操作 (1).进行输入模式:"i"当前光标处,"a"当前光标后,"A"当前行末,"o"当前行下插入新行,"O"当前行上插入新行,"cw"删除当前光标到所在尾部字符,"c$"删除当前光标到行尾的字符,"c^"删除当前光标(不包括)之前到行首的字符;以上记忆如有困难,可只记"i"从命令模式进入输入模式,完成编辑后"Esc"退回到命令模式 (2).输入模式的操作:上下左右方向进行光标移动,"Home/End"定位光标到行首行尾,"Page Up /Down"上下翻页,"Backspace"左侧字符的删除,"Delete"删除光标位置的字符 (3).删除操作:在命令模式下,可用以下命令完成删除操作,"x"光标处单个字符,"dd"光标所在行,"dw"当前字符到单词尾(含空格),"de"当前字符到单词尾(不含空格), "d$"当前字符到行尾,"d^"当前字符到行首,"J"合并当前行与下一行的内容,可添加数字配合使用,例如"3x"当前光标向右3个字符,"2dd"从当前行开始向下两行文本, "3dw"当前光标向右3个单词,"2de"当前光标向右两个单词(保留一个空格),"5J"合并5行文本 (4).撤销操作:在命令模式下,"u"取消最近一次操作,可重复使用,"U"取消对当前行进行的所有操作,"Ctrl+R"对"u"产生的撤消进行恢复 (5).复制操作:"yy"整行,"yw"光标到单词尾,"y$"光标到行尾,"y^"光标到行首;与数字组合使用,"5yy"当前及后续共5行,"3yw"当前光标开始的3个单词; 末行命令":m,ny"m行到n行之间的文本,例如:":100,200y"100行到200的内容 (6).粘贴操作:在命令模式下,使用"p"将缓冲区中的内容粘贴到当前文档

相关文档
最新文档