免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2030 | 回复: 0
打印 上一主题 下一主题

vi入门 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-02-25 08:50 |只看该作者 |倒序浏览
本教程阐述了如何使用功能强大的可视化编辑器 vi。它使用一种快速“巧表单”方法,目的是使您不用花费大量时间,就可以精通 vi。您将会很快学会在 vi 中移动光标、编辑文本、使用插入模式、拷贝粘贴文本及使用重要 vim 扩展功能,如可视化模式和多窗口编辑。
一。教程提示
我应该学习这门教程吗?
此教程阐述了如何使用功能强大的可视化编辑器 vi。它使用一种加速“巧表单”方法,目的是使您不用花费大量时间,就可以精通 vi。您将会快速学会在 vi 中移动、编辑文本、使用插入模式、拷贝粘贴文本及使用重要 vim 扩展功能,如可视化模式和多窗口编辑。
如果您还不知道 vi 或不习惯用它,应认为您有这方面欠缺而接受本教程,加紧学习这种最流行功能强大的 Linux/UNIX 可视化编辑程序。
导航
在此教程中导航非常容易:
  • 使用“下一步”和“上一步”按钮可以在教程中向前或向后移动。
  • 使用“主菜单”按钮可返回教程菜单。
  • 如果您想告诉我们您的想法,请用“反馈意见”按钮。

获取帮助
有关本教程的技术问题,请与作者 Daniel Robbins 联系,他的邮件地址是
drobbins@gentoo.org

Daniel Robbins 生活在 New Mexico 的 Albuquerque,是
Gentoo Technologies, Inc.
的总裁/CEO,是 Gentoo Linux 的创始人,Gentoo Linux 是 PC 的高级 Linux,是 Portage 系统,Linux 的下一代 ports 系统。他还是 Macmillan books Caldera OpenLinux Unleashed, SuSE Linux UnleashedSamba Unleashed 撰稿作家。Daniel has been involved with computers in some fashion since the second grade, when he was first exposed to the Logo programming language as well as a potentially dangerous dose of Pac Man. This probably explains why he has since served as a Lead Graphic Artist at SONY Electronic Publishing/Psygnosis. Daniel enjoys spending time with his wife, Mary, and his new baby daughter, Hadassah.
二。第一步
学习 vi -- 快速
学习 vi 有一点很难 -- vi 有许多命令。 要高效地使用 vi,必须记住一些命令。这可能要花好长时间,而此教程的目标之一就是少花一点时间。因此,如何帮您在短时间内记住诸多命令是本教程的一个挑战。
要处理好这个挑战,随着教程的深入,我们将逐渐把这些命令一起放在一个“巧表单”中。此表将包含所有 vi 重要命令。学完教程后,如果忘记某一个命令,就可以参考巧表单。过一段时间后,当您记住这些命令,就不用过分依赖于巧表单。
学习过程
本教程将使用几种技术帮您学习。首先,就象您期望那样,让我们来讨论一下一个命令是如何工作的。然后,要求您在 vi 中尝试使用这些命令(练习),最后,让您将命令转录到巧表单(以备参考)。如果想要快速学会 vi,按照这个步逐进行是很重要的。试着在 vi 中使用一条命令,然后记在您的 巧表单 上便于记忆。
介绍 vim
vi 版本有多种,在此将介绍如何使用称为 vim 的版本。vim 非常流行,它有一些更好的扩展功能(因此无论何时我在演示 vi 特定命令时都要作记录),如果您需安装 vim,可以从
http://www.vim.org
上下载。除了是加强的命令行 vi,vim 还带有一个很不错的图形编辑器 gvim,您可以对其进行配置来使用 GTK+ GUI 库。下面是从我的系统抓下的一屏:

