250 likes | 437 Views
第二讲 vi 编辑器的使用. vi 简介. vi 可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制 . 只是一个文本编辑器,不能排版 vi 没有菜单,只有命令 vi 有三种基本工作模式,分别是:命令模式( command mode )、插入模式( insert mode )和末行模式( last line mode ). 三种工作模式. vi 的进入与退出. 进入 vi : 命令 “ vi 文件名 ” 命令 “ vi ” ,在退出 vi 时再指定文件名
E N D
vi简介 • vi可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制. • 只是一个文本编辑器,不能排版 • vi没有菜单,只有命令 • vi有三种基本工作模式,分别是:命令模式(command mode)、插入模式(insert mode)和末行模式(last line mode)
vi的进入与退出 • 进入vi: • 命令“vi 文件名” • 命令“vi”,在退出vi时再指定文件名 • 选项“+n”,表示希望在进入vi之后,光标处于文件中第n行上, • 选项“+”表示希望在进入vi之后光标处于文件最末行。
vi的进入与退出 • 保存文件: • 1.在命令模式下,连按两次大写字母<Z>。 • 2.在末行模式下: :w vi保存当前编辑的文件,但并不退出vi,而是继续等待用户输入命令。 :w <newfile> :w! <newfile> 把当前文件的内容保存到指定的文件newfile中,如果newfile已经存在,则覆盖原有内容。
vi的进入与退出 • 在末行模式下,有四种方法可以退出vi返回到shell: • :q 系统退出vi返回到shell。在用此命令时,若编辑的文件没有被保存,则vi在窗口的最末行给出提示信息。 • :q! vi放弃所作修改而直接退到shell下。 • :wq 先保存文件,然后再退出vi返回到shell。 • :x 该命令的功能与命令模式下的ZZ命令功能相同
如何进入插入模式 • a (append) 由光标之后加入资料。 • A 由该行之末加入资料。 • i (insert) 由光标之前加入资料。 • I 由该行之首加入资料。 • o (open) 新增一行于该行之下供输入资料之用。 • O 新增一行于该行之上供输入资料之用。
如何离开插入模式 • 《ESC》 结束插入模式。
如何进入末行模式 • 先按ESC键 • : • / • ?
VI环境的设定 • set nu: 添加行号显示 • set nonu: 取消行号显示 • set autoindent: 自动缩进 • set noautoindent: 取消自动缩进
搜寻 • 在vi中可搜寻某一字串,使光标移至该处。 • /字串 往光标之后寻找该字串。 • ?字串 往光标之前寻找该字串。 • n 往下继续寻找下一个相同的字串。 • N 往上继续寻找下一个相同的字串。
取消前一动作(Undo) • 即复原执行上一指令前的内容。 • u 恢复最后一个指令之前的结果。 • U 恢复光标该行之所有改变。
编辑多个文件 • vi亦提供同时编辑多个文件的功能,方法如下: • #vi file1 file2 .. • 当第一个文件编辑完成后,可利用『:w』将该缓冲区存档,而后再利用 『:n』载入下一个文件。 • 同时vi多个文件时,CTRL-SHIFT-6回到上一个文件,在本次vi的文件和上次vi的文件之间切换。也可以使用:e#进行切换。
字串搜寻与替换 • s(substitute)指令可搜寻某行列范围。 • g(global)指令则可搜寻整个编辑缓冲区的资料。 • :1,%s/old/new/g 将文件中所有的“old”改成“new”。 • :10,20s/old/new/ 将第10行至第20行资料的“old”改成“new”。 • :%s/old/new/g 将编辑缓冲区中所有的“old”改成“new”。
字串搜寻与替换 • :1,%s/^/string1 在文件的第一行至最后一行的行首插入“string1”。 • :%s/$/some string/g 在整个文件每一行的行尾添加“some string”。 • :1,%s/word1/word2/gc 从第一行到最后一行寻找word1 字串,并将该字串替换为 word2 。需要逐一确认。
vi的编辑操作命令 • 在vi中“字”有两种含义: • 广义上,字是两个空格之间的任何内容。 • 狭义上,字是指英文单词、标点符号和非字母字符。 • 句子被定义为是以句号“.”、问号“?”和感叹号“!”结尾,且其后跟着至少一个空格或一个换行符的字符序列。 • 段被定义为以一个空白行开始和结束的片段
在当前行移动光标的命令 • h 将光标左移一格。 • l 将光标右移一格。 • j 将光标下移一格。 • k 将光标上移一格。 • 0 把光标移到当前行的第一个字符处。 • $ 把光标移到当前行的最后一个字符处。
在行之间移动光标的命令 • Ctrl + f向后滚一页。 • Ctrl + d向后滚半页。 • Ctrl + b向前滚一页。 • Ctrl + u向前滚半页。 • Ctrl + e屏幕向下滚一行。 • Ctrl + y屏幕项上滚一行。 • nG 将光标移至行号所指定的行的行首
在文本块间移动光标的命令 • ) 由光标所在位置至下一个句子的第一个字元。 • ( 由光标所在位置至该句子的第一个字元。 • { 由光标所在位置至该段落的最后一个字元。 • } 由光标所在位置至该段落的第一个字元。
屏幕上移动 • H命令:该命令将光标移至屏幕首行的行首.若在H命令之前加上数字n,则将光标移至屏幕第n行的行首。 • M命令: 该命令将光标移至屏幕显示文件的中间行的行首。 • L命令:该命令将光标移至屏幕显示文件的底行的行首。 • G命令:该命令将光标移至该文件的最后一列
命令模式下的文本编辑/文本的删除 • 字符删除命令: x dh • 字和行删除命令 dw db dd d$ d0 <n>dd • 文本块删除命令: d) d( d} d{ • 相对屏幕删除: dH dM dL
删除操作 • x:删除光标所在的文字 • nx:删除光标后面的n个字符 • X:删除光标前面的一个字符 • nX:删除光标前面的n个字符 • dd:删除光标所在行 • ndd:删除光标所在行向下数n行
复制 • 命令方式下输入yy或nyy,表示复制当前行或当前行开始的连续n行,n是一个具体的整数。 • 将光标移到要复制的地方,按p键粘贴。