2023-01-21 21:08:02 发布人:hao333 阅读( 3458)
命令格式:ranges pat1 pat2 g其中:这是Vi的命令执行界面。
命令格式
:范围/pat1/pat2/g
:.这是Vi的命令执行界面。range是命令执行范围的规范:百分号(%)表示所有行。
一个点(。)表示当前行。
美元($)表示最后一行。
例如:
0,20表示第10到20行。$表示当前行到最后一行,
2,$-5表示当前行的最后两行到全文的最后五行。s 表示其后跟有替换命令。
Pat1,这是要寻找的正则表达式。
Pat2,这是你要把匹配字符串换成的模式的正则表达式。
g可选标志。使用此标志,将对行中的每个匹配字符串执行替换,否则,仅替换行中的第一个匹配字符串。
:/string #向下看
:Rng #向上看
1 vi编辑命令
重复命令。
数字命令重复命令n次。如果删除了15行,请在命令状态中输入15dd。重复最后一个命令。
00-vi命令使用的一些选项及含义-c子命令在编辑指定文件之前,执行指定命令子命令。-r filename 还原指定的文件文件名。-R,并将指定的文件以只读方式放入编辑器中,这样就不会保存对文件的任何更改。-y number将编辑窗口的大小设置为数字行。
光标移动
在命令模式下,在同一行上移动的子命令:
将光标向左移动一帧。
l将光标向右移动一格。
将光标下移一格。
将k光标上移一格。
将光标移到下一个小字的前面。
将光标移到下一个大单词的前面。
b .将光标移到前一个小字的前面。
b .将光标移到前一个大单词的前面。
将光标移到下一个小字的后面。
e将光标移到前面的大单词后面。
将fc光标移动到同一行中的下一个C字符。
将Fc光标移动到同一行中的前一个C字符。
Tc将光标移动到同一行中下一个字符c的上一个网格。
Tc将光标移动到同一行中前一个字符c的下一个网格。
数字|将光标移动到数字列。
命令模式下在行间移动的子命令:
或者按Enter键将光标移动到下一行的第一个非空白字符。
-将光标移动到上一行的第一个非空白字符。
0将光标移动到当前行的第一个字符。
$将光标移动到当前行的最后一个字符
将光标移动到屏幕的顶行。
l将光标移动到屏幕的底线。
把光标移到屏幕的中间。
:数字光标移动到行号。
:$光标移动到最后一行
屏幕翻滚类命令
Ctrl u翻转文件的前半屏。
Ctrl将半屏翻转到文件末尾。
Ctrl将一个屏幕翻转到文件的末尾
Ctrl+B将一个屏幕转到文件的开头
将nz的第n行滚动到屏幕顶部,如果没有指定n,则将当前行滚动到屏幕顶部。
光标前的插入文本i
I在当前行的开头
在光标之后
当前行末尾的
o在当前行下面创建一个新行。
o在当前行上方创建一个新行。
r替换当前字符
r替换当前字符和后面的字符,直到按下ESC键。
从当前光标位置开始,用输入文本替换指定数量的字符。
s删除指定数量的行并用输入的文本替换它们。
NCW或ncw修饰n个单词
Nc修改指定的行数
删除x删除光标指向的字母
x删除光标左侧的一个字母。
删除dd光标所在的那一行文字,这一行文字会放在缓存中。
删除行首的d0。
D$被删除到行尾
d .删除这一行光标右边的所有单词,包括光标位置的字母。
D$删除这一行光标右边的所有单词,包括光标位置的字母。
删除光标右边的一个单词
Ndw删除n个单词
D1删除光标所在行上方的所有行
删除dG光标所在的行以及光标下方的所有行。
复制
Yy将这行文字复制到缓存中
YY将数字行复制到缓存中
粘贴
p将缓存中的行粘贴到光标所在的下一行,
将缓存中的行粘贴到光标所在的前一行。
替换
:s/pattern1/pattern2/g将光标当前行中的pattern1替换为pattern2。
用法:%s/pattern1/pattern2/g在所有行中用pattern2替换pattern1。
:g/part term 1/s//part term 2在所有行中用pattern2替换pattern1。
:num1,num2 s/pattern1/pattern2/g将num1至num2的partten1替换为partten2。
被替换的文本indi
:r filename将文件filename的内容粘贴到光标下方的行中。
:w保存当前编辑的文件名。
:w filename当filename不存在时,将修改后的文件另存为filename,当filename存在时,报告错误。
!W filename如果文件filename存在,将修改后的文件保存为文件filename。
:q六号出口。如果文件被修改,系统不会让用户使用q命令退出。
q!不保存退出。
x保存退出
Wq保存退出
文件: n开始编辑vi激活的文件列表中的下一个文件。
:n filenames指定要编辑的新文件列表。
在多个文件之间切换
:e filename用filename激活vi(另一个文件filename加载到vi中)
e!重新加载当前文件,如果当前文件中有任何更改,则放弃以前的更改。
:e filename使用filename激活vi并从文件末尾开始编辑。
:e number filename用filename激活vi,并从行号开始编辑。
:e#开始编辑另一个文件。
在当前文件和另外一个文件间切换:
/pattern向后查找指定的模式,如果遇到文件的结尾,则从头开始。
?Pattern向前查找指定的模式,如果遇到文件头,就从末尾开始。
n在最后指定的方向,再次执行最后定义的搜索。
n在与最后指定的方向相反的方向上,再次执行最后定义的搜索。
/pattern/number将光标停在包含pattern的行之后的第n行。
/pattern/-number将光标停在包含模式的行前面的第n行。
%已移动到匹配的“()”或“{ 0 }”。
查找
全部列出所有选项设置。
设置终端类型。
无知在搜索中忽略案例。
显示列表制表位(Ctrl I)和行尾标记($)
数字显示行号
报告显示由面向行的命令修改的数量。
显示一条简短的警告消息
如果在更改到另一个文件时没有保存当前文件,则警告显示无写入信息。
Nomagic允许在搜索模式下使用前面不带\ "的特殊字符。
当搜索到达文件的两端时,Nowrapscan禁止vi从另一端开始。
Mesg允许vi用write在自己的终端上显示其他用户写的信息。
选项设置A,可以使用:s命令实现字符串替换。的具体用途包括:
:s/str1/str2/用字符串str2替换该行中第一个出现的字符串str1。
:s/str1/str2/g用字符串str2替换该行中所有出现的字符串str1。
:$ s/str1/str2/g用字符串str2替换从当前行到文本末尾出现的所有字符串str1。
:1,$ s/str1/str2/g用字符串str2替换文本中所有出现的字符串str1。
:g/str1/s//str2/g功能同上。从上面的替换命令可以看出:g放在命令的末尾,意思是替换搜索字符串的每一次出现;如果没有g,则只替换搜索字符串的第一个匹配项;g放在命令的开头,表示替换正文中包含搜索字符串的所有行。
b、使用find结合grep替换shell中的文件
#寻找。/-exec grep str 1 ' { } ' \;-exec sed-I . bak s/str 1/str 2/g ' { } ' \;
上面的命令可以在当前目录(包括子目录)中搜索包含str1的文件,自动替换为str2,生成源文件的bak文件。
相关阅读
RelatedReading猜你喜欢
Guessyoulike