2.6 文本编辑器
不同于Windows和Mac系统(它们有诸如Notepad、Wordpad和Textedit等文本编辑器),在当谈及文本编辑器时,Linux有很多选择。在大多数发行版本中都包含一个标准的文档编辑器,叫做gedit。树莓派内也含有这个轻量级的编辑器。树莓派内置的编辑器,Leafpad,是一款十分优秀的编辑器。同时你也可以使用nano对文本进行编辑,这是另一款预装在树莓派内的文本编辑器,具有十分直观的界面。但当你需要用树莓派进行一些比较专业的编程工作时,你可能会使用Linux两个强有力的编辑器:vi和emacs。
vi和emacs不仅是强大的文本编辑器,同样也可用作IDE(Integrated Development Enviornment,集成开发环境),因为在其中编写时关键词的颜色会发生改变(语法高亮),而且单词也会自动补全。二者都可进行外部扩展,且可定制化。例如:emacs有超过2000条内置命令,而vi因其具有众多接口及版本,可进行定制化。实际上,vi的一个版本,Vim(Vi Improved,Vi提升版),也包含在几乎每个Linux发行版中,并且之后我会对其进行进一步讨论,因为相对于vi编辑器而言,vim更像一个IDE。通过Lisp扩展,emacs可以成为用户可编程的程序,但vi的不同版本可以满足每个人的不同喜好。
然而,在这两种编辑器之间存在一些竞争。Linux和UNIX用户只对其中一种编辑器持有浓烈的热情,对另一款则报以极大的偏见。因此当他们讨论二者各自的优缺点时,会变得十分激动。作为一名有良知的作者,我会在本书中对这两款软件都进行介绍,但作为一名执着的emacs用户,我会尽量避免对vim的批判。在本书中,我不会提及讨论的程序和脚本文件是如何编写的,最多是给出结果。你甚至可以用树莓派的Leafpad进行编程,这款编辑器同样适用。
2.6.1 vim、emacs与nano
vim是一个模式编辑器。它有两种工作模式:插入模式和普通模式。插入模式中,你输入的内容会成为文档的一部分。普通模式是用来控制编辑会话的。例如,当你在普通模式下输入字母“i”,则会切换至输入模式。当你再次输入“i”时,在你光标的位置上会输入字母“i”,正如一个文档编辑器该做的那样。通过对两种工作模式的切换,你可以创建并编辑你的文档。
另一方面,emacs则更为直观。你可以通过方向键在文档中进行移动,并且你在键盘上输入的内容都会出现在光标的位置之上。特殊的命令,例如复制/粘贴等这些通过按下Ctrl键实现的操作,通常都跟在其他按键之后,一般都是“x”。例如,如果你想要保存当前的文档,你需要先按下Ctrl-x,再按下Ctrl-s,在emacs的菜单中也突出显示了C-x C-s的组合。
然而,nano编辑器比之前的两者都要直观。你可以像其他编辑器一样输入文字,而且你经常使用的命令会显示在屏幕底部。
如果你想都体验一下(在你决定一件事之前,都尝试一下是个好主意),要确保你已经安装了三个编辑器。为此,你可以输入以下命令进行安装:
以及
vim编辑器应该已经预装在树莓派中了,nano编辑器也一样。但emacs应该没有。需要注意,这将会下载大量的数据,所以安装这些程序及其所依赖的文件将会花费一定时间。所以在安装的同时,喝杯咖啡或者吃顿晚饭是个不错的选择。
1. 使用vim
我之前说过,vim是一个模式编辑器,这意味着你需要在输入模式和普通模式之间进行切换。现在让我们尝试着编写一个测试文件,将树莓派转移到桌面并输入:
之后,vim编辑器会在终端进行显示,而不是新建另一个窗口,因此如果你不适应的话,可能会有些困惑。你应该会看到一个类似于图2-4的界面。
vim编辑器是在普通模式下打开的,这意味着你不能立即编写文件。为了正常地编辑文件,你需要按下“i”键切换到输入模式。之后屏幕左下方会显示“INSERT”这个单词—无论是在输入模式或者普通模式,这都是一种很方便的提醒方式。当你完成了要输入的信息后,按下Esc键便可返回普通模式。在普通模式下,你可以通过方向键浏览文档,在输入模式下同样可以,但只有在输入模式下才可以改变或添加信息。当需要保存文件时,至少按一次Esc键确保你正处于普通模式下,输入“:w”(不带引号)并按Enter键即可退出。如果要同时保存并退出的话,输入“:x”(同样不带引号)并按下Enter键。很明显,如果你正处于输入模式,当输入这些字符时,结果只可能是将:w或:x添加至你的文档。
vim需要花一定时间去适应,而且很多人会把这两种不同模式的操作弄混。如果你倾向于这款文档编辑器,网上有很多教程教你如何充分发挥其潜力。
2. 使用emacs
emacs(至少对我而言)比vim更直观一些。尤其是当你第一次使用的时候。首先,打开一个终端并转到你测试文件的位置,例如桌面。之后输入:
emacs会查找testfile.txt,如果该文件存在,emacs会打开该文件。如果不存在的话,会创建一个新的文件。之后你会看到一个空的面板,如图2-5所示。
之后你便可以开始编写了。表2-3列出了emacs中常见一些的命令。
因此,如果你想要移动一行文字,首先将光标移至这一行的开始位置,按下Ctrl及空格键,界面左下方的状态会变为“Mark activated”。这时将光标移至行末,并按下Ctrl和“e”键。左下方的状态文字便消失了。现在你已经选中了那一行的文字,通过Ctrl+w对该行文字进行剪切,将光标移动到需要粘贴的位置,按下Ctrl+y便可进行粘贴操作。
适应这个过程会花费一些时间,所以如果你决定使用emacs的话,网上有很多教程可以指导你学习按键的一些操作。一旦学会了这些操作,使用起来会更加得心应手。但记住一点:一旦你不记得快捷键的话,记得去菜单里找,大多数命令都可在菜单中找到。
3. 使用nano
之前提及nano编辑器可能是3种编辑器中最容易使用且最容易适应的一个。在nano中编辑文件,只需在终端中输入:
之后你就会看到如图2-6所示的界面。同其他两个编辑器一样,如果输入的文件存在,nano会打开该文件,不然则会创建一个新的文件。
如图2-6所示,常用的命令都在屏幕下方罗列出来,其中上箭头(^)标志着Ctrl键。如果需要保存一个文件,输入Ctrl+X键退出,在退出之前会提示是否需要保存该文件,以及文件名的信息。一般来说,输入“Y”并按下Enter键可以保存刚刚打开或创建的文件。
2.6.2 Leafpad
我准备介绍的另一款编辑器是Leafpad编辑器,这是一款全特性的(可能是轻量级的)、具有图形化界面且预装在树莓派中的编辑器。打开树莓派桌面靠左下侧的图标,选择“Accessories”后再选择“Leafpad”即可打开该编辑器(见图2-7)。
可以看到,它同你使用过的大多数编辑器类似,如Textedit或者Notepad。如果你习惯于使用这一类编辑器,选择这款即可。我不会经常提起这款编辑器,因为它的主要缺点是必须在树莓派图形化桌面才可以使用。如果你只是远程登录树莓派,并且工作在命令行模式下,Leafpad是无法工作的。