《 Python树莓派编程》——2.6 文本编辑器

简介: 本节书摘来自华章出版社《Python树莓派编程》一书中的第2章,第2.6节,作者:[美]沃尔弗拉姆·多纳特(Wolfram Donat)著 韩德强 等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

本节书摘来自华章出版社《Python树莓派编程》一书中的第2章,第2.6节,作者[美]沃尔弗拉姆·多纳特(Wolfram Donat)著 韩德强 等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。


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编辑器比之前的两者都要直观。你可以像其他编辑器一样输入文字,而且你经常使用的命令会显示在屏幕底部。

如果你想都体验一下(在你决定一件事之前,都尝试一下是个好主意),要确保你已经安装了三个编辑器。为此,你可以输入以下命令进行安装:

 ad98eaec639e0cbb956f5c923a6e590fdf860945

以及

 3c363a6439e3f381a6fe7ba197126f9027793cac

vim编辑器应该已经预装在树莓派中了,nano编辑器也一样。但emacs应该没有。需要注意,这将会下载大量的数据,所以安装这些程序及其所依赖的文件将会花费一定时间。所以在安装的同时,喝杯咖啡或者吃顿晚饭是个不错的选择。

1. 使用vim

我之前说过,vim是一个模式编辑器,这意味着你需要在输入模式和普通模式之间进行切换。现在让我们尝试着编写一个测试文件,将树莓派转移到桌面并输入:

 0121e2fb47a6137c19ba2dc51bcde4fb8aabdedc

之后,vim编辑器会在终端进行显示,而不是新建另一个窗口,因此如果你不适应的话,可能会有些困惑。你应该会看到一个类似于图2-4的界面。

vim编辑器是在普通模式下打开的,这意味着你不能立即编写文件。为了正常地编辑文件,你需要按下“i”键切换到输入模式。之后屏幕左下方会显示“INSERT”这个单词—无论是在输入模式或者普通模式,这都是一种很方便的提醒方式。当你完成了要输入的信息后,按下Esc键便可返回普通模式。在普通模式下,你可以通过方向键浏览文档,在输入模式下同样可以,但只有在输入模式下才可以改变或添加信息。当需要保存文件时,至少按一次Esc键确保你正处于普通模式下,输入“:w”(不带引号)并按Enter键即可退出。如果要同时保存并退出的话,输入“:x”(同样不带引号)并按下Enter键。很明显,如果你正处于输入模式,当输入这些字符时,结果只可能是将:w或:x添加至你的文档。

 759d74123547fe7513feafdc2a2dfd12485fe2cb

vim需要花一定时间去适应,而且很多人会把这两种不同模式的操作弄混。如果你倾向于这款文档编辑器,网上有很多教程教你如何充分发挥其潜力。

2. 使用emacs

emacs(至少对我而言)比vim更直观一些。尤其是当你第一次使用的时候。首先,打开一个终端并转到你测试文件的位置,例如桌面。之后输入:

 e378c109341310c382db282128026597df2d0c52

emacs会查找testfile.txt,如果该文件存在,emacs会打开该文件。如果不存在的话,会创建一个新的文件。之后你会看到一个空的面板,如图2-5所示。

之后你便可以开始编写了。表2-3列出了emacs中常见一些的命令。

47b56d211ac04d3fb90631272fe0b24f45a0ff3e

 8860ae67c07c80c71936ceaea7ba060dd672ff42


 

因此,如果你想要移动一行文字,首先将光标移至这一行的开始位置,按下Ctrl及空格键,界面左下方的状态会变为“Mark activated”。这时将光标移至行末,并按下Ctrl和“e”键。左下方的状态文字便消失了。现在你已经选中了那一行的文字,通过Ctrl+w对该行文字进行剪切,将光标移动到需要粘贴的位置,按下Ctrl+y便可进行粘贴操作。

适应这个过程会花费一些时间,所以如果你决定使用emacs的话,网上有很多教程可以指导你学习按键的一些操作。一旦学会了这些操作,使用起来会更加得心应手。但记住一点:一旦你不记得快捷键的话,记得去菜单里找,大多数命令都可在菜单中找到。

3. 使用nano

之前提及nano编辑器可能是3种编辑器中最容易使用且最容易适应的一个。在nano中编辑文件,只需在终端中输入:

 fe853128c346fe40ae2f238dfdb7d4630e44bbab

之后你就会看到如图2-6所示的界面。同其他两个编辑器一样,如果输入的文件存在,nano会打开该文件,不然则会创建一个新的文件。

 19f56afd95718e3dd612ba1941689b7cbc9de8fb

如图2-6所示,常用的命令都在屏幕下方罗列出来,其中上箭头(^)标志着Ctrl键。如果需要保存一个文件,输入Ctrl+X键退出,在退出之前会提示是否需要保存该文件,以及文件名的信息。一般来说,输入“Y”并按下Enter键可以保存刚刚打开或创建的文件。

2.6.2 Leafpad

我准备介绍的另一款编辑器是Leafpad编辑器,这是一款全特性的(可能是轻量级的)、具有图形化界面且预装在树莓派中的编辑器。打开树莓派桌面靠左下侧的图标,选择“Accessories”后再选择“Leafpad”即可打开该编辑器(见图2-7)。

 7c3c95f5b1ec2c4f4b30b97dd5b9aaaedc38f7a1

可以看到,它同你使用过的大多数编辑器类似,如Textedit或者Notepad。如果你习惯于使用这一类编辑器,选择这款即可。我不会经常提起这款编辑器,因为它的主要缺点是必须在树莓派图形化桌面才可以使用。如果你只是远程登录树莓派,并且工作在命令行模式下,Leafpad是无法工作的。

相关文章
|
8天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
8天前
|
程序员 开发者 Python
Python网络编程基础(Socket编程) 错误处理和异常处理的最佳实践
【4月更文挑战第11天】在网络编程中,错误处理和异常管理不仅是为了程序的健壮性,也是为了提供清晰的用户反馈以及优雅的故障恢复。在前面的章节中,我们讨论了如何使用`try-except`语句来处理网络错误。现在,我们将深入探讨错误处理和异常处理的最佳实践。
|
11天前
|
缓存 监控 Python
解密Python中的装饰器:优雅而强大的编程利器
Python中的装饰器是一种强大而又优雅的编程工具,它能够在不改变原有代码结构的情况下,为函数或类添加新的功能和行为。本文将深入解析Python装饰器的原理、用法和实际应用,帮助读者更好地理解和利用这一技术,提升代码的可维护性和可扩展性。
|
28天前
|
编译器 测试技术 C++
【Python 基础教程 01 全面介绍】 Python编程基础全攻略:一文掌握Python语法精髓,从C/C++ 角度学习Python的差异
【Python 基础教程 01 全面介绍】 Python编程基础全攻略:一文掌握Python语法精髓,从C/C++ 角度学习Python的差异
157 0
|
1天前
|
API Python
Python模块化编程:面试题深度解析
【4月更文挑战第14天】了解Python模块化编程对于构建大型项目至关重要,它涉及代码组织、复用和维护。本文深入探讨了模块、包、导入机制、命名空间和作用域等基础概念,并列举了面试中常见的模块导入混乱、不适当星号导入等问题,强调了避免循环依赖、合理使用`__init__.py`以及理解模块作用域的重要性。掌握这些知识将有助于在面试中自信应对模块化编程的相关挑战。
14 0
|
2天前
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
22 0
|
22天前
|
程序员 C语言 Python
Python列表推导式:简洁与高效的编程利器
在Python编程中,列表推导式(List Comprehension)是一种强大且优雅的工具,它允许我们以简洁的方式创建新的列表。列表推导式在Python程序员中广受欢迎,因为它能够将复杂的循环和条件语句简化为一行代码,提高代码的可读性和执行效率。
|
28天前
|
Java 编译器 Shell
【Python 基础教程 04】超详细Python编程教程:初学者入门至全面了解Python 解析器( CPython、IPython、Jython和PyPy)
【Python 基础教程 04】超详细Python编程教程:初学者入门至全面了解Python 解析器( CPython、IPython、Jython和PyPy)
43 0
|
28天前
|
缓存 分布式计算 自然语言处理
Python语言的函数编程模块
Python语言的函数编程模块
|
30天前
|
存储 JavaScript 编译器
这款国产中文编程火了!通过文言文编译生成Python、JS、Ruby代码!
这款国产中文编程火了!通过文言文编译生成Python、JS、Ruby代码!

热门文章

最新文章