Nano基础指南
内容简介:这篇指南会使用一个构建“知识清单”的方式,逐步加速教会你如何使用 vi。这是给新人准备的第一份 vi 指南。1. 起点
介绍
这篇指南要向你介绍 vi ——一个强大的可视化编辑器——的使用方法。通过一种特殊的循序渐进的知识清单模式,这篇指南让你在短时间内迅速成为 vi 高手。在这篇指南里面,你将学到如何浏览、编辑文字、使用“插入”模式、复制粘贴以及使用一些重要的 vi 插件(譬如:可视化插件)和多窗口编辑。
如果你不知道,或者对 vi 感到不爽,那么赶快利用这篇指南,让这个 Linux/UNIX 平台最流行、最强大的可视化浏览器为你的工作加油提速吧!
关于这篇指南
学习 vi 的最大难点在于——vi 的繁多的指令。为了有效利用 vi,你需要记住其中不少的一些。这可能需要不少时间;而偏偏这篇指南的目的之一就是在于利用尽可能少的时间。所以,从一开始,我们将面对一个挑战——怎么能让你在短期内记住大量的命令。
为了在这篇指南的过程中解决这个难题,我们会逐渐一点一点积累起一张关于 vi 的知识清单。这张清单会包含所有重要的 vi 命令。当你完成了这份指南,当你忘记某个 vi 命令的时候,你可以很轻松得从这份清单中查找特定的命令。逐渐地,随着你记住这些命令,你会越来越少依赖这份清单。通过使用“知识清单”技术,你可以前所未有的速度学会使用 vi !
学习过程
在这份指南中,我会使用一些帮助你学习的办法。首先,如同你所期待的,我会介绍一条命令是如何工作的。然后,我会请你在 vi 中练习使用这条命令,之后把这条命令记录在知识清单中,以备日后参考。一一执行这些步骤对于你快速学习 vi 有莫大的帮助。试验并且记录这些命令会帮助你记住它们。
vim 简介
Vi 有很多不同版本,而我要向你介绍的是一个叫做 vim 的版本。vim 非常流行;它有相当多的扩展模块使得 vi 更棒(当我展示一个 vim 独有的命令的时候,我会特别指出)。如果你需要安装 vim,你可以从 下载它。除了一个增强版本的命令行 vi,vim 还有一个叫做 gvim 的、漂亮的、基于 GTK+ 的 GUI 版本。下面是一张我系统中 gvim 的截图。
图1.1: VIM 屏幕截图
如果你是一个 vim 新手,试着在你的系统上运行 gvim。从 GUI 使用可以让新手觉得轻松一点。
2. 第一步
打开一个文件
在使用 vi 编辑文件之前,你需要知道如何使用 vi 浏览一个文件。vi 有很多移动命令,而我们会接触它们中的不少。在指南的这部分中,找一个无关紧要的文本文件,然后用 vi 打开它:
代码 2.1: 用 vi 打开文件$ vi myfile.txt
如果你安装了 vim,输入 vim myfile.txt。如果你决定使用 gvim,输入 gvim myfile.txt。myfile.txt 是你系统中的一个文件名。
在 vi 中
启动 vi 之后,你应该看到文件的一部分显示在你的显示屏上。恭喜——你进入了 vi!不像其它很多编辑器,当 vi 启动的时候会进入一个特别的命令模式。这意味着如果你键盘上的 l,vi 不会在当前光标位置输入一个 l,而会将光标向右移动一位。在命令模式,从键盘输入的字符会作为命令传递给 vi,而不是向文件中插入文字。移动命令是所有命令中最基本的一类,让我们来看一看。
3. 来回移动
在 vi 中移动,第一部分
在命令模式中,你可以用 h、j、k 和 l 键将光标分别向左、下、上和右侧移动。如果你使用的是一个现代版本的 vi,你也可以用方向键达到相同的目的。h、j、k 和 l 键很有用:当你习惯了它们的时候,你可以不必将你的手从键盘基本键位移开就可以在文件中移动。试着使用 h,j,k 和 l 键(以及方向键)在文件中移动光标。试着用 h 移动到行首。注意 vi 不允许你用 h 键从行首自动退回到上一行。相似的,你不能用 l 从行末自动转到下一行。
在 vi 中移动,第二部分
vi 为跳至行首、尾提供了特殊的快捷键。你可以按0(零)跳到行首,$ 跳到行末。试试看。因为 vi 有这么多的移动命令,我们可以把它作为一个好的“分页”程序(就像 more 或者 less 命令)。把 vi 作为一个分页程序也可以帮助你飞快地学习这些移动命令。
你也可以用 <CTR>F 和 <CTR>B 一次向前或者向后移动一整页。新的一些版本(譬如 vim)也支持用 PGUP 和 PGDOWN 键达到同样的目的。
按单词移动,第一部分
vi 也允许你按照单词长度来左右移动。要移动到下一个单词的第一个字母,按 w 键。到下一个单词的最后一个字母,按 e 键。移动到前一个单词的第一个字母,按 b 键。试试。
按单词移动,第二部分
试过这些移动命令之后,你可能注意到,vi 把 foo-bar-oni 之类的单词作为五个单独的单词!vi 默认以空格或者标点符号作为单词分界,所以 foo-bar-oni 被分解成五个单词:foo、-、bar、- 和 oni.。
有的时候这是你所期望的,有时候不是。幸运的是,vi 能够理解“长单词”的概念。vi 仅仅以空格或换行作为长单词的分界。这意味着虽然 foo-bar-oni 会被当作五个 vi 单词,它也可以作为一个长单词处理。
按单词移动,第三部分
你可以使用大写的单词移动命令在长单词之间跳跃移动。W 跳到下一个长单词的第一个字母,E 跳到最后一个字母,B 移动到前一个单词的第一个字母。试试看,和普通单词范围的移动进行比较,直到你明白它们的区别。
更大范围的移动
在我们把所学过的东西归纳到清单里面之前还有几个命令要看看。你可以用 ( 和 ) 移动到前后两句的开始。此外,用 { 或 } 可以跳到当前或者下一个段落的开头。试试它们。
4. 退出
我们已经说了基本的移动命令,但是还有一些命令是你需要知道的。输入 :q 可以退出 vi。如果这样不能退出,可能是因为你修改过这个文件。要让 vi 退出而不保存修改,输入 :q!。这样你应该退出到了命令提示符。
在 vi 中,以 : 开头的命令被称为 ex 模式 的命令。这是因为 vi 内置了一个叫做 ex 的非可视化的编辑器。我们可以像使用 sed 一样地使用 ex 进行按行编辑文本。不仅如此,它也可以用来退出 vi,就像我们刚刚看见的。当你在命令模式按下 Q 键,就可以进入 ex 模式。这时,你会看见一个提示符 :;如果你按下回车键,整个屏幕会向上滚动。要回到熟悉的 vi 模式,只要输入 vi 然后回车就可以了。
5. 知识清单
清单的开头
我们已经提到了很多命令;现在到了把它们加入清单的时候了。你可以用一张 A4 或者 US 信纸来制作这份清单,因为我们会在里面写很多内容!这是一份我的清单,里面包含了上面提到的所有命令。尽可能参考我的格式,这样我们可以把所有东西都集中在一张纸上。
图5.1: 知识清单
繁复的 vi (Miscellaneous vi)
让我们继续我们快速的命令行学习过程。在命令模式你可以用 G 跳至特定行。要跳到文件的第一行,输入 1G。注意 G 是大写字母。
如果你要搜索某个特定字符串模式在文件中的位置,输入 /<regexp> 然后回车。用你要搜索的模式替换 <regexp>。如果你不会使用正则表达式,不用烦恼——直接输入 /foo 会移动到下一个 foo 出现的地方。唯一需要注意的是,如果你需要寻找字面上的 ^、.、$ 或者 ,你需要在它们之前加上一个反斜线()。譬如,/foo.gif 会寻找“foo.gif”的下一个出现位置。
要继续向下寻找,按 n。要继续向上寻找,输入 N。故且谎??媚阕约旱?vi 编辑器试验这些命令。你也可以用 // 来重复上一次的搜索。
6. 保存和编辑
“保存”和“另存为...”
我们提到过,你可以用 ex 命令 :q 退出 vi。如果你要保存你做的改变,输入 :w。如果你要保存你的更改后的文本到另外一个文件,输入 :w filename.txt 会把文本保存为 filename.txt。如果你想保存后退出,输入 :x 或者 :wq。
在 vim (以及其它一些高级的编辑器,例如 elvis):w,你可以同时打开几个缓存。要在一个新窗口中打开文件,输入 :sp filename.txt。 filename.txt 会在一个分割开的新窗口中打开以供编辑。要在窗口之间切换,输入 <CTR>w<CTR>w(按两次 control-w)。:q、:q!、:w 和 :x 中的任一个都只作用于当前活动的窗口。
简单的编辑
现在是我们学习一些简单编辑命令的时候了。我们将要提到的命令被称为简单是因为这些命令只需要你呆在命令模式。更复杂的编辑命令会让你自动进入插入模式——一个允许你从键盘输入文本的模式。我们会在一会儿提到这些内容。
现在,试着移过一些字符然后反复按 x 键。你会看见 x 会删除当前光标位置的字符。现在移动到