第三章 文本编辑器vi
vi的模式 Command Mode (命令模式) 这是执行vi后的缺省模式 此时键盘输入当作命令 命令有大小写之区分 Input Mode (插入模式) 使用 a、i、o、c、r、s 进入插入模式 用户输入的任何字符都被vi当做文件内容保存起来,并将其显示在屏幕上 按下 ESC 键即可回到 Command Mode
vi的模式 Last Mode (末行模式) 在 Command Line 按下 : 即可进入该模式 用来进行保存文件、打开文档或环境的设定 命令有大小写之分
vi的进入和内容输入 进入: vi 文件名 输入文件内容 (进入输入模式) (命令模式) 输入文件内容 (进入输入模式) 新增 (append) a 从光标所在位置后面开始新增内容 A 从光标所在行最后面的地方开始新增内容。 插入 (insert) i 从光标所在位置前面开始插入内容 I 从光标所在行的第一个非空白字符前面开始插入资料。 开始 (open) o 在光标所在行下新增一行并进入输入模式。 O 在光标所在行上新增一行并进入输入模式。 (命令模式)
命令模式 1、光标的移动 h 左移一个字符 l 右移一个字符 j 下移一行 k 上移一行 w,W 跳至后一个字的开头(W忽略标点) b,B 跳至前一个字的开头(B忽略标点) e 移动到后一个字的末尾 ^ 至本行第一个非空字符 $ 至行尾 0 至行首 H 移动到当前窗口的第一列 M 移动到当前窗口的中间列 L 移动到视窗的最后一列 ) 光标所在位置到下个句子的第一个字母 ( 光标所在位置到该句子的第一个字母 } 光标所在位置到该段落的最后一个字母 { 光标所在位置到该段落的第一个字母
命令模式 1、光标的移动(续) nH 将光标移到屏幕的第 n 行 nL 将光标移到屏幕的倒数第 n 行 CTRL-d 向下半页 CTRL-f 向下一页 CTRL-u 向上半页 CTRL-b 向上一页 n- 减号移动到上一行的第一个非空白字符,前面加上数字可以指定移动到以 上 n 行 n+ 加号移动到下一行的第一个非空白字符,前面加上数字可以指定移动到以下 n 行
命令模式 2、删除 x 删除光标所在字符 X 删除光标前面的字符 s 删除光标所在字符,并进入输入模式 S 删除光标所在的行,并进入输入模式 dd 删除光标所在的行 D 从光标位置开始删除到行尾 d与光标移动命令的组合
命令模式 3、修改 r 修改光标所在字符,r 后接着要修改的字符。如,rc 可以用字符“ c ”替换光标所指向的当前字符 R 进入替换状态,新增内容会覆盖原先内容,直到按 [ESC] 回到命令模式下为止 cc 修改光标所在行 C 修改从光标位置到该行末尾的内容 c与光标移动命令的组合
命令模式 4、复制和移动 yy 复制当前行到内存缓冲区 nyy 复制 n 行内容到内存缓冲区 y与光标移动的组合 p 将缓冲区的内容粘贴到光标的后面 P 将缓冲区的内容粘贴到光标的前面 另:在末行模式下实现移动 :n1,n2 m n3 : 把 n1到n2 行内容搬到第 n3 行后
命令模式 5、搜索字符串 /pattern 移至下一个包含pattern的行 ?pattern 移至上一个包含pattern的行 / 往下重复查找 ? 往上重复查找 n 在同一方向重复查找 N 在相反方向重复查找 /pattern/+n 移至下一个pattern所在行后的第n行 ?pattern?-n 移至上一个Pattern所在行前的第n行 6、其他 u 撤销前一条命令的结果 *. $ ^ [ ] { } \ / 包含在查找字符串中,要用转义字符(\ )
末行模式 1、文件的保存和退出 :w 保存 :q 退出 :w! 强制保存 :q! 强制退出 :wq 保存退出 :wq! 强制保存退出
末行模式 2、字符串的替换 :s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1 :s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1 :.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1 :1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1 :g/str1/s//str2/g 功能同上
末行模式 其他: 编辑多个文件 : n 将光标移到第 n 行 vi file1 file2 … :n 编辑下一个文件 :e filename 编辑指定文件