如果您是 vi 新用户,应该在系统上运行 gvim。对于初学者,从 GUI 使用 vi 会容易许多。
三。开始
选一个文件
在使用 vi 编辑文件之前,需要知道如何使用 vi 在文件中移动。vi 有许多移动命令,让我们来介绍一下。作为这一部分练习,找一个不重要的文本文件,按照下列方式,将文件装入 vi 中:
$ vi myfile.txt
如果您安装的是 vim,输入“vim myfile.txt”。如果您愿意使用 gvim,输入“gvim myfile.txt”。myfile.txt 应是系统上的一个文件名。
在 vi 中
在 vi 中装入文件后,将会在屏幕看到文本文件的一部分。 恭喜 -- 您已在使用 vi! 与其它许多编辑器有所不同,vi 启动后,处于一种特殊的“命令模式”。这意味着如果您按“l”,光标将向右移动一个字符,而不是在文件当前位置插入“l”。在命令模式下,键盘上的字符是用来向 vi 发送命令,而不是插入文字字符。最基本命令类型之一是移动命令;让我们来介绍一些。
在 vi 中移动,第一部分
在命令模式下,可以使用 h、j、k 和 l 键向左、向下、向上和向右移动光标。如果您使用的是当今 vi 流行的版本,还可以使用方向键来实现移动。然而,一旦您习惯了 h、j、k 和 l 键,就很方便,因为这样您的手指就不必从主键盘行移开。尝试一下,使用 h、j、k 和 l (及方向键)让光标在文本文件中移动。试着按住 h 键直到光标来到行首。注意,当光标已在行首时,vi 不允许用 h 键折到上一行。同样,当光标在行末时,也不允许使用 l 键折到下一行。
在 vi 中移动,第二部分
vi 提供一些特殊的快捷方式让光标跳到当前行的行首或行末。您可以按 0 (零) 或^跳到一行的第一个字符,按 $ 跳到一行的最后一个字符,试试看。既然 vi 有许多方便的移动命令,因此它可做成很大“pager”(就像更多或更少命令)。将 vi 用作 pager 还能帮您快速学会所有移动命令,移动到文件结尾G或着:$。
您还可以用 ^F (control-F) 和 ^B (control-B) 一次向前或向后翻页,还可以用 ^d (control-d) 和 ^u (control-u) 一次向前或向后翻半页。目前 vi 流行版本(像 vim)允许您使用 PGUP 和 PGDOWN 来翻页。
单词移动,第一部分
vi 还允许您以单词为单位向左或向右移动。要移到下一个单词的第一个字符,请按 w。要移到下一个单词的最后一个字符,请按 e。要移到前一个单词的第一个字符,请按 b。不妨试试看。
单词间移动,第二部分
练习完单词移动后,您可能意识到这种情况:vi 将某些单词(如 foo-bar-oni)认为是 5 个单独的单词!这是因为缺省情况下,vi 按空格标点符号分隔单词。因此 foo-bar-oni 被认为是 5 个单词:“foo”、“-”、“bar”、“-”和“oni”。
有时需要这样,但有时不需要这样。可喜的是,vi 还能识别“长单词”,即 vi 只按空格或新行来分隔长单词。这意味着尽管 foo-bar-oni 被 vi 认为是 5 个单词,但被认为是 1 个长单词。
单词间移动,第三部分
要跳到前一个或后一个长单词,可以使用大写单词间移动命令。使用 W 可跳到下一个长单词的第一个字符,使用 E 跳到下一个长单词的最后一个字符,使用 B 跳到上一个长单词的第一个字符。练习一下,并比较匹配单词间移动命令和匹配长单词间移动命令的不同。
快速移动
在开始把这些命令集中到 巧表单之前,让我们再来学习几条命令。您可以使用 ( 和 ) 字符将光标移到前一个句子或后一个句子的句首。此外,可以使用 { 或 } 跳到当前段或下一段段首。测测看!
退出
我们已经学习了基本移动命令,但还有几个命令您需要知道。输入 :q 退出 vi,如果不起作用,可能是您不小心修改了文件,要让 vi 不保存任何更改退出,请输入 :q!。这些操作应在命令提示模式下进行。
在 vi 中,以“:”开始的所有命令都是“ex-mode” 命令。这是因为 vi 有一个非可视化编辑器叫做“ex”。类似地,它可以用来执行基于行的编辑操作。此外,还可用来退出 vi,如上所述。如果您在命令模式下敲 Q 键,将转换到 ex 模式。如果处于 ex 模式,您将会看到 : 提示符,此时敲 Enter 键,整屏向上滚动。要回到 vi 的命令模式,敲入 vi 并回车。
开始巧表单
已经学习了许多命令,该是将他们转录到巧表单的时候了。为了做巧表单,需要一张 A4 大小的信纸(我们将要在上面放许多信息!)。 下面是我的巧表单,我已将所有到目前为止所学的命令转录到其上。如果可能,仿效我的布局,以便能在一张纸填下所有内容。

