第2轴,关于平时热衷于如何捣鼓电脑软件:喜好或熟练于(为己或为人)安装或重装 Microsoft Windows操作系统的分值最高; 喜好或熟练于配置 Microsoft Windows上各类GUI软件 注1 (或含前一项)的分值次高;喜好或熟练于在Console/Shell下配置UNIX-like 注2 上的各类软件(或含前一项)的分值非常接近零;喜好或熟练于自己开发软件(编写小程序或RAD开发的除外)(或含前一项)的分值为零;喜好或熟练于对软件进行逆向工程(或含前项)的分值为负数且其绝对值与工程难度正相关;若不知软件为何物,则完全不适合本课程的学习。
脚注
(1)GUI,Graphical User Interface,用户图形界面,就是由诸如窗口、按钮、菜单、文本框、图标等等视觉与鼠标操作要素构成的界面的。与GUI相对的是TUI,Text User Interface(文本类型用户界面),也叫CLI,Command Line Interface(命令行界面),一般说来,就是用户通过它给出的提示符(Prompt)向系统键入一系列文字命令,且系统通常也通过该界面给出反馈信息。而负责提供提示符与解释用户键入命令的意义的机构,称为Shell(壳)。
(2)在本课程中,UNIX-like指一切类似于UNIX的操作系统,或它们的统称。这个词也可以被写作:*NIX或UN*X。作为统称,它包含但不限于以下操作系统:各类BSD、MINIX、GNU/Linux、GNU Hurd、GNU/OpenSolaris、 System V、RTOS、Syllable、AIX UNIX®、HP-UX UNIX®、IRIX UNIX®、NeXTSTEP、Mac OS X、iOS、SunOS、Solaris UNIX®、SCO UNIX/UnixWare/OpenServer、Xenix、VxWorks等。(※ UNIX®是The Open Group的商标。)
※ GNU的发音为[gnu:],这个词是“GNU is NOT UNIX”的缩写。Linux的发音为[ˈlɪnəks]。
当你阅览到上面这几行中出现的“Vim”这个单词的时候,请注意它的书写:在指代该软件的名称的时候,它的第一个字母必须大写。此外,一个特别容易被忽略或胡乱猜测的问题是:“Vim”一词的发音,显然你无法直观地从文字书写的角度知晓它的发音,所以,必须由我来告诉你:它的发音是[vim],而不是久经讹传的[ˈvi: ˈai ˈem]。(※ Vim所属的许可协议兼容于 GNU General Public License。)
Vim 是一个软件,它的基本用途是以“文本编辑”这个功能呈现的,也就是说,在一个不太辽阔的视角下,它是一款文本编辑器。从文本编辑器这个层面上说,它类似于电脑屌丝们在Microsoft Windows上使用的前者所自带的“记事本(Notepad)” —— 如果你在论坛上发帖的时候,不想自己辛苦键入的文字,被网页自动刷新掉或因为提交失败而彻底丢失的话,通常你就会先在“记事本”里输入和编辑文字甚至将它们保存好,是不是这样?没错,就是那个“记事本”。
现在,当你们完成了这节课的目标 —— Vim Fundamentals之后,在UNIX系统上做出这样一张Boot-able磁盘,就是轻而易举的事情了。—— 最多只有512B的工作量!512B,就是半个KB,在屌丝们的“A片”当中,AV的主角们恐怕连一下动作也做不到。这算又是一个振奋人心的好消息吧,希望大家能够坚持学习!
在我们刚刚安装好的这个FreeBSD中,系统默认的Shell程序是csh的改进版本 —— csh全称是C Shell,它是由美国计算机科学家William Nelson Joy开发的。“William”这个名字在英语国家中一般会被昵称作“Bill”(比如有William Jefferson Clinton昵称为Bill Clinton,William Henry Gates 三世昵称为Bill Gates),所以,对于这位科学家,我们一般称呼他作Bill Joy,他是一位世界顶级大黑客。
上图:Bill Joy。
如何察看当前所使用的Shell是哪个版本的呢?可以使用命令:
1
echo$SHELL
它将反馈:
1
/bin/csh
实际上,目前FreeBSD上使用的C Shell是前者的一个改进版本,即Tenex C shell,简称tcsh。我们使用命令:
当Shell发现输入的命令中含有“$”这个特殊字符,它会将紧跟在这个符号后面一个单词视为a Name of Variable(变量的名称) ,这里所谓的“一个单词”,就是由合法(规定范围内)的字符组成的且以空格(或其他特殊字符)与其他“单词”相隔的字符串。正如在编程的环境中,我们可以用一个Identifier(标识符)来作为变量的名称(并利用这个标识符来指代变量的实际的值)一样,在这里,我们也可以用“一个单词”来作为变量的名称,但要让Shell根据这个名称引出它所指代的实际的值的时候,必须在这个名称前顶上“$”。
“10G”这个命令代表了“Goto the line #10”的意思,你或许会想,为什么不是“G10”呢?再仔细想想,如果按照这样的思路:当你输入了“G10”之后,只有你按下[Enter]键vi才知道你的意图是“G10”,如果没有按下[Enter]键而是继续输入一个“0”,那么再按下[Enter]键vi才知道你的意图是“G100”,也就是说,再你按下[Enter]键之前,vi无法确定你的意图是什么。但vi的设计哲学是:最大限度地节省你的键入量,包括削减一切可以削减的[Enter]键入,这样,就必须要求有一个键入的字符触发了vi立即完整地领会你的意图 —— 命令中字符“G”的键入就是如此,它一定是命令的结尾(在字符G之后不应该有任何参数附赘)。所以,“Goto(转到……行)”的命令格式必然是: