
2.2 Edit编辑模式与Shell命令行模式的切换
2.2.1 Edit编辑模式与Shell命令行模式的切换方式
IDLE有两种工作模式,分别是:
· Edit编辑模式——用于编写程序。
· Shell命令行模式——用于逐条执行语句。
IDLE的Edit和Shell模式可以相互切换,它们之间相互切换的方式如下。
1.从Shell模式切换至Edit模式
如果首先打开的是Shell模式(Shell窗口),那么另一种模式就是Edit模式。Shell模式也被称为“终端模式”。Shell模式的主界面如图2-12所示。

图2-12 Shell模式的主界面
如果当前模式是Shell模式,则可通过菜单命令【File】→【New File】进入Edit模式,如图2-13所示。此时的主界面如图2-14所示。

图2-13 通过菜单命令【File】→【New File】进入Edit模式

图2-14 Edit模式的主界面
进入Edit模式后,就可以编写Python程序了。该模式包含了文本编辑常用的基本功能,主要包括选择、复制、粘贴、高亮、自动缩进、括号“()”的左右匹配提示等。
2.从Edit模式切换至Shell模式
在Edit模式下的【Window】菜单中,有一个命令为【Python 3.6.4 Shell】(注:不同的版本,该命令的信息会相应地有所不同),如图2-15所示。

图2-15 Edit模式下的【Window】菜单
单击【Python 3.6.4 Shell】,即可从Edit模式切换至Shell模式。同理,在Shell模式下的【Window】菜单中,同样会出现正在编辑的程序选项。如果该程序没有被保存过,那么文件名即图中的【Untitled】;如果该程序已被保存过,则文件名为已使用的文件名。单击该文件名也可以从Shell模式切换至Edit模式。
2.2.2 IDLE的文本编辑功能
IDLE具有比较完备的文本编辑功能,例如,代码自动缩进、语法高亮显示、单词自动补齐及命令历史等。借助这些功能,开发者能够比较高效地编写程序。
因为IDLE具有Edit和Shell两种工作模式,所以以下所述的特性在这两种模式下均适用,它们可用于文字或代码的编辑。
在Shell模式下【Edit】菜单的具体内容如图2-16所示。

图2-16 Shell模式下的【Edit】菜单
而在Edit模式下【Edit】菜单的具体内容如图2-17所示。

图2-17 Edit模式下的【Edit】菜单
从上述两图的对比中可以看出,在两种模式下【Edit】菜单的功能完全相同。以下对各项功能简单地加以分析。
· Undo:撤销上一次的修改。
· Redo:重复上一次的修改。
· Cut:将所选文本剪切至剪贴板。
· Copy:将所选文本复制到剪贴板。
· Paste:将剪贴板上的文本粘贴到光标所在位置。
· Find:在窗口中查找单词。
· Find in Files:在指定的文件中查找单词。
· Replace:替换单词。
· Go to Line:将光标定位到指定行首。
· Show Completions:关键词自动补齐。
· Expand Word:单词自动补齐(只针对自定义的单词)。
在上列项目中,后两项的功能非常实用。遗憾的是,在默认的快捷键集中,【Show Completions】命令的快捷键【Ctrl+Space】往往与Windows操作系统的输入法切换的快捷键发生冲突,因此,强烈建议自行设定该快捷键。幸运的是,无论是在Edit模式下,还是在Shell模式下,关键词自动补齐功能还有更好的快捷方式,那就是【Tab】键。
1.关键词自动补齐
关键词自动补齐功能示例如图2-18所示。

图2-18 关键词自动补齐功能示例
在图2-18所示的状态下,按下【Tab】键,则出现图2-19所示的情况。

图2-19 关键词自动补齐选择
选中要补齐的单词后,再按两次【Tab】键,“pr”就被自动补齐为“print”了。这个功能是不是太实用了?是的,这个功能对于程序开发者而言,简直是一个妙不可言的“神器”!当然,除按两次【Tab】键外,还可以通过上下移动光标选择需要的单词,直接按回车键得到完整的单词。
这里要特别提醒的是,此法只适用于Python的关键字,不适用于自定义单词的补齐。
2.代码自动缩进
实际上,很少有语言能像Python如此重视缩进了。在其他语言中,如C语言,缩进对于代码的设计而言,是“有了更好”,而不是“没有不行”,它充其量是个人书写代码的风格问题。但是,对于Python语言而言,缩进是语法的强制性要求和刚性规定。在Python程序里,语句块(复合语句)不是用大括号“{}”之类的符号表示的,而是通过缩进加以表示的。这样做的好处就是减少了程序员的自由度,有利于统一风格,使得人们在阅读代码时感觉更加轻松。为此,IDLE提供了代码自动缩进功能,它能将光标自动定位到下一行的指定空白处。当输入与控制结构对应的关键字,例如,输入关键字if及其条件表达式,或者输入关键字def和函数名,并按下回车键后,IDLE就会启动代码自动缩进功能。
图2-20演示了代码自动缩进功能。

图2-20 代码自动缩进功能演示
当在自定义函数func()所在行的冒号后面按回车键之后,IDLE自动做了缩进处理。也就是说,语句print()前的空格是被自动插入的。
在一般情况下,IDLE每将代码缩进一级,相当于自动输入4个空格。如果想改变这个默认的缩进量,则可以修改【Options】→【Configure IDLE】→【Fonts/Tabs】→【Indentation Width】选项以实现缩进量的调整。对于初学者来说,需要注意的是,尽管自动缩进功能非常方便,但是不能完全依赖它,因为有时候自动缩进未必能完全符合设计的真实意图和要求,所以要仔细检查自动缩进所对应的层次关系,以确保层次正确。
3.语法高亮显示
所谓“语法高亮显示”,就是将代码中的不同元素通过不同的颜色加以突出显示。在默认情况下,关键字显示为橘红色,注释显示为红色,字符串显示为绿色,定义和解释器的输出显示为蓝色,控制台输出显示为棕色。在输入代码时,会自动应用这些颜色突出显示,这就是语法高亮显示。
语法高亮显示的好处是:可以更方便地区分不同的语法元素,从而提高程序的可读性;与此同时,降低了程序出错的可能性。比如,如果输入的变量名显示为橘红色,那么你需要注意了,这说明该名称与预留的关键字重名了,因为关键字是以橘红色显示的,所以,它给出了一种提示:请给变量更换名称,否则可能会导致冲突。
4.单词自动补齐
所谓“单词自动补齐”,指的是当用户输入单词的一部分后,从【Edit】菜单中选择【Expand Word】命令,或直接按【Alt+/】组合键,可自动补充该单词的余下部分。这个功能只适用于自定义的单词,即自定义的函数名、变量名、类名或属性名等。