2.2 项目解决方案与实施
任务1 Emacs的基本运用
Emacs入门其实很简单,因为不像Vim那样,需要切换模式。Emacs打开一个文件后直接就能进行写入、删除等操作。
1)快捷键击键约定
Emacs最著名的就是拥有功能强大的快捷键,要想看懂网上和Emacs自带文档里的快捷键,必须了解Emacs的击键约定。
Windows下的复制功能的快捷键是“Ctrl”+“c”。那么同样的快捷键用Emacs的约定来表示就是“C”-“c”。那么“Alt”+“F4”是不是要写成“A”-“F4”呢?不是的,应该写成“M”-“F4”。这个“M”代表的是“Meta”键,在现在的键盘中,“Meta”键对应的就是“Alt”键。
另外还有现在的“Win”键,就是上面画着Windows徽标的那个按键,一般出现在“Ctrl”和“Alt”之间。这个键在“Linux”系统中被称为“Super”键,其前缀就是一个小写的字母“s”。
有些键,还需要按下“Shift”,比如“C”-“@”,因为“@”需要“Shift”+“2”才能按出来,所以“C”-“@”的实际按键顺序应该是按住“Ctrl”,再按住“Shift”,再按一下数字“2”之后马上再全部放开(“Ctrl”和“Shift”顺序可以调换)。
Emacs打开文件的快捷键是“C”-“x”“C”-“f”,这里完整的按键顺序是按住“Ctrl”,再按一下“x”之后马上全部放开,之后再按住“Ctrl”,继续按一下“f”后马上全部放开。如果几个连续的快捷键的前缀都一样,比如都是“Ctrl”,我们可以一直按住“Ctrl”不放,之后按照顺序分别按下“x”和“f”,最后再全部放开。
2)常用快捷键
Emacs以其繁多的快捷键闻名,最常用的如表2-1所示。
表2-1 常用Emacs快捷键
虽然移动光标有其自己的快捷键,但是仍旧可以使用键盘上的方向键和“PageUp”、“PageDown”来代替Emacs自己的快捷键。
3)简单操作实例
下面通过编辑一个配置文件来实际操练一下Emacs的编辑功能。在CentOS系统中,如果一个普通用户想要操作需要root权限的任务,需要在命令前面加上sudo来暂时提升权限,可是在一个刚安装好的系统中,普通用户无法使用此方法,原因是该用户没有被加入/etc/sudoers这个配置文件。下面演示如何使用Emacs添加普通用户到该文件以达到能使用su-do提权的目的。使用Emacs打开该文件:
# emacs/etc/sudoers
可以看到,Emacs成功打开了该文件,但是存在两个窗口如图2-1所示。
图2-1 Emacs打开文件
此时光标在上面那个窗口闪动,说明我们默认编辑的是这个文件。要想关闭下面那个窗格,请按快捷键“C”-“x”“1”。
操作要领:按住Ctrl再按下x后全部放开,再按一下数字1。
如图2-1所示。成功按下快捷键后,最下面一行(叫作mini buff)处会出现刚才输入的快捷键,如图2-2所示。
图2-2 mini buff显示快捷键
图2-2上方像状态栏处从左到右分别显示了该文件的编辑状态:是否只读(两个%说明是只读文件,Linux下即为无w权限),“sudoers”表示这个当前件名,右边的“Top”说明光标在第一页,“L1”说明光标在第一行。
下面来显示打开文件的行数,不然很难找到需要修改的地方。键入:
M-x global-linum-mode
这行代表的意思是,先按“M”-“x”,然后会在mini buff上出现闪动的光标,提示输入“global-linum-mode”,输入完成后就可以按回车键确定了。
可以使用“Tab”键来补全:输入“glo”这3个字母,按一下“Tab”键,会自动补全为“global-”,之后再输入一个字母“l”,按下“Tab”,就可以全部补全了。看似这么长的命令,只需要打4个字母即可。
其实,Emacs的每一个快捷键都对应于一个类似这样的命令,只是由于命令实在太多,所以才需要手动输入这些命令。
下面,来介绍两种编辑方法,分别对应于使用Windows下的操作习惯和Emacs下的操作习惯,来让大家感受下编辑效率的差异。
Windows用户的操作:使用PageDown或者一直按着下方向键到98行:
98root ALL=(ALL) ALL
然后把光标下移一行,在这个空行里输入和上一行一样的文字(把root替换成实际的用户名),最后按“C”-“x”“C”-“s”保存。
可是,输入的时候,什么反应都没有,如图2-3所示,只是在mini buff出现了:缓冲区是只读状态。这个时候需要切换回到终端修改一下文件的权限:
图2-3 mini buff显示只读属性
# chmod u+w/etc/sudoers
u是user的意思,代表当前用户;+w是增加write,即写的权限。
按“C”-“x”“C”-“c”退出Emacs,在终端里修改权限后重新打开Emacs操作一遍,输入完了之后按“C”-“x”“C”-“s”保存。
Emacs用户的操作:
C-u 98 C-n
即按下“C”-“u”后输入“98”,就是行数,然后继续按“C”-“n”,意思是向下移动。
如果只按“C”-“n”,则默认向下移动一行。按“C”-“u”并输入数字可以用来指定下移的行数。
此时光标还是在行首,如果不在,按“C”-“a”移动光标到行首。按下“C”-“k”来剪切。
同样提示缓冲区为只读,这时按“C”-“x”“C”-“q”来解除只读,如图2-4所示。解除完只读后,按下“C”-“k”剪切一行内容,再按一次“C”-“k”将换行符也剪切掉,这样下次粘贴的时候就能自动将光标移动到下一行了。
图2-4 mini buff显示解除只读属性
按一次“C”-“y”粘贴之前剪切的内容,再按一次“C”-“y”,再次将那一行内容粘贴到了下一行,这个时候出现了:
98 root ALL=(ALL) ALL 99 root ALL=(ALL) ALL
而光标出现在第100行的行首,我们按“C”-“p”到上一行,按“M”-“d”一次性删除“root”这个词,输入需要添加的用户名,最后按“C”-“x”“C”-“s”保存。一切都能手不离键盘来完成,操作效率和Windows下的比起来优势十分明显。
4)内置的教程
不管系统是在图形界面还是字符界面,Emacs打开后,默认的界面上就有一个教程,而且光标默认就是停留在那上面,只要再按一下回车键就能看到,如图2-5所示。
图2-5 Emacs自带教程
教程会一步一步教导用户如何使用快捷键及Emacs的基本操作。
5)简单配置Emacs
前面我们用到了显示行号这一功能,但我们不想每次打开Emacs都要执行那么长的命令,尽管补全功能可以少打很多字,还是很麻烦。这里我们通过修改Emacs的配置文件来达到定制Emacs的目的。
Emacs的配置文件在每个用户的家目录下:~/.emacs。Emacs启动后默认会去读取.emacs这个文件的内容,我们就可以将配置写在里面。比如增加行数的显示,我们可以添加以下内容至.emacs文件:
(global-linum-mode 1)
后面的数字“1”和“0”可以切换该模式的开启和关闭。
然后保存该配置文件。为了看到结果,可以选择重启Emacs,或者执行:“M”-“x”,或者将光标移动到句尾(使用“C”-“e”),然后执行“C”-“x”“C”-“e”。可以看到,行数出现了。以后重新启动的Emacs都将加上行数。
如果需要其他功能,可以去网上搜索,一般都会有人贴出代码,只要将那些代码同样添加进.emacs这个文件就可以了,比如定制自己喜欢的背景颜色、前景颜色,还有字体样式和大小。