四。各种vi命令
光标移动
让我们继续快速学习命令。在命令模式下,输入G 可以跳到特定行。要跳到文件第一行,输入 1G。注意,G 是大写。
如果要跳到特定文本样式下一次出现的地点,输入 /regexp 并回车,regexp 是指要查找的正则表达式。如果您不知道如何使用正则表达式,不用担心,输入 /foo 将会来到下一个 foo。需要注意的是, 在涉及到字符 ^、.、$ 或  时,在这些字符前加上反斜杠(),才能正常查找。例如,/foo.gif 将会匹配“foo.gif”。
要向前重复搜索,按 n 键。要向后搜索,按 N 键。同样,在您的 vi 编辑器测一测这些命令。
保存及另存为...
我们已经介绍如何使用 ex 命令 :q 从 vi 中退出。如果想保存更改,输入 :w。如果想将更改保存为另一个文件,输入 :w filename.txt 便可另存为 filename.txt。如果想保存并退出,输入 :x 或 :wq。
在 vim (及其它高级 vi 编辑器,像elvis) 的 :w 中,可以一次打开多个缓冲。要将一个文件在新窗口中打开,输入 :sp filename.txt。filename.txt 将出现在分开的新窗口中。要在窗口间切换,输入 ^w^w (control-w 两次)。如果输入 :q、:q!、:w 和 :x 命令,则只对当前激活窗口有效
简单编辑
现在,可以学习一些简单编辑命令了。之所以称之为简单,是因为这些命令仍是命令模式下使用。更复杂的编辑命令会自动地切换到插入模式,插入模式允许从键盘输入文字数据。稍后我们会学这类命令。
现在,尝试移动光标,并重复击 x 键。您将会看到 x 键可删除当前光标所在的字符。然后,将光标移到文本文件的某段中间并击 J 键(大写),您将会看到 J 命令将下一行接到当前行行末。现在,将光标移到一个字符并敲 r,然后输入新字符;您将看到原字符被替换掉,r单字符替换,R多字符替换,s多字符替换单字符,S整行替换。最后,将光标移到文件的任意行,键入 dd,您将会看到 dd 删除了当前行。u放弃上次操作。
重复及删除
敲 . 键可以重复任何编辑命令。 试验一下,您就会发现输入 dd.. 将删除 4 行,J...... 将连接 4 行。通常,vi 提供另一种便捷方式。
要删除文本,还可以联合使用 d 命令和移动命令。例如,dw 用来删除从当前位置到下一个单词词首的所有字符;d) 用来删除到下一个句首;d} 删除本段剩余部分。试验一下 d 命令和其它编辑命令直到熟练。
恢复!
已经练习了删除,下一步该学习如何撤消所作的更改。按 u 键,以前版本的 vi 只允许您撤消上一步更改。然而,新版本 vi 像 vim 允许您重复按 u 键一步步撤消对文件所作的更改。结合使用一下 d 命令和 u 命令,然后继续下一屏。
更新巧表单
该更新 巧表单了!添入所学的所有命令,您的巧表单看起来应类似于:

