2.3 Linux中的代码编辑器vim
在Linux中开发C语言应用代码,首先需要编写源代码,此时需要一个代码编辑器,在Linux中最常见的代码编辑器包括vimm、emacs、gedit等。
注意:代码编辑器的实质就是一个文本编辑器,只不过增加了一些代码编辑的辅助功能,例如关键字高亮,补齐等。
本书采用vimm作为代码编辑器,它是vim的功能加强升级版,是UNIX/Linux下最基本的文本编辑器,工作在字符模式下,由于不需要图形界面,它成为效率很高的文本编辑器。尽管在Linux上也有很多图形界面的编辑器可用,但vim在系统和服务器管理应用中的功能是那些图形编辑器所无法比拟的。
vim是“Vimsual Interface”的简称,它在Linux上的地位就像Edit程序在DOS上一样。它可以执行输入、输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑器所没有的。
2.3.1 启动与退出vim
在Linux终端命令提示符下输入vim(或vim 文件名),即可启动vim编辑器。
vimm filename
或者
vimm
按Enter键执行该命令,系统便会自动打开文件名为filename参数指定的文件的vimm编辑界面,其初始界面如图2.2所示,它也可以通过在X Windows下的相应操作来打开一个图形化的操作界面。
当使用“vimm文件名”形式的命令时,若进行编辑的是当前工作目录下已存在的文件,启动vimm后便可看到该文件中的内容;若是当前目录下不存在的文件,则系统首先创建该文件,再使用vimm进行编辑。
要退出vimm,必须先按Esc键回到命令行模式,然后键入“:”,此时光标会停留在最下面一行(底行模式),再键入“q”,最后按下Enter键即可退出。
vimm拥有三种工作模式:命令行模式(command mode)、插入模式(input mode)与底行模式(last line mode)。三种模式下的功能可描述如下。
命令行模式:也叫做“普通模式”,它是启动vim编辑器后的初始模式。在该模式下,主要是使用隐式命令(命令不显示)来实现光标的移动、复制、粘贴、删除等操作。但是在该模式下,编辑器并不接受用户从键盘输入的任何字符来作为文档的编辑内容。
插入模式:在该模式下,用户输入的任何字符都被认为是编辑到某一个文件的内容,并直接显示在vim的文本编辑区。
底行模式:在该模式下,用户输入的任何字符都会在vim的最下面一行显示,按Enter键后便会执行该命令。
使用vim编辑器,首先必须能够熟练掌握各种工作模式下的功能,以及各种工作模式间的切换,图2.3所示为vim三种工作模式间的切换方法。
从图2.2中可以看到,命令行模式是vim编辑器的初始模式,从该模式下可以实现到任何模式的切换。而插入模式和底行模式之间不能相互切换,因为在插入模式下,任何输入的字符都被认为是编辑到某一个文件的内容,而不是命令;而在底行模式下,任何输入的字符都被看作是底行命令(尽管可能是不合法的),二者都必须先通过命令行模式才能进入对方,即需要先按Esc键回到初始模式。
下面向读者介绍各种工作模式下的常用命令。
2.3.2 vim的命令行模式
命令行模式是进入vim后的初始模式,在该模式下主要是使用方向键来移动光标的位置,并通过相应的命令来进行文字的编辑。在插入模式下按Esc键,或是在底行模式下按Esc键,或是在底行模式下执行了错误的命令,vim都会自动回到命令行模式。本节介绍命令行模式中常用的操作命令,由于这些命令比较多,在此仅做简单介绍,用户在使用时也可以查阅帮助文档。
1.移动光标
在命令行模式下,一般通过使用上、下、左、右4个方向键来移动光标的位置。但是在有些情况下,例如使用telnet远程登录时,方向键就不能使用,必须用命令行模式下的光标移动命令。这些命令及作用如表2.3所示。
2.复制和粘贴
复制和粘贴是在编辑文档时最常用的操作之一,可以大大节约用户重复输入的时间。vim的命令行模式下常用的复制和粘贴命令如表2.4所示。
3.删除
vim编辑器中的删除操作可以是一次删除一个字符,也可以是一次删除多个字符,或者整行字符,vim命令行模式常用的删除命令如表2.5所示。
- 其他命令
命令行模式下其他常用的命令包括字符替换、撤销操作、符号匹配等命令,这些也是在使用vim时经常遇到的命令,其操作说明如表2.6所示。
2.3.3 vim的插入模式
插入模式是vim编辑器最简单的模式,因为在此模式下没有那些繁琐的命令,用户从键盘输入的任何有效字符都被看作是写进当前正在编辑的文件中的内容,并显示在vim的文本编辑区。
也就是说,只有在插入模式下,才可以进行文字的输入操作。表2.7所示为从命令行模式切换至插入模式的几个常用命令。当在插入模式下时,可以按Esc键回到命令行模式。
2.3.4 vim的底行模式
vim的底行模式也叫“最后行模式”,是指可以在界面最底部的一行输入控制操作命令,主要用来进行一些文字编辑的辅助功能,例如字串搜寻、替代、保存文件以及退出vim等。不同于命令行模式,底行模式下输入的命令都会在最底部的一行中显示,按下Enter键vim便会执行底行的命令了。
在命令行模式下输入冒号“:”,或者是使用“?”和“/”键,就可以进入底行模式了。比起命令行模式的诸多操作命令,底行模式的操作命令就少多了,如表2.8所示。
2.3.5 vim的应用实例
这是一个使用vim编写【例2.1】中应用代码的实例,其详细操作步骤如下。
(1)使用下列命令打开或者创造一个名为Examhello.c的文件,进入如图2.4所示的编辑状态。
alloeat@Ubuntu:~/chapter2Exam$ vim Examhello.c
(3)按Esc键结束编辑,然后使用“;”快捷键进入底行模式,输入“wq”保存文件并且退出。
此时完成了文件的编辑,即可以调用gcc对文件进行编译。
注意:在gcc编译过程中,其错误会定义到具体的行号,为了方便查找错误对应的行,可以在底行模式使用“set nu”命令在每一行前添加行号,如图2.6所示。