vi 做为Linux 系统中一种编辑器,它的使用方法和界面与 Unix 平台十分相似。在 Linux 中有很多功能强大,界面友好的编辑器,但是vi 还是值得你学习它的使用方法。初步接触 VI,你觉得它的界面不太友好,不容易掌握,可是一旦你掌握了vi 的命令,你可以感觉到它强大的功能与高效。而且vi 相对来说较小,无论你使用任何 Linux系统,你总是可以使用vi的。在很多系统中,可能只有 vi 供你选择。 --
---- 进 入 与 离 开
---- 要 进 入 vi 可 以 直 接 在 系 统 提 示 字 符 下 键 入 vi < 文 件 名 称 >,vi 可 以 自 动 帮 你 载 入 所 要 编 辑 的 文 件 或 是 开 启 一 个 新 文 件。 进 入 vi 後 屏 幕 左 方 会 出 现 波 浪 符 号, 凡 是 列 首 有 该 符 号 就 代 表 此 列 目 前 是 空 的。 要 离 开 vi 可 以 在 指 令 模 式 下 键 入 :q, :wq 指 令 则 是 存 档 後 再 离 开( 注 意 冒 号)。 要 切 换 到 指 令 模 式 下 则 是 用 [ESC] 键, 如 果 不 晓 得 现 在 是 处 於 什 麽 模 式, 可 以 多 按 几 次 [ESC], 系 统 会 发 出 哔 哔 声 以 确 定 进 入 指 令 模 式。
---- ----
这里列出 vi 中较常用的操作命令。
进入输入输出的方法 | |
命令 | 作用 |
<a> | 在光标后输入文本 |
<A> | 在当前行末尾输入文本 |
<i> | 在光标前输入文本 |
<I> | 在当前行开始输入文本 |
<o> | 在当前行后输入新一行 |
<O> | 在当前行前输入新一行 |
光标移动 | |
命令 | 作用 |
<b> | 移动到当前单词的开始 |
<e> | 移动到当前单词的结尾 |
<w> | 向前移动一个单词 |
<h> | 向前移动一个字符 |
<j> | 向上移动一行 |
<k> | 向下移动一行 |
<l> | 向后移动一个字符 |
<ctrl+f> | 向前移动一个屏幕 |
<ctrl+b> | 向后移动一个屏幕 |
<g> | 移动到文档的开始位置 |
<G> | 移动到文档的结束位置 |
<n+Enter> | 光标向下移动n行 |
<0> | 移动到行首 |
<$> | 移动到行尾 |
:n | 移动到第n 行 |
删除操作 | |
命令 | 作用 |
<x> | 删除光标所在的字符 |
<dw> | 删除光标所在的单词 |
<d$> | 删除光标至行尾的所有字符 |
<D> | 同<d$> |
<dd> | 删除当前行 |
可在删除命令前加上数字,如<5x>表示删除5个字符,<5dd>表示删除5行。
改变与替换操作 | |
命令 | 作用 |
<r> | 替换光标所在的字符 |
<R> | 替换字符序列 |
<cw> | 替换一个单词 |
<ce> | 同<cw> |
<cb> | 替换光标所在的前一字符 |
<c$> | 替换自光标位置至行尾的所有字符 |
<C> | 同<c$> |
<cc> | 替换当前行 |
:n,m s/sour /dest /g | 将第n行至第m行间所有的sour 替换为dest |
:1,$ s/sour /dest /g | 从第1行至最后一行,将所有的sour 替换为dest |
:1,$ s/sour /dest /gc | 从第1行至最后一行,将所有的sour 替换为dest, 并 在替换前进行确认. |
u | 按u键可以撤销之前做的修改。连续按u可以撤销更前面的修改。 |
Ctrl+R | 如果决定不再撤销前面的命令,可使用Ctrl+R进行恢复。本质上,这个命令取消所做的撤销操作 |
U | 取消一行内的所有更动 |
:e! | 放弃所有更动,重新编辑 |
查询 | |
命令 | 作用 |
</abc> | 向前查询abc |
<?abc> | 向后查询abc |
<n> | 向前继续查询 |
<N> | 向后继续查询 |
拷贝与粘贴 | |
命令 | 作用 |
</yw> | 将光标所在单词拷入剪贴板 |
<y$> | 将光标至行尾的字符拷入剪贴板 |
<Y> | 同<y$> |
<yy> | 将当前行拷入剪贴板 |
<n yy> | 将当前行开始的n行拷入剪贴板 |
<p> | 将剪贴板中的内容粘贴在光标后 |
<P> | 将剪贴板中的内容粘贴在光标前 |
文件保存及退出vi | |
命令 | 作用 |
<:q> | 不包存退出 |
<:q!> | 不保存强制性退出 |
<:w> | 保存编辑 |
<:w filename> | 存入文件 filename 中 |
<:w! filename> | 强制性存入文件 filename 中 |
<:wq> | 保存退出 |
<:x> | 同 <:wq> |
<ZZ> | 同 <:wq> |
读取文件相关命令
文件读取及命令执行 | |
:r 文件名 | 所文件插入到光标处 |
:r!命令 | 所命令的输出插入到当前文本中 |
:n r 文件 | 把文件插入到第n行 |
:!命令 | 运行命令 |
:sh | 转到shell |
:so 文件 | 读取文件,再执行文件里面的命令 |
最后行方式命令
:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d :将n1行到n2行之间的内容删除
:w :保存当前文件
:e filename:打开文件filename进行编辑
:x:保存当前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:执行shell命令command
:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指
定n1,n2,则表示将整个文件内容作为command的输入
:r!command:将命令command的输出结果放到当前行 。