Vi 是Unix世界里极为普遍的全屏幕文本编辑器,VIM是它的改进版本Vi IMproved的简称。几乎可以说任何一台Unix机器都会提供这套软体。Linux当然也有,它的 vi 其实是 elvis(版权问题),不过它们都差不多。熟悉 DOS 下的文书处理後,也许会感到 vi 并不好用;Unix 上也已经发展出许多更新、更好用的文书编辑器,但是并不一定每一台Unix机器上都会安装这些额外的软体。所以,学习 vi 的基本操作还是有好处,让你在各个不同的机器上得心应手。( ### Vi编译器的使用说明 #### 一、Vi 编辑器简介 Vi(Visual Editor)是一款在 Unix 和类 Unix 系统中广泛使用的文本编辑器,它以功能强大而著称。对于大多数 Unix 或 Linux 用户来说,Vi 几乎是必备技能之一。随着技术的发展,Vi 逐渐演进为 VIM(Vi Improved),提供了更多增强功能。虽然现在有许多更现代的编辑器可供选择,但 Vi 由于其普遍性以及强大的功能,在各种 Unix 环境下仍然是非常实用的工具。 #### 二、启动 Vi - **命令格式**: - `vi filename`:打开或创建名为 `filename` 的文件。 - `vi -r filename`:在上次编辑 `filename` 时遇到系统崩溃后,恢复该文件。 - `vi file1 file2 ... fileN`:同时打开多个文件进行编辑。 #### 三、移动光标 在 Vi 中,可以通过多种快捷键来移动光标: - **单步移动**: - `h`:向左移动一个字符。 - `j`:向下移动一行。 - `k`:向上移动一行。 - `l`:向右移动一个字符。 - **单词移动**: - `w` 或 `W`:向右移动到下一个单词的开头。 - `b` 或 `B`:向左移动到前一个单词的开头。 - `e` 或 `E`:向右移动到下一个单词的结尾。 - **行移动**: - `0` 或 `^`:移动到当前行的开头。 - `$`:移动到当前行的结尾。 - `G`:移动到文件的最后一行。 - `gg`:移动到文件的第一行。 - `nG`:移动到文件的第 n 行。 - `n$`:移动到文件的第 n 行的结尾。 - **屏幕移动**: - `H`:移动到屏幕的顶部。 - `M`:移动到屏幕的中部。 - `L`:移动到屏幕的底部。 - `Ctrl + f`:向下滚动一屏。 - `Ctrl + b`:向上滚动一屏。 - `Ctrl + d`:向下滚动半屏。 - `Ctrl + u`:向上滚动半屏。 #### 四、屏幕翻滚 - `Ctrl + f`:向下滚动一屏。 - `Ctrl + b`:向上滚动一屏。 - `Ctrl + d`:向下滚动半屏。 - `Ctrl + u`:向上滚动半屏。 - `nz`:将第 n 行滚动到屏幕顶部,如果不指定 n,则当前行会被滚动到屏幕顶部。 #### 五、插入文本 在 Vi 中可以使用以下命令进行文本插入: - `i`:在光标前插入文本。 - `I`:在当前行首插入文本。 - `a`:在光标后插入文本。 - `A`:在当前行尾插入文本。 - `o`:在当前行下方新开一行进行插入。 - `O`:在当前行上方新开一行进行插入。 #### 六、修改文本 - `ncw` 或 `nCW`:修改指定数目的字符。 - `cw`:修改从当前字符到本词末尾。 - `cc`:替换当前行。 - `r`:替换当前字符。 - `R`:替换当前字符及其之后的所有字符,直到按 `Esc` 键为止。 #### 七、删除与剪切 - `x`:删除一个字符。 - `X`:删除光标前的一个字符。 - `dw` 或 `dW`:删除光标处开始及其后的单词。 - `dd`:删除当前行。 - `ndd`:删除当前行及其后 n-1 行。 - `Ctrl + u`:删除插入模式下已输入的文本。 #### 八、复制与粘贴 - `yy`:复制当前行。 - `nyy`:复制当前行及其后 n-1 行。 - `p`:粘贴剪切板中的内容到当前行下方。 - `P`:粘贴剪切板中的内容到当前行上方。 #### 九、搜索与替换 - `/pattern`:从光标位置开始向文件尾部搜索 `pattern`。 - `?pattern`:从光标位置开始向文件头部搜索 `pattern`。 - `n`:重复上一次的搜索命令,继续查找下一个匹配项。 - `N`:反方向重复上一次的搜索命令。 - `:s/pattern1/pattern2/g`:将当前行中所有的 `pattern1` 替换为 `pattern2`。 - `:n1,n2s/pattern1/pattern2/g`:将第 n1 行到第 n2 行中的所有 `pattern1` 替换为 `pattern2`。 - `:g/pattern1/s//pattern2/g`:将文件中所有 `pattern1` 替换为 `pattern2`。 #### 十、特殊字符 - `^`:匹配字符串位于行首。 - `$`:匹配字符串位于行尾。 - `.`:表示任何单个字符。 - `*`:表示其前字符可出现任意多次。 - `[]`:表示指定方位内字符,其中可用 `-` 表示一个字符范围,用 `^` 表示不在某个范围内的字符。 #### 十一、设置选项 Vi 支持多种选项设置来优化编辑体验: - `set all`:列出所有选项设置情况。 - `set term`:设置终端类型。 - `set ignorecase`:在搜索中忽略大小写。 - `set list`:显示制表位 (`^I`) 和行尾标志 (`$`)。 - `set number`:显示行号。 - `set report`:显示由面向行的命令修改过的行数目。 - `set terse`:显示简短的警告信息。 - `set warn`:在转到别的文件时,如果没有保存当前文件,则显示 `Nowrite` 消息。 - `set nomagic`:允许在搜索模式中,使用前面不带 `\` 的特殊字符。 - `set nowrapscan`:禁止 Vi 在搜索到达文件两端时又从另一端开始。 - `set msg`:允许 Vi 显示其他用户用 `write` 写到自己终端上的信息。 #### 十二、行方式命令 - `:w`:保存当前文件。 - `:e filename`:打开文件进行编辑。 - `:x`:保存当前文件并退出。 - `:q`:退出 Vi。 - `:q!`:不保存文件退出 Vi。 - `:!command`:执行 Shell 命令 `command`。 - `:n1,n2w! command`:将文件中 n1 行到 n2 行的内容作为 `command` 的输入并执行之,若不指定 n1、n2,则将整个文件内容作为 `command` 的输入。 #### 十三、寄存器操作 - `ndd`:将当前行及其下共 n 行文本删除,并将所删除的内容放到 1 号删除寄存器中。 - `nY`:将当前行及其下共 n 行的内容保存到第一号寄存器中。 - `p`:将第一号寄存器中保存的内容放到当前行下。 #### 十四、其他命令 - `:map key command`:映射 `key` 到 `command`,使得按下 `key` 后执行 `command`。 通过以上内容的学习,我们可以看到 Vi 提供了非常丰富的功能和命令,能够极大地提高文本编辑效率。无论是对于日常的文档编写还是编程工作,熟练掌握 Vi 都将带来极大的便利。
- 粉丝: 0
- 资源: 10
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助