2010年10月1Unix/Linux操作系统2010年10月2温故而知新•命令模式下–删除、撤销、替换、复制、粘贴、修改•末行模式下–保存/退出、搜索、替换、在线帮助•vi编辑器的高级用法–启动选项、编辑多个文件、读入另一个文件、另存为、操作符、控制域2010年10月3本节课主要内容•vi编辑器高级用法–数字缓冲区、字母缓冲区•定制vi编辑器–临时定制–永久定制•最后的vi命令2010年10月4vi编辑器的数字缓冲区•vi编辑器有9个数字缓冲区,编号为1~9,每次删除的内容,自动依次放入数字缓冲区,第一次删除的内容放在缓冲区1中,第二次删除时,原缓冲区1的内容放入缓冲区2中,新操作的内容放入缓冲区1中,依次类推,超过9次操作后,即第10次删除的内容放入缓冲区1中后,第1次删除的内容就丢失了。2010年10月5vi编辑器的数字缓冲区•命令模式下输入3p,意思是从数字缓冲区3中取出内容,放在当前光标位置的后面或者后一行2010年10月6vi编辑器的数字缓冲区•创建一个文件2010年10月7vi编辑器的数字缓冲区•dd删除第一行内容2010年10月8vi编辑器的数字缓冲区•再2dd删除后面的两行2010年10月9vi编辑器的数字缓冲区•再dd删除接下来的一行2010年10月10vi编辑器的数字缓冲区•现在在vi编辑器的命令模式下输入2p2010年10月11vi编辑器的字母缓冲区•vi编辑器还有26个字母缓冲区,用小写字母a到z来命名,和数字缓冲区不同的是,用户复制或者删除操作的内容不会自动放在字母缓冲区,如果用户想使用字母缓冲区,必须手工指定2010年10月12vi编辑器的字母缓冲区•add#将删除的当前行放在缓冲区a中•byy#将复制的当前行放在缓冲区b中•ap#将缓冲区a的内容复制到当前位置•缓冲区通用操作格式–+缓冲区编号+操作命令2010年10月13定制vi编辑器•vi编辑器有很多参数可供用户设置,掌握一些常用参数的设置,可以定制个性化vi编辑器工作环境2010年10月14定制vi编辑器2010年10月15定制vi编辑器•在命令模式下输入:setall–查看所有参数的列表以及参数的当前设置•在命令模式下输入:set***?–显示参数***的值–例如:settabstop?回车#显示你在vi编辑器的文本插入模式下,输入tab键时,缩进的空格数,空格个数就是参数tabstop的值2010年10月16定制vi编辑器•vi编辑器的参数的值可以分为三类–布尔、数值和字符串•布尔–set***#打开开关,使参数***有效–setno***#关闭开关,使参数***无效–例如sethls和setnohls#设置是否高亮度显示匹配串2010年10月17定制vi编辑器•数值–例如:settabstop=5#设置tab键缩进5个字符•字符串–例如setfileformat=unix#设置文件格式2010年10月18定制vi编辑器•为什么有的时候,在Linux写好的文本文件,在windows下看时,丢失了换行效果?•在windows下写好的文本文件,到了linux下会出现类似黑色方框这样的不能识别字符2010年10月19定制vi编辑器•几个常用的参数–ignorecase(ic)、noic–tabstop–number(nu)、nonu–showmatch(sm)、nosm–showmode(smd)、nosmd–autoindent(ai)、noai2010年10月20定制vi编辑器•:setignorecase(ic)或者:setnoic–搜索时是否严格区分大小写•:settabstop=5–插入模式,按tab键,插入的空格数•:setnumber(nu)或者:setnonu–vi编辑器是否显示行号2010年10月21定制vi编辑器•:setshowmatch(sm)、nosm–当输入)或者}时,光标会跳转到匹配的(或者{,再返回•:setshowmode(smd)、nosmd–显示vi编辑器的状态,如插入、替换•:setautoindent(ai)或者:setnoai–新行的输入位置是否与上一行对齐2010年10月22定制vi编辑器•其他还有参数,大家可以在命令模式下输入:help***?回车来查看具体用途,用:q可以退出帮助界面,返回到vi编辑器界面2010年10月23定制vi编辑器•缩写–vi编辑器提供编辑内容时的快捷输入方法,用一个简单的字符串代替一长串字符串•在命令模式下输入:abuUnix回车–意思是在vi编辑器的文本输入模式下,输入单独一个u字符后,vi编辑器会自动替换成Unix•在命令模式下输入:ab–显示设置的所有缩写字符串•在命令模式下输入:unabu–#取消u缩写串的定义2010年10月24定制vi编辑器•宏–vi编辑器提供命令快捷输入方法•在命令模式下输入:map55dd–意思是将命令5dd,用5来代替,只要在命令模式下输入5,就相当于输入5dd,删除光标所在行及光标后的四行•在命令模式下输入:unmap5–取消快捷命令5的定义2010年10月25定制vi编辑器•以上所有用set命令以及ab、map定义的vi编辑器的工作环境,都属于临时定义,关闭vi编辑器后,定义就取消了!你现在有什么想法?2010年10月26定制vi编辑器•修改配置文件,永久定制vi编辑器的个性化工作环境(直到你重新修改配置)•修改的配置文件又分为两种–对用户自己的vi编辑器起作用的配置文件–对系统所有用户的vi编辑器都起作用的配置文件(系统管理员root才有权限修改)2010年10月27定制vi编辑器•修改用户自己的vi编辑器配置文件,此文件是用户家目录下的.vimrc文件,方法如下:–cd#回到用户家目录–pwd#确认是位于家目录下–ls-a#显示家目录下的所有文件,包括以.开头的隐藏文件,看到文件.vimrc–cp.vimrc.vimrc_bak#做个备份,免得你修改错了无法恢复2010年10月28定制vi编辑器–vi.vimrc#打开文件.vimrc,开始编辑–在命令模式下输入G,定位到文件的末行–修改什么呢?例如在文件末尾添加一行信息,内容为setnu–在命令模式下输入:wq–再次启动vi编辑器查看一个已经存在的文件的内容,是不是每行前面都有行号显示?2010年10月29定制vi编辑器•可以将前面学习的定制vi编辑器的常用参数写在此配置文件中,就可以让对应参数生效,而且是永久生效!•现在用另一个用户身份登录,使用vi编辑器,是否仍有行号显示吗?这说明什么?你现在又有什么想法?2010年10月30定制vi编辑器•修改系统所有用户使用的vi编辑器配置文件,此文件是/etc目录下的vimrc文件,方法如下:–su-root#切换成root身份–cd/etc#进入/etc目录–pwd#确认自己是在/etc目录下–lsvim*#看到有匹配的文件叫vimrc–cpvimrcvimrc_bak#做个备份是个好习惯2010年10月31定制vi编辑器–vivimrc#打开文件vimrc,开始编辑–在命令模式下输入G,定位到文件的末行–修改什么呢?例如在文件末尾添加一行信息,内容为setnu–在命令模式下输入:wq–再次启动vi编辑器查看一个已经存在的文件的内容,是不是每行前面都有行号显示?–用不同身份登陆,使用vi编辑器,是否都加行号显示了?2010年10月32定制vi编辑器•可以将前面学习的定制vi编辑器的常用参数写在此配置文件中,就可以让对应参数生效,而且是永久生效,对所有用户永久生效!•思考,当/etc/vimrc和/$HOME/.vimrc的设置出现冲突时,哪个会生效呢?2010年10月33最后的vi命令•在vi编辑器的末行模式下可以运行shell命令–:!ls回车#显示当前目录下的文件–:!pwd回车#显示当前所在目录•可以将shell命令的运行结果作为文件的文本内容–:r!ls回车#将当前目录下的文件名保存到文件中2010年10月34最后的vi命令•行连接•使用J键,将当前行(光标所在行)下面的一行内容连接到当前行上,放在当前行行末,如果两行连接后产生一个长行,屏幕进行折行显示2010年10月35最后的vi命令•恢复当用户正在编辑文件时,vi编辑器崩溃了怎么办?除了用户自觉的经常执行保存命令外,幸好,编辑器都带有恢复功能!2010年10月36最后的vi命令•你可以这样模拟vi编辑器崩溃的情况–打开终端,用vi编辑器打开一个文件,修改后,未保存,直接关闭终端界面–再打开一个终端,用vi编辑器打开刚才的文件,你会看到一些提示信息,如下张幻灯片所示。–这种界面还会出现在,有两个终端都用vi编辑器编辑同一个文件时2010年10月372010年10月38最后的vi命令•如果知道有文件要恢复,那么可以直接使用命令恢复–vi-r要恢复的文件的文件名•如果不知道有文件要恢复–vi要恢复的文件的文件名•你会发现vi编辑器的待恢复文件是隐藏文件,即以.开头,.*.swp2010年10月39最后的vi命令•试说出下面命令实现的功能–xp–ddp–d$–dG–d1G–......2010年10月40最后的vi命令•:x•命令模式下–ctrl+g–D–s–S–C•键盘没有ESC键怎么办?–试试ctrl+[2010年10月41到此,vi编辑器的常用命令我们学习完了,还要通过日常使用扩充vi命令,多练习,才能记住!20-30%60%90%