vi的几个常用技巧.docx
- 文档编号:17979141
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:21
- 大小:21.48KB
vi的几个常用技巧.docx
《vi的几个常用技巧.docx》由会员分享,可在线阅读,更多相关《vi的几个常用技巧.docx(21页珍藏版)》请在冰点文库上搜索。
vi的几个常用技巧
vi的几个常用技巧
在使用vi编辑器时—无论是初次使用的用户,还是有经验的用户—大多数人往往只掌握核心命令集,这些命令可以执行最常用的功能:
导航或保存文件;插入、更新、删除或搜索数据;退出但不保存修改。
但是,vi编辑器极其强大,特性和功能非常丰富。
即使在多年使用vi之后,您仍然可能会发现有不知道的新命令。
本文讨论的命令就属于不太为人所知的命令,但是它们可以简化您目前采用的操作方法,让您的工作方式更高效,或者让您能够完成原来不知道可以用vi完成的操作。
打开和关闭行号
vi编辑器的许多选项可以控制编辑会话的外观和感觉。
使用:
set命令修改vi中的会话设置。
按Escape键进入命令模式之后,可以使用:
setall命令显示选项和设置的列表。
可以设置的选项之一是number,它的作用是打开和关闭行号(见清单1)。
清单1.打开行号之前
#
#Internethosttable
#
:
:
1 localhost
127.0.0.1 localhost loghost
192.168.0.6 centos5
192.168.0.10 appserv
192.168.0.11 webserv
192.168.0.12 test
192.168.0.5 solaris10 #AddedbyDHCP
~
~
~
:
setnumber
这个命令让vi在当前编辑的文件中的每个记录上显示行号。
让vi进入命令模式之后,可以输入:
setnumber并按回车来打开行号(见清单2)。
清单2.开行号之后
1 #
2 #Internethosttable
3 #
4 :
:
1 localhost
5 127.0.0.1 localhost loghost
6 192.168.0.6 centos5
7 192.168.0.10 appserv
8 192.168.0.11 webserv
9 192.168.0.12 test
10 192.168.0.5 solaris10 #AddedbyDHCP
~
~
~
:
setnumber
可以使用:
setnonumber命令关闭行号。
还可以使用这个命令和:
setnumber命令的简写,即:
setnu和:
setnonu。
如果需要快速计算要用vi函数处理的行数,显示行号会非常有帮助。
当行数很多,可能跨多个屏幕时,行号尤其有用。
另外,有时候您知道要处理的行范围,但是需要查明要在vi命令中使用的初始和结束行号。
如果希望每次进入vi会话时都显示行号,那么在主目录中的.exrc文件中添加setnumber行。
自动缩进
在用某些编程语言编写代码时,缩进是样式的重要部分,可以确保代码的可读性更好。
如果需要,可以在vi编辑器中根据编程语言的样式设置自动缩进。
使用autoindent打开或关闭自动缩进(见清单3)。
在使用vi编辑器时—无论是初次使用的用户,还是有经验的用户—大多数人往往只掌握核心命令集,这些命令可以执行最常用的功能:
导航或保存文件;插入、更新、删除或搜索数据;退出但不保存修改。
但是,vi编辑器极其强大,特性和功能非常丰富。
即使在多年使用vi之后,您仍然可能会发现有不知道的新命令。
本文讨论的命令就属于不太为人所知的命令,但是它们可以简化您目前采用的操作方法,让您的工作方式更高效,或者让您能够完成原来不知道可以用vi完成的操作。
打开和关闭行号
vi编辑器的许多选项可以控制编辑会话的外观和感觉。
使用:
set命令修改vi中的会话设置。
按Escape键进入命令模式之后,可以使用:
setall命令显示选项和设置的列表。
可以设置的选项之一是number,它的作用是打开和关闭行号(见清单1)。
清单1.打开行号之前
#
#Internethosttable
#
:
:
1 localhost
127.0.0.1 localhost loghost
192.168.0.6 centos5
192.168.0.10 appserv
192.168.0.11 webserv
192.168.0.12 test
192.168.0.5 solaris10 #AddedbyDHCP
~
~
~
:
setnumber
这个命令让vi在当前编辑的文件中的每个记录上显示行号。
让vi进入命令模式之后,可以输入:
setnumber并按回车来打开行号(见清单2)。
清单3.打开自动缩进
#!
/bin/ksh
#
#
forfilein/etc/*
do
if[[-f${file} ]];then
echo"${file}isafile"
~
~
~
~
~
:
setautoindent
此之后,如果在一行的开头输入空格或制表符,那么后续的新行将会缩进到相同的位置。
在命令模式下,输入:
setautoindent,然后按回车打开自动缩进。
通过设置shiftwidth确定缩进级别。
例如,:
setshiftwidth=4把每级缩进设置为四个空格(见清单4)。
单4.设置缩进级别
#!
/bin/ksh
#
#
forfilein/etc/*
do
if[[-f${file} ]];then
echo"${file}isafile"
elif[[-d${file}]];then
echo"${file}isadirectory"
fi
done
~
~
:
setshiftwidth=4
在命令模式下,可以使用>>命令让现有的一行增加一级缩进,使用<<命令减少一级缩进。
在这些命令前面加上一个整数,即可让多行增加或减少一级缩进。
例如,把游标放在清单4中第6行的开头,进入命令模式之后,输入5>>就会让下面五行增加一级缩进。
清单5显示结果。
清单5.缩进代码块
#!
/bin/ksh
#
#
forfilein/etc/*
do
if[[-f${file} ]];then
echo"${file}isafile"
elif[[-d${file}]];then
echo"${file}isadirectory"
fi
done
~
~
可以使用:
setnoautoindent命令关闭自动缩进。
还可以使用这个命令和autoindent命令的简写,即:
setai和:
setnoai。
还可以使用:
setaisw=4在一个命令中打开缩进并设置缩进级别。
如果希望每次启动vi会话时都启用自动缩进并把缩进级别设置为四个空格,那么在主目录中的.exrc文件中添加setaisw=4行。
在搜索时不区分大小写
如您所知,在UNIX®中执行搜索时,模式匹配是区分大小写的。
但是,如果希望vi不区分大小写,那么可以使用:
setignorecase命令。
使用:
setnoignorecase恢复区分大小写。
还可以使用简写(:
setic和:
setnoic)。
如果希望每次进入vi会话时都启用不区分大小写的搜索,那么在主目录中的.exrc文件中添加setignorecase行。
复合搜索
在vi中,可以使用/命令搜索字符串,这需要以字面字符串或正则表达式的形式指定要匹配的模式。
例如,要想在文件中搜索单词echo,只需进入命令模式,输入/echo,然后按回车。
这个命令会找到清单6所示文件的第3行的第一个单词。
清单6.复合搜索
1 #!
/bin/ksh
2 #
3 echo"Starting"
4 file=${1}
5
6 echo${file}
7
8 if[[${file}= 1]];then
9 ((file=${file}+1))
10 echo"Addingonegives"\
11 ${file}
12 fi
13 echo"Ending"
14 exit
~
~
可以使用简单的正则表达式指定寻找包含某一单词而且后面有另一个单词的行。
例如,要想寻找包含字符串echo、后面有零个或更多字符、之后是字符串file的第一行,应该使用/echo.*file。
在清单6所示的文件中,这个命令会找到第6行的第一个单词。
但是,只有这两个字符串出现在同一行上,这个命令才认为是匹配的。
如果希望搜索出现在另一个模式或字符串后面的某个模式或字符串,不管这两个模式或字符串是否在同一行上,那么可以指定由分号( 分隔的两个搜索命令,从而执行复合搜索。
例如,要想搜索出现在字符串
Unknownmacro:
{file}
+1后面的字符串echo,应该使用/
+1/;/echo/。
在清单6所示的文件中,这个命令会找到第10行的第一个单词。
复合搜索对于寻找代码中出现在另一个命令后面的某个命令尤其有用—例如,在设置某个变量之后调用函数的地方。
重放搜索模式
当在文件中搜索要替换的模式时,可以让vi把要匹配的任何模式保存在缓冲区中;然后,在执行替换时,可以用缓冲区引用号重放它们。
方法是把模式放在(和)之间,这会指示vi把模式放在编号的缓冲区(1到9)中。
在执行替换时,可以用缓冲区引用号\1到\9引用这些缓冲区。
例如,假设要在清单7所示的文件中搜索以单词Martin开头的行并对每个匹配添加前缀Mr和后缀Wicks,那么进入命令模式,输入vi命令:
%s/^(Martin)/Mr\1Wicks/g,然后按回车。
清单7.重放搜索模式(之前)
1 #!
/bin/ksh
2 #
3 echo"Starting"
4 file=${1}
5
6 echo${file}
7
8 if[[${file}= 1]];then
9 ((file=${file}+1))
10 echo"Addingonegives"\
11 ${file}
12 fi
13 echo"Ending"
14 exit
~
~
下面把这个命令分解开解释一下:
∙:
%s—指示vi执行替换。
∙/—模式分隔符。
∙^(Martin)—寻找以字符串Martin开头的行并把这个字符串保存在缓冲区1中。
∙/—模式分隔符。
∙Mr\1Wicks—把找到的字符串替换为字符串Mr,加上缓冲区1中的内容,再加上字符串Wicks。
∙/—模式分隔符。
∙g—全局修改(即修改所有匹配的地方)。
在搜索和替换字符串中都可以使用缓冲区引用。
修改的结果见清单8。
在使用vi编辑器时—无论是初次使用的用户,还是有经验的用户—大多数人往往只掌握核心命令集,这些命令可以执行最常用的功能:
导航或保存文件;插入、更新、删除或搜索数据;退出但不保存修改。
但是,vi编辑器极其强大,特性和功能非常丰富。
即使在多年使用vi之后,您仍然可能会发现有不知道的新命令。
本文讨论的命令就属于不太为人所知的命令,但是它们可以简化您目前采用的操作方法,让您的工作方式更高效,或者让您能够完成原来不知道可以用vi完成的操作。
打开和关闭行号
vi编辑器的许多选项可以控制编辑会话的外观和感觉。
使用:
set命令修改vi中的会话设置。
按Escape键进入命令模式之后,可以使用:
setall命令显示选项和设置的列表。
可以设置的选项之一是number,它的作用是打开和关闭行号(见清单1)。
清单1.打开行号之前
#
#Internethosttable
#
:
:
1 localhost
127.0.0.1 localhost loghost
192.168.0.6 centos5
192.168.0.10 appserv
192.168.0.11 webserv
192.168.0.12 test
192.168.0.5 solaris10 #AddedbyDHCP
~
~
~
:
setnumber
这个命令让vi在当前编辑的文件中的每个记录上显示行号。
让vi进入命令模式之后,可以输入:
setnumber并按回车来打开行号(见清单2)。
清单2.开行号之后
1 #
2 #Internethosttable
3 #
4 :
:
1 localhost
5 127.0.0.1 localhost loghost
6 192.168.0.6 centos5
7 192.168.0.10 appserv
8 192.168.0.11 webserv
9 192.168.0.12 test
10 192.168.0.5 solaris10 #AddedbyDHCP
~
~
~
:
setnumber
可以使用:
setnonumber命令关闭行号。
还可以使用这个命令和:
setnumber命令的简写,即:
setnu和:
setnonu。
如果需要快速计算要用vi函数处理的行数,显示行号会非常有帮助。
当行数很多,可能跨多个屏幕时,行号尤其有用。
另外,有时候您知道要处理的行范围,但是需要查明要在vi命令中使用的初始和结束行号。
如果希望每次进入vi会话时都显示行号,那么在主目录中的.exrc文件中添加setnumber行。
自动缩进
在用某些编程语言编写代码时,缩进是样式的重要部分,可以确保代码的可读性更好。
如果需要,可以在vi编辑器中根据编程语言的样式设置自动缩进。
使用autoindent打开或关闭自动缩进(见清单3)。
在使用vi编辑器时—无论是初次使用的用户,还是有经验的用户—大多数人往往只掌握核心命令集,这些命令可以执行最常用的功能:
导航或保存文件;插入、更新、删除或搜索数据;退出但不保存修改。
但是,vi编辑器极其强大,特性和功能非常丰富。
即使在多年使用vi之后,您仍然可能会发现有不知道的新命令。
本文讨论的命令就属于不太为人所知的命令,但是它们可以简化您目前采用的操作方法,让您的工作方式更高效,或者让您能够完成原来不知道可以用vi完成的操作。
打开和关闭行号
vi编辑器的许多选项可以控制编辑会话的外观和感觉。
使用:
set命令修改vi中的会话设置。
按Escape键进入命令模式之后,可以使用:
setall命令显示选项和设置的列表。
可以设置的选项之一是number,它的作用是打开和关闭行号(见清单1)。
清单1.打开行号之前
#
#Internethosttable
#
:
:
1 localhost
127.0.0.1 localhost loghost
192.168.0.6 centos5
192.168.0.10 appserv
192.168.0.11 webserv
192.168.0.12 test
192.168.0.5 solaris10 #AddedbyDHCP
~
~
~
:
setnumber
这个命令让vi在当前编辑的文件中的每个记录上显示行号。
让vi进入命令模式之后,可以输入:
setnumber并按回车来打开行号(见清单2)。
清单3.打开自动缩进
#!
/bin/ksh
#
#
forfilein/etc/*
do
if[[-f${file} ]];then
echo"${file}isafile"
~
~
~
~
~
:
setautoindent
此之后,如果在一行的开头输入空格或制表符,那么后续的新行将会缩进到相同的位置。
在命令模式下,输入:
setautoindent,然后按回车打开自动缩进。
通过设置shiftwidth确定缩进级别。
例如,:
setshiftwidth=4把每级缩进设置为四个空格(见清单4)。
单4.设置缩进级别
#!
/bin/ksh
#
#
forfilein/etc/*
do
if[[-f${file} ]];then
echo"${file}isafile"
elif[[-d${file}]];then
echo"${file}isadirectory"
fi
done
~
~
:
setshiftwidth=4
在命令模式下,可以使用>>命令让现有的一行增加一级缩进,使用<<命令减少一级缩进。
在这些命令前面加上一个整数,即可让多行增加或减少一级缩进。
例如,把游标放在清单4中第6行的开头,进入命令模式之后,输入5>>就会让下面五行增加一级缩进。
清单5显示结果。
清单5.缩进代码块
#!
/bin/ksh
#
#
forfilein/etc/*
do
if[[-f${file} ]];then
echo"${file}isafile"
elif[[-d${file}]];then
echo"${file}isadirectory"
fi
done
~
~
可以使用:
setnoautoindent命令关闭自动缩进。
还可以使用这个命令和autoindent命令的简写,即:
setai和:
setnoai。
还可以使用:
setaisw=4在一个命令中打开缩进并设置缩进级别。
如果希望每次启动vi会话时都启用自动缩进并把缩进级别设置为四个空格,那么在主目录中的.exrc文件中添加setaisw=4行。
在搜索时不区分大小写
如您所知,在UNIX®中执行搜索时,模式匹配是区分大小写的。
但是,如果希望vi不区分大小写,那么可以使用:
setignorecase命令。
使用:
setnoignorecase恢复区分大小写。
还可以使用简写(:
setic和:
setnoic)。
如果希望每次进入vi会话时都启用不区分大小写的搜索,那么在主目录中的.exrc文件中添加setignorecase行。
复合搜索
在vi中,可以使用/命令搜索字符串,这需要以字面字符串或正则表达式的形式指定要匹配的模式。
例如,要想在文件中搜索单词echo,只需进入命令模式,输入/echo,然后按回车。
这个命令会找到清单6所示文件的第3行的第一个单词。
清单6.复合搜索
1 #!
/bin/ksh
2 #
3 echo"Starting"
4 file=${1}
5
6 echo${file}
7
8 if[[${file}= 1]];then
9 ((file=${file}+1))
10 echo"Addingonegives"\
11 ${file}
12 fi
13 echo"Ending"
14 exit
~
~
可以使用简单的正则表达式指定寻找包含某一单词而且后面有另一个单词的行。
例如,要想寻找包含字符串echo、后面有零个或更多字符、之后是字符串file的第一行,应该使用/echo.*file。
在清单6所示的文件中,这个命令会找到第6行的第一个单词。
但是,只有这两个字符串出现在同一行上,这个命令才认为是匹配的。
如果希望搜索出现在另一个模式或字符串后面的某个模式或字符串,不管这两个模式或字符串是否在同一行上,那么可以指定由分号( 分隔的两个搜索命令,从而执行复合搜索。
例如,要想搜索出现在字符串
Unknownmacro:
{file}
+1后面的字符串echo,应该使用/
+1/;/echo/。
在清单6所示的文件中,这个命令会找到第10行的第一个单词。
复合搜索对于寻找代码中出现在另一个命令后面的某个命令尤其有用—例如,在设置某个变量之后调用函数的地方。
重放搜索模式
当在文件中搜索要替换的模式时,可以让vi把要匹配的任何模式保存在缓冲区中;然后,在执行替换时,可以用缓冲区引用号重放它们。
方法是把模式放在(和)之间,这会指示vi把模式放在编号的缓冲区(1到9)中。
在执行替换时,可以用缓冲区引用号\1到\9引用这些缓冲区。
例如,假设要在清单7所示的文件中搜索以单词Martin开头的行并对每个匹配添加前缀Mr和后缀Wicks,那么进入命令模式,输入vi命令:
%s/^(Martin)/Mr\1Wicks/g,然后按回车。
清单8.重放搜索模式(之后)
MrMartinWicksisanITconsultant.Martinlikes
snowboardingandmountainbiking.Martinhas
workedonUNIXsystems forover
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vi 几个 常用 技巧