1、vi编辑器,vi 简介,vi是“visual interface”的简称。vi可以执行输出、删除、查找、替换、块操作等众多文本操作 。vi不是一个排版程序(可以对字体、格式、段落等其他属性进行编排),它只是一个文本编辑程序。vi是全屏幕文本编辑器,它没有菜单,只有命令。vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,vi的模式,vi有三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)1) 命令模式控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或
2、者到底行模式2) 插入模式只有在此模式下才可以做文字输入,按ESC键可回到命令模式。 3) 底行模式将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号等。,vi的基本操作,a) 进入vi 在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:#vi myfile 不过有一点要特别注意,就是进入vi之后,是处于命令模式,要切换到插入模式才能够输入文字。vi后跟的文件名如果存在,则编辑文件,如果不存在,则新建文件。如果vi后面不接文件名,则保存的时候必须指定文件名。,vi的基本操作,b) 切换至插入模式编辑文件在命令模式下按一下字母i就可以进入插入模式,这时候就可以开始输入文
3、字了。 c) Insert 的切换 处于插入模式,就只能一直编辑文字,按ESC键转到命令模式(command mode)。 d) 退出vi及保存文件 在命令模式下,按一下:冒号键进入Last line mode,例如::,vi的基本操作,:w filename (将文章以指定的文件名filename保存) :wq (输入wq,存盘并退出vi) :q(没改变过文件内容,则退出):q! (输入q!, 不存盘强制退出vi),命令模式功能键,1). 插入模式 按i切换进入插入模式insert mode,按“i”进入插入模式后是从光标当前位置开始输入文件;按a进入插入模式后,是从目前光标所在位置的下一个
4、位置开始输入文字; 按o进入插入模式后,是插入新的一行,从行首开始输入文字。 2). 从插入模式切换为命令模式 按ESC键。3). 移动光标 可用键盘上的箭头键来上下左右移动,但正规的vi是用小写英文字母h、j、k、l,分别控制光标 左 、下 、上 、右移一格。,命令模式功能键,可以用“数字+上下左右箭头或hjkl字母”来一次移动多个字符或多行。如2j,向下移动2行。还有,按20 则光标会向后面移动 20 个字符距离。按n:n 为数字。光标向下移动 n 行按ctrl+b:屏幕往“后”移动一页。按ctrl+f:屏幕往“前”移动一页。按ctrl+u:屏幕往“后”移动半页。按ctrl+d:屏幕往“前
5、”移动半页。,命令模式功能键,按数字0:移到行的开头。 按$:移动到行尾。 按H:移动到当前屏幕的第一行。按M:移动到当前屏幕的中间。按L:移动到当前屏幕的最后一行。按G:移动到文章的最后。 按nG:移动到这个文件的第 n 行。例如 20G 则会移动到这个文件的第 20行(请配合“:set nu”来使用)按gg:移动到这个文件的第一行,相当于 1G!,命令模式功能键,4). 删除文字 x:每按一次,删除光标所在位置的一个字符。 #x:例如,6x表示删除光标所在位置及其“后面”6个字符。 X:大写的X,每按一次,删除光标所在位置的“前面”一个字符。 #X:例如,20X表示删除光标所在位置的“前面
6、”20个字符。 dd:删除光标所在行。 #dd:从光标所在行开始删除#行 d1G:删除光标所在到第一行的所有数据,命令模式功能键,d3G:删除光标所在行开始,直到第3G行dG:删除光标所在到最后一行的所有数据d$:删除光标所在处,到该行的最后一个字符d0:那个是数字的 0 ,删除游标所在处之前的一个字符,直到该行的最前面一个字符5). 复制 yw:将光标所在之处到字尾的字符复制到缓冲区中。 #yw:复制#个字到缓冲区(从光标所在之处开始) yy:复制光标所在行到缓冲区。,命令模式功能键,#yy:例如,6yy表示复制从光标所在的该行“往下数”6行文字。 p:p 为将已复制的数据在光标下一行贴上,
7、P 则为贴在游标上一行!注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。 y1G:复制光标所在行到第一行的所有数据yG:复制光标所在行到最后一行的所有数据,命令模式功能键,y0:复制光标所在位的前一个字符到该行行首的所有数据y$:复制光标所在的那个字符到该行行尾的所有数据6). 替换 r:替换光标所在处的字符一次。 R:替换光标所到之处的字符,直到按下ESC键为止。 7). 回复上一次操作 u:如果误执行一个命令,可以马上按下u,回到上一个操作。按多次“u”可以执行多次回复。,命令模式功能键,8). 跳至指定的行 #G:例如,15G,表示移动光标至文章的第15行行首。
8、ctrl+g列出光标所在行的行号。,底行模式,在使用底行模式之前,请记住先按ESC键确定已经处于命令模式下后,再按:冒号即可进入底行模式。 A) 列出行号 :set nu:输入set nu后,会在文件中的每一行前面列出行号。 :set nonu:与 set nu 相反,为取消行号!B) 跳到文件中的某一行 :#:#号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。,底行模式,C) 查找字符串/关键字:往后查找字符串。先按/键,再输入想查找的字符串,然后回车,按n继续查找。 按N则反向查找。?关键字:往前查找字符串。先按?键,再输入想
9、查找的字符串,然后回车,按n继续往前查找。 按N则反向查找。D)替换字符串:n1,n2s/word1/word2/g:n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间查找 xxk 并取代为 XXK 则: :100,200s/xxk/XXK/g。,底行模式,:1,$s/word1/word2/g:从第一行到最后一行查找word1字符串,并将该字符串替换为word2:1,$s/word1/word2/gc:从第一行到最后一行查找word1字符串,并将该字符串取代为word2 ,替换操作前会确
10、认询问。g的含义:将一行内的多个找到的字符串进行替换,没有g,则只会替换每行中的第一个找到的字符串D) 保存文件 :w:在冒号输入字母w就可以将文件保存起来。 :w filename :将编辑的数据储存成另一个文件(类似另存文件)。,底行模式,:r filename :在编辑的数据中,读入另一个文件的数据。即将filename这个文件内容加到光标所在行后面。:n1,n2 w filename :将 n1 到 n2 的内容储存成 filename 这个文件。E) 离开vi :q:按q就是退出,如果无法离开vi,可以在q后跟一个!强制离开vi。 :wq:一般建议离开时,搭配w一起使用,这样在退出的
11、时候还可以保存文件,底行模式,:! command:暂时离开 vi 到shell接口下执行 command,并显示命令结果 。例如 :! ls /home:e! :将文件还原到最原始的状态,第一次使用vi的注意事项,1、用vi打开文件后,是处于命令模式,要切换到插入模式才能够输入文字。切换方法:在命令模式下按一下字母i就可以进入插入模式,这时候就可以开始输入文字了。 2、编辑好后,需从插入模式切换为命令模式才能对文件进行保存,切换方法:按ESC键。 3、保存并退出文件:在命令模式下输入:wq即可!(别忘了wq前面的:),vi的隐藏文件,注意:当我们编辑一个文件时,假设名称为 /tmp/pass
12、wd , 那么在这个 /tmp 下就会有一个临时文件,文件名为 /tmp/.passwd.swp ,这是一个隐藏文件!假设有swp临时文件,则: (1) 可能有人在编辑这个文件; (2) 之前你在编辑这个文件时,因为某些原因导致 vi 程序中断,则该临时文件就会存在。如果是(2) ,则可以将该.passwd.swp文件删除,如果不删除的话,那么每次编辑这个文件,都会告知你该文件有问题!,简单练习,1. 请在 /tmp 目录下建立一个名为 vitest 的目录;2. 进入 vitest目录;3. 将 /etc/man.config 复制到本目录下;4. 使用 vi 打开man.config ;5
13、. 在 vi 中设定一下行号;6. 移动到第 58 行,向右移动 40 个字符,请问看到的双引号内是什么目录?7. 移动到第一行,并且向下查找一下 bzip2 这个字符串,请问它在第几行?8. 接着,要将 50 到 100 行之间的 man 改为 MAN,并且一个一个挑选是否需要修改,如何下达命令?,简单练习,9. 修改完之后,突然反悔了,要全部复原,有什么办法?10. 我要复制 51 到 60 行这十行的内容,并且贴到最后一行之后;11. 删除 11 到 30 行之间的 20 行;12. 将这个文件另存成一个 man.test.config 的文件名;13. 去到第 29 行,并删除15个字
14、符;14. 存盘退出。,课堂练习,要在某个文件的第 34 行向右移动 15 个字符,应该在命令模式下达什么命令?在 vi 里面, PageDown 按钮可以使用什么组合键来取代?如何去到 vi 该文件里面的页首或页尾?如何在一行中,移动到行头及行尾?vi 里面,r有什么功能?如何将目前的文件另存为一个新文件?如何进入编辑模式?如何由编辑模式跳回命令模式?若上下左右键无法使用时,请问如何在命令模式移动光标?,课堂练习,若 pagedown pageup 在命令模式无法使用时,如何往前或往后翻一页?如何到本文件的最后一行、第一行;本行的第一个字符、最后一个字符?如何删除一行、n行;如何删除一个字符
15、?如何复制一行、n行并加以贴上?如何查找 string 这个字符串?如何取代 word1 成为 word2,而若需要用户确认,又该如何?如何读取一个文件 filename 进来当前这个文件?,课堂练习,如何另存新文件成为 newfilename?如何存档、离开、存档后离开、强制存档后离开?在 vi 底下作了很多的编辑操作后,却想还原成原来的文件内容,应该怎么做?在 vi 这个程序当中,不想离开 vi ,但是想执行 ls /home 这个命令,vi 有什么额外的功能可以达到这个目的?如何设定与取消行号?,Backdrops:- These are full sized backdrops, just scale them up!- Can be Copy-Pasted out of Templates for use anywhere!,Title Backdrop,Slide Backdrop,Transitional Backdrop,Print Backdrop,,