文本编辑器 Vi 理解Vi的三种运行模式学会进入插入模式学会在编辑模式下操作学会在命令模式下操作 概述 vi是个UNIX下面的缺省的可视化的编辑器vi是威廉 侨伊写的 作为BSDUNIX的一部分 后来AT T也开始用vi 于是标准UNIX也开始采用 特点 vi是个强大的编辑器vi非常小vi有些繁琐 22 3 1Vi及其三种运行模式 l命令模式 Commandmode 任何时候 不管用户处于何种模式 只要按一下Esc键 即可使vi进入命令模式 我们在shell环境 提示符为 下输入启动vi的命令 进入编辑器时 也是处于该模式下 在该模式下 用户可以输入各种合法的vi命令 对文档进行一些操作 如删除单个字符 删除一行字符 删除一个区块等 在这种模式下 从键盘上输入的任何字符都被当做编辑命令来解释 若输入的字符是合法的vi命令 则vi在接受用户命令之后完成相应的操作 但需注意的是 所输入的命令并不在屏幕上显示出来 若输入的字符不是vi的合法命令 vi会响铃报警 l文本输入模式 Insertmode 在命令模式下输入插入命令i 附加命令a 打开命令o 修改命令c 取代命令r或替换命令s都可以进入文本输入模式 在该模式下 用户输入的任何字符都被vi当做文件内容保存起来 并将其显示在屏幕上 在文本输入过程中 若想回到命令模式下 按Esc键即可 末行模式 Linemode 在命令模式下 用户按 键即可进入末行模式下 此时vi会在显示窗口的最后一行显示一个 作为末行模式的提示符 等待用户输入命令 多数对文件操作命令都是在此模式下执行的 如查找 替换文本中的某个字符串 末行命令执行完后 vi自动回到命令模式 常用命令涉及的单词或字符 w writeorwordr readb beginh homed deleteu undop pastei insertq quita appendm middlel last 尾 头s stick Vi的基本操作 进入插入模式基本命令 i a o从插入模式返回编辑模式insert命令模式下的基本操作 wfilename wq q q ZZ Vi命令的数字前缀 I在关标位置开始插入字符 结束时按ESC键 I在光标所在行的最前面开始加字 结束时按ESC键 a在光标位置后开始加字 结束时按ESC键 A在光标所在行的最后面开始加字 结束时按ESC键 o在光标下加一空白行并开始加字 结束时按ESC键 O在光标上加一空白行并开始加字 结束时按ESC键 command执行shell指令 并把结果加在光标所在行的下一行 vi定位命令 Shift h H 光标移到屏幕的第一行Shift m M 光标移到屏幕的中间行Shift l L 光标移到屏幕的最后一行Ctrl b 向上移动一屏Ctrl f 上下移动一屏Ctrl d 向下半页Ctrl u 向上半页G 文件的最后 vi定位命令 到行首 或 0 到行未 或 number 指定到某一行w 向后移动一个单词b 向前移动一个单词 vi编辑命令 删除 dl删除当前字符 与x命令功能相同 d0删除到某一行的开始位置d 删除到某一行的第一个字符位置 不包括空格或TAB字符 dw删除到某个单词的结尾位置d3w删除到第三个单词的结尾位置db删除到某个单词的开始位置d 删除到某个段落的结尾位置d 删除到某个段落的开始位置 段落以一空行分隔 vi编辑命令 删除 dd删除当前行Dord 从当前字符删除到结尾d text删除从文本中出现 text 中所指定字样的位置 一直向前直到下一个该字样所出现的位置 但不包括该字样 之间的内容5dd删除从当前行所开始的5行内容dL删除直到屏幕上最后一行的内容dH删除直到屏幕上第一行的内容dG删除直到工作缓存区结尾的内容 文尾 d1G删除直到工作缓存区开始的内容 文头 vi编辑命令 删除 nx删除由光标位置起始的n个字符 含光标位置 按一个x表示删除光标所在的字符 nX删除由光标位置起始的n个字符 不含光标位置 vi编辑命令 修改 cl更改当前字符cw修改到某个单词的结尾位置c3w修改到第三个单词的结尾位置cb修改到某个单词的开始位置c0修改到某行的结尾位置c 修改到某个语句的结尾位置c4 修改到第四个语句的结尾位置c 修改到某个语句的开始位置c 修改到某个段落的结尾位置c 修改到某个段落的开始位置c7 修改到当前段落起始位置之前的第7个段落位置 vi编辑命令 修改 ctc修改当前行直到下一个字符c所出现位置之间的内容C修改到某一行的结尾cc修改当前行5cc修改从当前行所开始的5行内容 vi编辑命令 替换 s或cl替换当前字符S将当前行替换为一个或多个字符5s将从当前字符开始的5个字符替换为一个或多个字符r修改光标文件的字符R从光标位置开始修改 结束时按ESC键 vi编辑命令 复制 剪切 粘帖 yy或Y可以把一行文本拷贝到寄存器中dd剪切一行P或p粘贴一行寄存器 可以存放剪切和拷贝下来的东西的地方 只要有一个删除命令的话 寄存器中的东西就没有了 vi编辑命令 撤销 u可以撤消你刚才的操作U可以撤消你对当前行的修改 vi编辑命令 替换和查找 string查找string n是查找下一处 s string1 string2 g在整个文件中替换 string1 成 string2 3 7s string1 string2 仅替换文件中的第3行到第7行中的 string1 成 string2 s somestring g在整个文件每一行的行尾添加 somestring s somestring g在整个文件每一行的行首添加 somestring s 表示当前文件所有行 g表示global 所有都替换 i 不区分大小写 c 每次替换确认 vi编辑命令 宏 map 以后在命令状态下输入lhs就会运行的命令 unmap取消某宏 map n将Fn功能键定义成宏 vi编辑命令 缩写 ab 以后在编辑状态下输入lhs就会出现rhs字符串 unab取消某缩写 set set set 显示出当前这个选项的参数值 setall则显示所有的选项值对那些无须参数的选项来说 使用 setno就可以把它给关了 setall查看所有变量 setnumber显示行号 setai可以让vi自动对齐 setap每条命令之后都显示出修改之处 setaw在 n 命令之前都自动保存文件 setdir tmp存放缓冲区的目录名 setremap允许宏指向其他的宏 setsh bin sh指定shell vi编辑多个文件 vifilename1filename2 filenameN args 显示编辑名单中的各个文件名 n 读入编辑名单中的下一个文件 rew 读入编辑名单中的第一个文件 e 读入编辑名单内的前一个文件 efile 读入另一个文件进vi 此文件可不在编辑名单内 若原文件经修改还没有存档 则应先以 w存档 e file 强迫读入另一个文件进入vi 原文件不作存档动作 vi编辑命令 高级复制 first lastcodest将first到last行的数据复制到目标行 dest 下面 start endmdest将start到end行的数据移动到目标行 dest 下nY将光标所在位置开始的n行数据暂存 vi高级用法 Ctrl 或ctrl 3 回到命令态CTRL s 冻住vi Ctrl q 解开 r插入文件 d 光标的上下左右 可删除两行或一字符 sh暂时退出vi到系统下 结束时按Ctrl d则回到vi X保存后加密 用户输入密码 J上下两行合并 m n w可以将从第m行到第n行之间的文本保存到所指定的文件中 g m0 倒写文档 f或 g告诉用户有关现行编辑文件的数据 vi高级用法 g m0 倒写文档 f或 g告诉用户有关现行编辑文件的数据 vi r恢复系统崩溃 r 把的输出插入到当前文本中 so读取 再执行文件里面的命令 重复前一指令 so读取 再执行文件里面的命令
展开阅读全文