五。插入模式
插入模式
到目前为止,我们已经学习了在 vi 中移动光标、执行文件输入输出和执行基本编辑操作。然而,还没有介绍如何真正以自由文本格式输入。这是故意安排的,因为如果一开始就讲 vi 插入模式,这过于复杂。但是在您熟练掌握插入模式后,其复杂性(和灵活性)就成为您的资本。
在插入模式下,您可以直接向屏幕输入文本,就像在许多其它可视化编辑器一样。输入或修改完后,按 Escape 键可返回命令模式。要进入插入模式,按 i 或 a 即可。如果按 i,输入的文本将插在光标处字符之前,如果按 a 输入文本将追加再光标处字符之后。请记住,输入文本后,按 escape 键返回命令模式。
插入模式的好处
我们继续学习使用 a 和 i 命令。按 a 或 i,输入一些文本,然后按 escape 回到命令模式。按 a 或 i 后,按一下回车键,看看出现什么情况。试着使用方向键和删除键,去感觉一下插入模式是如何工作的。如果使用方向键和删除键,可以执行功能更强的编辑步骤而无需不停地切换插入模式。
插入选项
有一些其它便捷方法进入插入模式。按 A (大写),输入文本将追加到当前行末,不管光标在当前行何处。同样,I (大写)将输入文本插到当前行的行首。按 o 可在当前行下面生成一空行并插入文本,按 O (大写)在当前行上面生成一空行。要以一新行替换当前整行,按 cc。要替换光标当前所在位置到行末,请输入 c$。要替换光标当前所在位置到行首,输入 c0。
这些命令除了执行特殊操作,还使 vi 处于插入模式。输入文本后,按 escape 返回命令模式。
更改文本
当我们键入 cc、c0、c$ 时,我们已在开始使用 c (更改)命令了。cc 是一种特殊形式的更改命令,类似于 dd。c0 和 c$ 命令就是更改命令和移动命令联合使用的例子。在这种形式下,c 类似于 d,但它使 vi 处于插入模式,以便可以在删除区输入要替换的文本。尝试将一些移动命令与 c 一起使用,并在您的文件中实验一下(提示: cW、ce、c(、.)。
复合命令
在您开始使用复合命令(像 d{ 和 cw)时,vi 确实已成为功能强大的编辑器了。除了这些命令外,您还可以将移动命令与数字一起使用,例如 3w,它让光标向右跳 3 个单词。还有更多的复合移动命令示例:12b、4j。
除了(数字)(移动命令)一起使用,vi 还允许 d 和 c 与数字或移动命令一起使用。应此,d3w 将删除光标后 3 个单词,d2j 将删除当前行和下两行。测测 c 和 d 与一些移动命令一起使用的例子,然后感受一下强大并简洁的 vi 编辑功能。一旦熟悉了这些命令,您就可以以惊人的速度进行文件编辑。
更新巧表单
又该更新巧表单了。到现在为止,它应类似于:

六。高效特性
嗯,真不错...
到目前为止,我们已学习了如何移动、保存并退出、进行简单的编辑和删除、使用插入模式。按照 巧表单所列,您应该能够使用 vi 进行几乎所有的任务。
然而,vi 还有许多功能更强的命令。本章里,将要学习如何剪切、拷贝和粘贴、搜索和替换以及自动缩进功能。这些命令有助于使 vi 更有趣、更有效。
可视模式
剪切和粘贴的最佳方法是使用可视化模式,这是一种特殊模式,已经加入新版本的 vi,如 vim 和 elvis。您可以认为可视化模式是“高亮显示文本”模式。一旦文本被高亮显示,就可以进行拷贝或删除,并进行粘贴。如果您使用 gvim,可以通过按住鼠标左键,简单拖拉要选区域便可高亮显示:

此外,您还可以按 v 进入可视化模式(如果您使用的是 vi,这可能是唯一选择)。然后,用移动命令移动光标(通常用方向键)来选中一段文本。选中后,就可以进行剪切或拷贝文本。
如果要拷贝文本,按 y (代表“yank”),如果要剪切文本,按 d,然后,vi 将回到命令模式。现在,将光标移到要插入剪切的或拷贝的文本处,按 P 插到光标之后,按 p 插到光标之前。好,剪切/拷贝和粘贴就完成了!多测几个拷贝/剪切和粘贴操作,然后继续下一屏。
替换文本
要替换文本式样,应使用 ex 模式。如果想替换当前行出现的第一个式样,输入 :s/regexp/replacement/ 并按回车键,其中 regexp 是要匹配的式样,replacement 是替换字符串。要替换当前行所有匹配,输入 :s/regexp/replacement/g 并按回车。要替换文件中所有匹配式样(这通常是需要的),输入 :%s/regexp/replacement/g。如果要进行全程替换时,希望 vi 每次给出确认提示,输入 :%s/regexp/replacement/gc (代表“confirm”) 并回车。
缩进
在编辑源代码时,vi 支持自动缩进。编辑源文件(如 .c 文件)时,大多数新版本 vi(像 vim)将自动启用自动缩进模式。如果自动缩进功能启用,可以使用 ^d (control-d) 来向左缩进一级,用 ^t (control-t) 向右缩进一级。如果未自动启用自动缩进,可通过在 ex 命令模式下输入 :set autoindent 来手动启用。还可以按喜好设置 tab 大小,设置命令为 :set tabstop 命令;目前 :set tabstop=4 很流行。
最后的巧表单

好,我们已学完了 vi! 把所有高级编辑命令加入巧表单,现在,看起来如下:

七。总结
卷起巧表单
把 巧表单卷起来放在旁边,开始使用 vi 编辑文件写电子邮件。必要时参考一下巧表单;您将会发现在一星期内会记住所有命令,到时您就知道 vi 的功能有多强大!
参考资料
下面是一些参考资料,可能对您进一步学习 vi 有所帮助:

您的反馈意见
请告诉我们:此教程是否对您受益匪浅?怎样才能做的更好?同时我们希望您能提出一些其他教程主题。谢谢!
对本教程的内容,如果您有问题,请联系我们的 Linux 编辑,
developer@cn.ibm.com



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/3984/showart_13194.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP