第8章 编辑 |
||
Part III. 系统设置,管理和调整 |
||
目录
vi对于那些非常熟悉UNIX的朋友们来说已经是轻车熟路了。vi编辑器是由Sun Microsystems公司的Bill Joy开发的,是一个扩充性能很强,便于使用的,很灵巧的ASCII编辑器,不过对于一个新手来说或许有些困难。我们在这个部分中将介绍vi编辑器,这部分所介绍的内容对于那些很有经验的朋友们来说或许也会有所帮助。
在前半部分中,我们将介绍如何使用vi编辑器进行一般的编辑,保存,复制/粘贴和浏览一个文件等操作。在后半部分会提供一个例子一步一步地来帮助刚刚使用vi的朋友们迅速入门。
这章可以说是使用vi编辑器的一个初级的读本,并不是关于vi编辑器的完全指南。本章意在让第一次使用vi的朋友们能够迅速的上手,并且使用vi编辑器进行一些日常的操作,能够拥有建立文件或者是修改文件等等技能。
vi编辑器和那些其他的基于终端的软件没有什么不同,不过有一点不同,vi没有使用tab样式(你也可以称作curses)的界面,尽管有许多版本的vi使用了curses但是它们并没有提供典型的基于curses的界面的外观。vi可以在两种工作方式进行选择,命令行模式和编辑模式。这看起来似乎有些奇怪,不过你仔细考虑一下,它和基于窗口界面的编辑软件没有太大的区别。举个例子来说,如果你正在使用gedit编辑,你是用鼠标选中了一些文本,并且选择了剪切和粘贴的命令,这个整个的过程你都是在使用鼠标而并没有进行编辑(即便你可以这么做)。在vi中,我们可以在命令行模式使用dd命令简单的删除一行来达到同样的目的,在删除一行之后,你可以将光标移动到你期望的位置,然后在命令行模式输入p命令。我们可以将其称为“鼠标 vs.命令行模式”(虽然他们并不是完全的一样,但是从设计理念上来说是一样的)。
我们可以通过下面这个命令在任何基于终端的软件中启动vi:
$vifilename
许多vi的初级教程或者指南都是从浏览操作开始的,与大多数的浏览器不同,它们需要一些功能来实现浏览的操作(因此这些列是反向操作的)。根据你对于vi的使用的习惯(甚至说它是vi而不是elvis,nvi或者vim),你可以在编辑模式和命令模式进行浏览操作。
对于一个初学者来说,我认为切换到命令行模式再进行浏览操作是比较安全的。键盘上面的方向键不被终端所识别,取而代之的是下面这些键位:
k 将光标向上移动一行。
j 将光标向下移动一行。
l 将光标向右移动一个字符。
h 将光标向左翼东一个字符。
如果终端支持方向键,那么我们可以在命令行模式使用方向键来浏览缓冲区的文件。
对于上面的操作,vi还支持了一些附加的操作,vi支持跳跃到某一个指定的行的操作,通过在命令行中的冒号后面输入数字来制定期望跳跃到的目标的行号。例如,如果你希望跳到223行,那么在编辑模式中,我们需要向下面这样做:
ESC
:223
vi编辑器支持使用正则表达式语法来进行检索,即便如此,在命令行模式中使用起来还是有些许的不同。我们可以在命令行模式中输入/,然后输入想要查找的关键字就可以了,举个例子来说,假如我正在搜索foo这个单词:
/foo
这样就可以实现我的目的,再举另外的一个例子,如果我要搜索foo bar这个词组:
/foo bar
既然我们掌握了一些基本的技能,那么我们来运行一个具体的示例,来演示我们曾经介绍过的操作。首先,我们打开一个空文件,在命令行模式中输入:
# vi foo.txt
接下来,我们切换到编辑模式,然后输入两行并且在中间空一行,要记住,我们的缓冲区是空的,所以我们需要按下i键来在光标前插入文本:
This is some text
there we skipped a line
~
~
~
~
现在按下ESC键切换到命令行模式。
现在我们已经进入命令行模式了,接下来我们要保存文件。首先,按下:键,光标会出现在屏幕的左下角。在:提示符后面输入w并且输入回车。文件便会被保存的。在这个操作之后,会有一个消息提示,一些vi编辑器还会告诉你文件的名字,文件的行数,文件的大小等等信息。
下面浏览这个文件,光标会处在保存文件的时候光标所在的位置。 尝试使用方向键移动。如果方向键不能起作用(或者你对新的事物很好奇),那么请尝试使用hjkl键。
最后,我们再来做两件事情,首先先将光标移动到第一行,然后在移动到第一个字母。在这一行中,尝试一些其他的导航命令,尝试着多次按下下面的几个键:
$
0
$
0
光标会跳到这行的行尾,再从行尾跳到行首,然后再跳到行尾。
接下来,我们使用/来搜索一个单词,输入下面的命令:
/we
光标会跳到we这个词第一次出现的位置。
现在我们来看一下如何保存文件和保存文件并且退出:
:wq
在NetBSD下提供的标准的编辑器,不用我们说,就是vi,这个让人爱恨交加的编辑器。如果你不使用vi,那么请跳过这一章节的介绍,否则请你在安装其他版本的vi前阅读它。NetBSD提供的vi(nvi)是由UCB的Keith Bostic开发的,这是一个免费的可以随意发布的版本,并且有很多值得学习的功能,并且这些功能都与原始的vi版本相兼容。Nvi现在已经成为了BSD下面的标准版本的vi。
这些很有意思的扩充功能是:
l 扩充正则表达式(egrep 样式), 这个功能是通过extended这个选项来实现的。
l Tag 堆栈。
l 可以无限次的undo(按u键实现undo功能;按下.键可以继续undo操作)。
l 增量式搜索,通过searchincr选项来打开这个功能。
l 从左到右滚动行,通过使用leftright选项打开;滚动的行数通过sidescroll选项来定义。
l 编辑历史命令, 通过cedit选项打开这个功能。
l 自动完成文件名,通过filec选项开启这个功能。
l 背景屏幕和显示。
l 分隔屏幕编辑。
.exrc文件的扩展下面的一些例子是在.exrc文件中设置的一些扩展选项。
set showmode ruler
set filec=^[
set cedit=^[
第一行开启了标尺模式,在状态行会显示光标的位置(行号,列号)和当前的模式(命令,插入,追加)。第二行(^[指的是ESC键)开启了使用ESC键来补全文件名的功能。第三行开启了编辑命令历史(依然是使用ESC键)。举个例子来说,按下:键然后按下ESC键会打开一个窗口列出以前用到过的历史命令,并且可以进行编辑和执行(在相应命令上按下回车键就可以运行它)。
源码的tar包(src.tgz)包含了许多的有关于(n)vi和ex的有用的文档,在/usr/src/usr.bin/vi/docs目录中。例如:
l Edit: A tutorial
l Ex Reference Manual
l Vi man page
l An Introduction to Display Editing with Vi by William Joy and Mark Horton
l Ex/Vi Reference Manual by Keith Bostic
l Vi Command & Function Reference
l Vi tutorial (beginner and advanced)
如果你从来没有使用过vi,那么“Vi tutorial” 是一个非常好的起点。它的目的是让用户可以通过vi来阅读,然后它逐渐的为读者介绍vi的全部的命令,可以边阅读边测试。由William Joy和 Mark Horton 编写的An Introduction to Display Editing with Vi 也是一个非常好的起点。
如果你想更加深入地了解vi和nvi的一些扩展的功能,你可以阅读Keith Bostic编写的Ex/Vi Reference Manual,这里面介绍了有关编辑器的全部命令和选项。
这里所介绍的并不是直接与NetBSD相关,但是十分有用,例如,检查内核的配置。
当你在一个目录树中或者子目录中检查一套源码,你可以通过使用tag特性来简化你的操作。具体方法如下:
使用cd 进入源码的主目录。
$ cd /path
输入下面的命令:
$ find . -name "*.[ch]" > filelist
$ cat filelist | xargs ctags
在.exrc文件中加入下面这行:
set tags=/path/tags
(将path替换成正确的目录。)
第III部分. 系统设置,管理与调整 |
第9章. X |