推广 热搜: 行业  机械  设备    经纪  系统  教师  参数    蒸汽 

Emacs入门到精通:开发者的高效编辑利器

   日期:2024-11-01     移动:http://www.xhstdz.com/mobile/quote/767.html

1.1 什么是Emacs

Emacs是一款功能强大的文本编辑器,由GNU项目维护。其不仅仅是一个编辑器,更是一个集成开发环境(IDE)。Emacs的设计宗旨是可扩展和可定制,用户可以通过Emacs Lisp(Elisp)语言编写脚本和插件,来实现几乎任何功能。这使得Emacs在开发者社区中拥有极高的声誉和广泛的应用。Emacs提供了强大的文本编辑功能、文件管理、项目导航、版本控制、调试支持和编程语言的集成,这些特性使其成为了许多开发者的首选工具。

Emacs入门到精通:开发者的高效编辑利器

除了代码编辑,Emacs还可以用于其他用途,例如笔记管理、日程安排、电子邮件处理、新闻阅读等。通过安装各种插件,用户可以将Emacs打造成一个功能全面的工作平台,满足多种需求。

1.2 Emacs的历史和发展

Emacs的起源可以追溯到1976年,当时Richard Stallman在麻省理工学院人工智能实验室开发了最初的版本,最初的Emacs是TECO宏集的集合,旨在提供一个灵活的编辑环境,其名字Emacs来源于“Editing MACroS”的缩写。

Emacs经历了多次演变和改进。1984年,Stallman离开MIT并创立了自由软件基金会(FSF,开始开发GNU Emacs,这是Emacs的第一个自由软件版本。GNU Emacs在1985年首次发布,并成为自由软件运动的重要组成部分,在之后的几十年里,Emacs不断吸收新的技术和功能。社区开发者为其贡献了大量插件和扩展,使得Emacs的功能得到了极大的扩展。GNU Emacs目前是最广泛使用的Emacs版本,此外还有其他变种如XEmacs。

Emacs的开发过程注重社区贡献和开放性,任何人都可以为Emacs的发展做出贡献。这种开放的开发模式使得Emacs能够迅速适应现代开发需求,保持其在编辑器领域的领先地位。

1.3 Emacs与其他编辑器的比较

与其他编辑器(如Vim、Sublime Text、Visual Studio Code)相比,Emacs的主要优势在于其高度的可扩展性和自定义性。以下是一些具体的比较

  • 扩展性:Emacs的核心优势在于其Elisp编程环境。用户可以编写自定义脚本和插件,扩展Emacs的功能。相比之下,Vim虽然也支持扩展(通过Vimscript,但其扩展性和灵活性略逊一筹。
  • 自定义性:Emacs允许用户几乎完全定制其编辑环境,包括键绑定、界面布局、行为等。通过配置文件(如 或 ,用户可以根据自己的需求定制Emacs的各个方面。
  • 跨平台特性:Emacs可以在Windows、macOS和Linux等操作系统上运行,保证了在不同平台上的一致性。
  • 编程语言支持:Emacs支持多种编程语言的开发,拥有丰富的语言模式(如Python、Javascript、C/C++等,并且可以通过插件增强对特定语言的支持。
  • 内置功能:Emacs内置了许多高级功能,如Org-mode(用于笔记和项目管理)、Magit(Git集成工具)等,而这些功能在其他编辑器中通常需要额外安装插件。

尽管Emacs的学习曲线较陡,但其强大的功能和灵活性使得它在开发者中备受推崇。相比之下,Sublime Text和Visual Studio Code等编辑器更注重用户体验和即开即用的特性,适合那些需要快速上手的用户。

1.4 本教程的目标和受众

本教程旨在帮助开发者从零开始学习Emacs,掌握其基本操作、高级功能和最佳实践。无论你是新手还是有一定经验的用户,都可以通过本教程提升你的Emacs技能,打造高效的工作环境。具体目标包括

  • 基础知识:了解Emacs的基本概念和操作,如启动和退出、界面导航、常用快捷键等。
  • 配置与定制:学习如何配置和定制Emacs,使其适应个人工作流和习惯。
  • 插件使用:掌握常用插件的安装和使用方法,扩展Emacs的功能。
  • 高级功能:探索Emacs的高级功能,如项目管理、版本控制、调试和编程环境的设置。
  • 最佳实践:提供高效使用Emacs的技巧和策略,帮助用户养成良好的编辑习惯,提高工作效率。

2.1 在不同操作系统上安装Emacs

Windows

  1. 访问 GNU Emacs官网,下载适用于Windows的安装包。
  2. 运行下载的安装程序,按照提示完成安装。
  3. 安装完成后,可以在开始菜单中找到Emacs快捷方式。

macOS

  • 使用Homebrew安装(推荐)。在终端中输入以下命令

	
  • 或者访问 GNU Emacs官网,下载适用于macOS的安装包,按照提示完成安装。

Linux

  • 使用系统自带的包管理器安装。例如,在Debian或Ubuntu系统中,可以使用以下命令

	
  • 在Red Hat或Fedora系统中,可以使用以下命令

	

2.2 基本配置

Emacs的灵活性和可定制性主要体现在其配置文件上。通过编辑配置文件,用户可以自定义Emacs的行为和外观,满足个人工作流的需求。配置文件通常位于用户主目录下,文件名可以是 或 。这两个文件的功能相同,主要区别在于命名方式和组织习惯。

配置文件 和

创建和编辑配置文件

如果你的系统上还没有 或 文件,可以通过以下步骤创建

  1. 打开Emacs。
  2. 使用快捷键 ,在迷你缓冲区输入 或 并按回车。
  3. 开始编辑配置文件,输入你的配置命令。

例如,创建一个简单的配置文件,可以包含以下内容


	

组织配置文件

随着配置的增加,保持配置文件的清晰和可维护性变得非常重要。一个常见的做法是将配置拆分成多个文件,并在主配置文件中加载它们。例如,可以将插件配置、UI设置和键绑定分别存储在不同的文件中


	
设置语言环境

为了确保Emacs能够正确处理不同语言和编码,可以在配置文件中设置语言环境。以下是一些常见的设置


	

这些设置将确保Emacs在处理各种文本文件时能够正确显示和编辑Unicode字符,避免编码问题。

基本外观设置

行号显示

显示行号可以帮助开发者更好地导航代码,特别是在调试时


	

禁用工具栏、菜单栏和滚动条

禁用这些界面元素可以提供更简洁的编辑环境


	

设置默认字体

选择合适的字体和字号可以提高代码的可读性


	

启动时最大化窗口

让Emacs在启动时自动最大化窗口,可以更好地利用屏幕空间


	

启用语法高亮

语法高亮是代码编辑的基本需求,可以通过以下配置启用


	
包管理器的设置

安装和配置包管理器

为了方便管理Emacs插件,通常使用包管理器。最常用的包管理器有ELPA、MELPA和Marmalade。以下是一个基本的包管理器配置示例


	

通过这些配置,你可以方便地安装和管理各种Emacs插件,例如自动补全、代码导航、语法检查等。

示例插件配置

使用 插件可以简化插件的安装和配置过程,例如安装 插件


	

通过这种方式,你可以高效地管理Emacs的扩展功能,打造一个强大的开发环境。

2.3 包管理器

使用ELPA、MELPA安装和管理插件

Emacs的包管理系统可以通过ELPA(Emacs Lisp Package Archive)和MELPA(Milkypostman’s Emacs Lisp Package Archive)来安装和管理插件。

常用插件推荐

以下是一些常用的Emacs插件

  • use-package:简化插件安装和配置。

	
  • helm:强大的补全和搜索框架。

	
  • magit:Git集成工具。

	

3.1 启动和退出Emacs

启动Emacs

在命令行中输入即可启动Emacs。你也可以通过桌面快捷方式启动Emacs。

退出Emacs

使用快捷键(Ctrl + x,然后Ctrl + c)退出Emacs。

3.2 基本界面介绍

缓冲区

缓冲区(Buffer)是Emacs中编辑的基本单位,每个打开的文件或进程都对应一个缓冲区。使用切换缓冲区,显示缓冲区列表。

窗口

窗口(Window)是Emacs显示缓冲区的区域。使用分割窗口,垂直分割窗口,关闭当前窗口,关闭其他窗口。

框架

框架(frame)是Emacs的顶级窗口,可以包含多个窗口。使用创建新框架,关闭当前框架。

3.3 常用快捷键

光标移动

  • :向前移动一个字符。
  • :向后移动一个字符。
  • :向下移动一行。
  • :向上移动一行。

文本编辑

  • :删除光标后的字符。
  • :删除光标后的单词。
  • :删除光标到行尾的内容。

文件操作

  • :打开文件。
  • :保存文件。
  • :另存为文件。

3.4 帮助系统

获取帮助

  • :打开Emacs教程。
  • :显示按键绑定的命令。
  • :查看函数的文档。

查找文档

  • :打开Info文档。
  • :按关键字搜索命令。

4.1 文本操作

Emacs作为一款功能强大的文本编辑器,提供了丰富的文本操作功能。这些功能包括复制、剪切、粘贴、查找和替换、以及撤销和重做操作。掌握这些基本操作可以大大提高编辑效率。

复制、剪切和粘贴

在Emacs中,文本的复制、剪切和粘贴操作非常直观和高效。以下是这些操作的详细说明

  • M-w:复制选中的文本。
  • 在选择模式下(通常通过按 激活,选中你想要复制的文本,然后按 (meta键加上 w,通常是 Alt+w)将选中的文本复制到剪贴板。
  • C-w:剪切选中的文本。
  • 在选择模式下,选中你想要剪切的文本,然后按 (Ctrl + w)将选中的文本剪切到剪贴板。
  • C-y:粘贴文本。
  • 将光标移动到你想粘贴文本的位置,按 (Ctrl + y)将剪贴板中的文本粘贴到当前光标位置。

示例


	

查找和替换

Emacs提供了强大的查找和替换功能,使用户能够快速定位和修改文本。

  • C-s:向前搜索。
  • (Ctrl + s,然后输入搜索关键词,Emacs会实时高亮显示匹配的文本。按回车确认搜索,按 继续搜索下一个匹配项。
  • C-r:向后搜索。
  • (Ctrl + r,然后输入搜索关键词,Emacs会实时高亮显示匹配的文本,并从当前光标位置向后搜索。按回车确认搜索,按 继续搜索上一个匹配项。
  • M-%:查找和替换。
  • (meta键加上 %,通常是 Alt+%,输入要查找的文本和替换的文本。按回车执行替换操作,可以选择逐个确认替换(按 确认, 跳过, 替换所有, 取消)。

示例


	

撤销和重做

撤销和重做是编辑文本时必不可少的功能,Emacs提供了强大的撤销和重做命令,帮助用户恢复或取消操作。

  • C-/ 或 C-_:撤销操作。
  • 按 或 (Ctrl + / 或 Ctrl + _)撤销上一个操作。如果需要连续撤销,继续按下这些组合键。
  • C-g:取消当前命令。
  • (Ctrl + g)取消当前正在进行的命令或退出某个操作模式。这个命令在中断未完成操作时非常有用。

示例


	

除了上述基本操作,Emacs还提供了更高级的文本操作功能,如矩形选择、宏录制与回放等。这些高级功能可以进一步提升编辑效率,帮助用户在处理复杂文本时游刃有余。

矩形选择

矩形选择用于选择文本块中的矩形区域,可以在表格编辑或代码块操作中非常有用。

  • C-x r k:剪切矩形区域。
  • C-x r y:粘贴矩形区域。
  • C-x r t:用指定字符替换矩形区域。

示例


	

宏录制与回放

宏录制与回放可以极大提高处理重复性任务的效率。

  • F3:开始录制宏。
  • F4:结束录制并保存宏。
  • F4:回放宏。

示例


	

通过熟练掌握这些文本操作,用户可以在Emacs中高效地编辑和处理各种类型的文本,从而大大提高工作效率。

4.2 多文件编辑

在软件开发和文本处理过程中,往往需要同时编辑和管理多个文件。Emacs提供了强大的多文件编辑功能,主要通过缓冲区管理和分屏显示来实现高效的文件操作。

缓冲区管理

缓冲区是Emacs中用于打开和编辑文件的基本单元。每个打开的文件、进程或文档都会被分配一个缓冲区。有效管理缓冲区是高效编辑的关键。

  • C-x b:切换缓冲区。
  • 使用 可以在不同的缓冲区之间切换。输入 后,Emacs会提示你输入要切换到的缓冲区名称。你可以使用Tab键进行自动补全,或者输入部分名称并按回车进行切换。
  • C-x C-b:显示缓冲区列表。
  • 使用 可以显示当前所有打开的缓冲区列表。Emacs会打开一个新的窗口,列出所有缓冲区及其相关信息(如缓冲区名称、文件名、状态等)。你可以在该窗口中使用常规的光标移动命令来选择和操作缓冲区。

示例配置


	

分屏显示

分屏显示使得你可以在一个Emacs窗口中同时查看和编辑多个缓冲区。这对于对比文件、参照文档或同时编辑多个文件非常有用。

  • C-x 2:水平分割窗口。
  • 按下 会将当前窗口水平分割为两个窗口,上下两个窗口可以显示不同的缓冲区。你可以在这两个窗口之间自由切换,并且独立编辑其中的内容。
  • C-x 3:垂直分割窗口。
  • 按下 会将当前窗口垂直分割为两个窗口,左右两个窗口可以显示不同的缓冲区。与水平分割类似,你可以在这两个窗口之间自由切换并独立编辑。
  • C-x 0:关闭当前窗口。
  • 按下 会关闭当前激活的窗口,保留其他窗口。通常用于结束当前窗口的编辑任务并返回到主编辑窗口。
  • C-x 1:关闭其他窗口。
  • 按下 会关闭除当前激活窗口以外的所有窗口,只保留当前窗口。这在你需要专注于一个文件时非常有用。

示例操作


	

窗口管理的进一步技巧

为了进一步提升窗口管理的效率,可以使用一些专门的插件。例如, 插件可以使用方向键来切换窗口, 插件可以更快捷地选择窗口。

  • windmove:使用方向键切换窗口

	

配置后,可以使用 (如 、)在窗口之间切换。

  • ace-window:快速选择窗口

	

配置后,可以按 (Alt + o)调用 并快速选择要切换的窗口。

多文件编辑的实践

在实际开发中,多文件编辑的需求非常常见。以下是一些具体的应用场景和操作技巧

  • 对比两个文件:使用 垂直分割窗口,然后分别在两个窗口中打开不同的文件,可以方便地进行对比和同步修改。
  • 参照文档编辑:使用 水平分割窗口,在一个窗口中打开代码文件,另一个窗口中打开相关文档,方便参考和编辑。
  • 同时编辑多个函数或模块:分割窗口后,在不同窗口中打开同一个文件的不同部分,特别适用于大型文件的多处编辑。

通过灵活使用缓冲区管理和分屏显示功能,Emacs用户可以显著提高多文件编辑的效率,轻松处理复杂的编辑任务。

4.3 语法高亮和代码折叠

在编写代码时,语法高亮和代码折叠功能可以显著提升代码的可读性和编辑效率。Emacs提供了强大的语法高亮功能,并且可以通过插件和配置实现代码折叠。

启用语法高亮

语法高亮使得代码的不同元素(如关键字、变量、注释等)以不同的颜色显示,提高代码的可读性。启用语法高亮非常简单,只需在配置文件中添加以下内容


	

这个设置将全局启用语法高亮功能。

为了更好地支持多种编程语言,你可以使用 钩子来自动为所有编程模式启用语法高亮


	

高级语法高亮配置

你可以通过安装和配置 和 等插件来进一步增强语法高亮效果

  • highlight-numbers:高亮显示代码中的数字。

	
  • rainbow-delimiters:使用不同颜色高亮显示嵌套括号。

	

代码折叠

代码折叠功能允许你隐藏和显示代码块,特别适合处理长文件和复杂代码结构。Emacs中的 插件提供了简单易用的代码折叠功能。

安装和配置 插件

首先确保 插件已安装,通常它是Emacs内置插件,无需额外安装。然后在配置文件中添加以下内容


	

这将为所有编程模式启用代码折叠功能。

使用快捷键折叠和展开代码

  • C-c @ C-c:折叠代码块。
  • C-c @ C-e:展开代码块。

示例配置


	

高级代码折叠配置

为了进一步增强代码折叠功能,可以使用 插件,它提供了更强大的代码折叠功能和更灵活的折叠方式

  • 安装 插件

	
  • 配置快捷键

	

通过上述配置和插件,Emacs的语法高亮和代码折叠功能将变得更加强大和灵活,极大地提升了代码编辑的体验和效率。

4.4 自动补全

自动补全功能在编写代码时极大地提高了效率和准确性。Emacs支持多种自动补全插件,其中 插件是一种强大且易于配置的选项。

安装 插件

首先,通过 安装 插件。在你的 Emacs 配置文件中添加以下内容


	

这段配置代码会确保 插件的安装并启用其默认配置。

配置

为了优化自动补全功能,可以在配置文件中添加以下内容


	

上述配置将确保 在所有缓冲区中启用,并且在用户输入两个字符后开始补全。此外,补全时将区分大小写。

进一步的配置选项

插件提供了许多高级配置选项,以满足不同用户的需求。以下是一些常见的配置示例

设置补全菜单的外观

可以自定义补全菜单的外观,例如调整菜单的宽度和候选项的显示样式


	

定义补全源

你可以定义不同的补全源,以增强补全的准确性和实用性


	

与编程语言集成

插件可以与多种编程语言模式集成,提供特定语言的智能补全。例如,与 插件结合使用,为 和 等语言提供更好的支持


	

添加自定义词典

你可以添加自定义词典来扩展补全词库


	

示例配置

为了更全面地展示如何配置 ,以下是一个完整的示例配置文件


	

通过上述配置, 插件将为 Emacs 提供强大的自动补全功能,并且可以根据个人需求进行灵活的定制和扩展。

5.1 自定义快捷键

Emacs是一款极其灵活的编辑器,允许用户根据自己的工作习惯和需求自定义快捷键。通过在配置文件中添加相应的命令,用户可以显著提高工作效率和编辑体验。以下是如何自定义快捷键的一些详细说明和示例。

基本自定义快捷键

在配置文件中添加以下内容,可以设置一些常用的快捷键


	

扩展自定义快捷键

你可以为Emacs中的各种命令自定义快捷键,以适应你的工作流程。以下是一些扩展的示例


	

创建自定义函数并绑定快捷键

你可以创建自定义函数来执行特定的任务,并将这些函数绑定到快捷键上。例如,创建一个快速打开配置文件的函数


	

使用 自定义快捷键

是一个强大的Emacs包管理工具,它不仅可以安装和配置包,还能简化快捷键的绑定过程。以下是如何使用 自定义快捷键的示例


	

局部快捷键设置

有时,你可能希望在特定的模式或缓冲区中设置快捷键。可以使用 来实现局部快捷键绑定。例如,在 中设置快捷键


	

使用 管理快捷键

是一个管理快捷键的优秀工具,它使得定义和管理复杂的快捷键映射变得更加简洁和直观。以下是一个使用 的示例


	

通过这些配置,你可以灵活地自定义和管理Emacs中的快捷键,从而创建一个高效、个性化的编辑环境。

5.2 使用宏

Emacs的宏功能非常强大,可以记录和重复一系列命令,极大地提高了重复性任务的效率。宏允许用户记录键盘输入并将其保存为一个可重复执行的命令序列,这对于重复性编辑任务尤其有用。以下是如何使用宏的详细步骤和示例。

录制宏

录制宏是使用宏的第一步,通过录制宏,你可以记录一系列的操作并将其保存为一个可重复的命令。

  • 按下 开始录制宏。
  • 输入你想要的命令序列。例如,删除一行并移动到下一行
    • 移动到行首
    • 删除当前行
    • 移动到下一行
  • 按下 结束录制宏。

执行宏

录制完宏之后,你可以按下 执行刚刚录制的宏。每次按 都会重复一次宏。

  • 按 执行一次宏。
  • 按 执行宏多次(例如, 执行宏五次)。

保存宏

为了在Emacs会话之间保存宏,可以将宏定义添加到你的配置文件中。这样,你可以在Emacs启动时自动加载这些宏。以下是保存宏的步骤

  1. 使用 命令为你的宏命名。
  2. 将宏的Lisp代码复制到你的配置文件中。

示例


	

示例宏

假设你录制了一个删除当前行并移动到下一行的宏,可以将其保存如下


	

复杂宏的录制和使用

有时,你可能需要录制更复杂的宏,包括条件判断和循环。你可以手动编写这些复杂宏,并将其保存到配置文件中。例如,下面是一个更加复杂的宏示例,用于在特定条件下进行文本操作


	

这个宏在每行的行首检查是否有 "TODO" 标记,如果有,就将其删除并替换为 "DONE",然后移动到下一行。

使用宏的技巧

  • 结合宏和键盘宏:将多个简单宏组合成一个复杂宏,以处理复杂任务。
  • 重复执行宏:利用 前缀参数,可以多次执行宏,适用于批量操作。
  • 命名和保存宏:经常使用的宏最好命名并保存到配置文件中,便于重复使用。
  • 调试宏:在录制宏时,可以随时按 取消当前录制,重新开始。

5.3 项目管理

Emacs支持强大的项目管理工具,帮助开发者高效地管理和导航大型项目。通过这些工具,开发者可以快速切换项目、查找文件、搜索代码、运行构建任务等。Projectile是Emacs中最流行的项目管理工具之一,它提供了丰富的功能来简化和加速项目管理工作。

Projectile

Projectile是一个项目管理和导航工具,提供了项目切换、文件查找、代码搜索等功能。它支持多种编程语言和项目结构,可以与其他插件如Helm或Ivy结合使用,提供更强大的搜索和补全功能。

安装Projectile

通过 安装Projectile,并启用其模式


	

这段配置代码将安装Projectile,并绑定 快捷键到Projectile的命令映射表,方便你快速访问Projectile的各种命令。

配置Projectile

配置Projectile以适应你的项目结构和工作流。以下是一些常见的配置选项


	

这些配置选项将Projectile的项目搜索路径设置为 ,并将补全系统设置为Helm。

常用功能

Projectile提供了许多强大的功能,以下是一些常用命令和配置

  • 项目切换: 切换到另一个项目。
  • 文件查找: 查找当前项目中的文件。
  • 代码搜索: 在项目中搜索字符串。
  • 运行项目任务: 运行指定的项目任务(如测试、构建等)。

示例


	

与其他工具集成

Projectile可以与多个Emacs插件集成,提供更强大的功能和更好的用户体验。例如,与 和 集成

  • Helm集成

	
  • Ivy集成

	

高级配置

除了基本配置,Projectile还支持更多高级功能,例如自定义项目类型、项目忽略文件、项目缓存等。以下是一些高级配置示例

  • 自定义项目类型

	
  • 忽略文件和目录

	
  • 启用项目缓存

	

通过上述配置和技巧,你可以充分利用Projectile的强大功能,提升项目管理和导航的效率。Projectile不仅简化了日常的项目操作,还提供了灵活的配置选项,使其能够适应不同的开发需求和工作流。

5.4 版本控制

版本控制是现代软件开发中不可或缺的一部分。Emacs提供了多种与版本控制系统集成的插件,使得管理代码变得更加方便和高效。通过这些插件,开发者可以在编辑器内完成所有版本控制相关的操作,从而提升开发效率和专注度。Magit是Emacs中最强大的Git集成工具,提供了几乎所有Git命令的交互界面,极大地简化了Git操作。

Magit

Magit是一款广受欢迎的Emacs插件,它为Git操作提供了一个强大且直观的交互界面。Magit的设计理念是尽可能简化和直观地执行Git操作,无需记忆复杂的命令行语法。

安装Magit

通过 安装Magit插件,并设置快捷键


	

上述配置将安装Magit,并将 绑定到 命令,使你可以快速打开Magit状态界面。

使用Magit

Magit提供了丰富的Git命令和操作,以下是一些常用命令的说明和快捷键

  • C-x g:打开Magit状态界面,查看当前仓库的状态。这个界面显示了仓库的当前状态,包括未提交的更改、暂存区和提交历史等。
  • s:暂存更改。选择你想要暂存的文件或变更后,按 键将其暂存到索引。
  • c c:提交更改。在Magit状态界面按 键,然后按 键开始写提交消息。输入提交消息后按 完成提交。
  • P:推送到远程仓库。按 键选择推送操作,然后选择要推送的分支。
  • F:从远程仓库拉取更改。按 键选择拉取操作,然后选择要拉取的分支。

Magit的其他功能

Magit不仅支持基本的Git操作,还提供了一些高级功能

  • 分支管理:按 键打开分支菜单,可以进行创建、切换、合并等操作。
  • 查看日志:按 键打开日志菜单,可以查看提交历史和更改记录。
  • 解决冲突:在合并冲突时,Magit提供了直观的冲突解决界面,帮助你快速解决冲突。
  • 子模块管理:支持Git子模块操作,按 键打开子模块菜单,可以添加、更新和初始化子模块。

配置Magit的高级选项

Magit具有许多配置选项,可以根据你的需求进行定制。以下是一些常用的配置示例

  • 设置Git执行路径

	
  • 显示行号

	
  • 自动刷新Magit状态

	
  • 自定义提交消息模板

	

使用Magit进行代码审查

Magit还可以与其他工具结合使用,进行代码审查和协作。例如,与 插件结合,可以在编辑器中实时显示Git变更


	

通过这些配置和技巧,你可以充分利用Magit的强大功能,将Emacs打造成一个高效的版本控制平台,提升代码管理和协作效率。Magit不仅简化了Git操作,还提供了直观的界面和丰富的功能,使得版本控制变得更加轻松和高效。

5.5 调试和测试

Emacs支持多种编程语言的调试和测试工具,帮助开发者快速定位和解决问题。通过内置的调试功能和各种扩展插件,Emacs能够提供强大的调试环境,使得开发者可以在编辑器内完成调试和测试任务。

GUD(Grand Unified Debugger

GUD是Emacs内置的调试工具,支持多种调试器如GDB(GNU调试器)、PDB(Python调试器)和LLDB(LLVM调试器)等。GUD提供了一个统一的界面,允许开发者在Emacs中进行调试操作。

使用GUD进行调试

以下是使用GUD进行调试的详细步骤

  1. 打开要调试的文件
    在Emacs中打开你要调试的源代码文件。确保文件已经编译成可执行文件,如果使用的是解释性语言如Python,则直接打开源代码文件即可。
  2. 启动GDB
    使用 命令启动GDB并加载你的可执行文件。在Emacs的迷你缓冲区中输入 然后按回车,再输入你的可执行文件路径并按回车。例如

	
  1. 设置断点
    将光标移动到你想设置断点的代码行,然后按 设置断点。你可以在多个位置设置断点,以便在调试过程中暂停执行并检查程序状态。
  2. 开始调试
    在GUD缓冲区中输入 命令开始调试会话。此时,程序将开始运行,并在遇到断点时暂停。你可以在GUD缓冲区中输入各种GDB命令,如 (单步执行)、(继续执行)、(打印变量值)等。

调试示例

以下是一个简单的调试会话示例,假设你正在调试一个C语言程序


	

其他调试工具

除了GUD,Emacs还支持其他调试工具,通过插件可以进一步扩展调试功能。

RealGUD

RealGUD是一个增强版的GUD,提供了更强大的调试功能和更友好的用户界面。它支持多种调试器,包括GDB、PDB、LLDB等。

安装和配置RealGUD

通过 安装RealGUD


	

使用RealGUD

RealGUD的使用方式与GUD类似,但提供了更多的调试命令和更好的集成


	

调试Python代码

对于Python代码,可以使用PDB进行调试。以下是使用PDB调试Python代码的步骤

  1. 打开Python文件

	
  1. 启动PDB

	
  1. 设置断点和调试
    使用PDB的命令如 (设置断点)、(继续执行)、(单步执行)等进行调试。

自动化测试

Emacs支持多种自动化测试工具和框架,可以帮助开发者在编写代码后立即进行测试,确保代码质量。

使用Ert进行Emacs Lisp测试

Ert是Emacs内置的测试框架,用于测试Emacs Lisp代码

  1. 编写测试用例

	
  1. 运行测试
    使用 命令运行测试用例。

集成其他测试框架

Emacs可以集成多种外部测试框架,如Python的pytest、Javascript的jest等。以下是集成pytest的示例

  1. 安装pytest插件

	
  1. 配置pytest

	
  1. 运行pytest
    使用 运行单个测试文件,或 运行所有测试。

通过这些配置和技巧,你可以在Emacs中实现强大的调试和测试功能,从而提高开发效率和代码质量。

6.1 编程语言支持

Emacs对多种编程语言提供了良好的支持,能够通过各种插件和配置为开发者提供高效的编程环境。以下是一些常见编程语言的配置示例。

Python

Emacs提供了多种Python开发工具,其中 是一个强大的Python开发环境插件。它集成了代码补全、语法检查、调试等功能。

安装并配置Python支持

使用 安装并启用 插件


	

以上配置将安装 并自动启用它,使得Emacs具备强大的Python开发功能。

更多Python配置

可以通过以下配置进一步优化Python开发体验

  • 设置Python解释器路径

	
  • 启用Flycheck进行实时语法检查

	
  • 使用Black自动格式化代码

	

Javascript

Javascript开发在Emacs中也得到了良好的支持,通过插件如 可以提供高级的Javascript编辑功能。

安装并配置Javascript支持

使用 安装并启用 插件


	

以上配置将自动为 文件启用 ,提供增强的Javascript语法高亮和代码检查。

更多Javascript配置

以下是一些进一步优化Javascript开发环境的配置

  • 配置 以支持ES6语法

	
  • 集成 进行代码格式化

	
  • 启用 提供代码补全

	

C/C++

Emacs内置了对C/C++的良好支持,通过 可以提供基本的C/C++开发环境。此外,可以通过安装其他插件来增强功能。

安装并配置C/C++支持

使用 安装并启用 插件


	

更多C/C++配置

以下是一些增强C/C++开发环境的配置

  • 启用 提供代码补全

	
  • 配置 进行语法检查

	
  • 使用 提供智能补全和跳转功能

	
  • 使用 进行代码格式化

	

其他语言支持

Emacs支持多种其他编程语言,通过安装相应的插件,可以为这些语言提供类似的功能。例如

  • Go语言

	
  • Rust语言

	
  • Ruby语言

	

通过这些配置,Emacs可以支持多种编程语言,为开发者提供一个统一而强大的开发环境。这些配置不仅提高了代码编写效率,还使得代码管理和调试更加方便。

6.2 设置编程环境

设置一个高效的编程环境是提高开发效率和代码质量的关键。Emacs通过支持现代编程工具和协议,如LSP(Language Server Protocol)和Flycheck,提供了类似于现代IDE的强大功能。

LSP(Language Server Protocol

LSP提供了现代IDE功能,如代码补全、跳转、重构等。通过使用LSP,Emacs可以提供与Visual Studio Code和IntelliJ IDEA等现代IDE类似的体验。LSP通过语言服务器与编辑器通信,实现代码分析、错误提示、智能补全等功能。

安装并配置LSP

首先,通过 安装并启用 插件


	

这段配置代码将安装 并为Python、Javascript和C++模式启用LSP支持。

配置LSP的其他选项

  • 设置日志级别

	
  • 启用自动补全

	
  • 安装和配置特定语言的服务器
  • Python:安装 作为Python的语言服务器

	

在Emacs中配置


	
  • Javascript/Typescript:安装

	

在Emacs中配置


	
  • C/C++:安装

	

在Emacs中配置


	

Flycheck

Flycheck是一个现代语法检查工具,提供即时的代码错误和警告提示。Flycheck支持多种编程语言,并且可以与LSP等其他工具集成使用。

安装并配置Flycheck

通过 安装并启用 插件


	

这段配置将全局启用Flycheck,为所有支持的模式提供语法检查功能。

配置Flycheck的其他选项

  • 设置错误显示方式

	
  • 启用特定语言的检查器
  • Python:配置 作为Python的检查器

	
  • Javascript:配置 作为Javascript的检查器

	
  • C/C++:配置 作为C/C++的检查器

	

结合LSP和Flycheck

LSP和Flycheck可以结合使用,提供更强大的语法检查和代码分析功能。例如,为了在Python开发中同时启用LSP和Flycheck


	

通过这些配置,Emacs可以提供一个强大且高效的编程环境,具备现代IDE的各种功能。这不仅提高了代码编写的效率,还帮助开发者更好地管理和优化他们的代码。

6.3 使用Org-mode进行项目管理

Org-mode 是 Emacs 中一个强大的文档和项目管理工具,广泛用于TODO列表、日程管理、笔记记录等。其灵活性和扩展性使其成为许多开发者和知识工作者的首选工具。

基本配置

为了使用 Org-mode,你需要确保已安装并正确配置它。以下是一个基本的配置示例


	

这段配置代码将确保安装 Org-mode,并设置 选项为 ,使得在完成任务时自动记录时间。

使用Org-mode

Org-mode 提供了许多方便的快捷键和命令,使得任务管理和文档编辑变得更加高效。以下是一些常用的命令和快捷键

  • C-c C-t:切换TODO状态。
  • 在Org文件中,将光标放在任务行上,按 可以在 、 等状态之间切换。
  • C-c C-s:添加日程。
  • 将光标放在任务行上,按 可以为任务添加日程(Schedule)。这会弹出一个日历,让你选择日期。
  • C-c C-c:记录笔记。
  • 在任何 Org 文件中,按 可以快速记录笔记或更新某些属性。例如,添加一个标签或设置任务的优先级。

更多Org-mode配置和使用技巧

Org-mode 提供了丰富的功能和自定义选项,以下是一些更高级的配置和使用技巧

设置TODO关键词

你可以自定义TODO状态的关键词,以适应不同类型的任务管理需求


	

这段配置将定义一个任务的状态序列,从 到 ,中间还包括 和 。

自定义日程和笔记

你可以配置更多选项来管理日程和笔记,例如

  • 设置默认的日程文件

	
  • 设置捕获模板
    捕获模板用于快速记录各种类型的笔记和任务

	

这些模板定义了如何捕获TODO任务和日记条目,并将它们保存到相应的Org文件中。

使用Org-agenda进行时间管理

Org-mode 提供了强大的日程管理功能,通过 Org-agenda 可以查看和管理所有任务和日程

  • 打开Org-agenda

	
  • 配置Org-agenda视图

	

导出和分享Org文档

Org-mode 支持将文档导出为多种格式,包括HTML、PDF和LaTeX等

  • 导出为HTML
    在Org文件中,按 可以将文档导出为HTML文件。
  • 导出为PDF
    在Org文件中,按 可以将文档导出为PDF文件(需要配置LaTeX环境)。

通过这些配置和技巧,Org-mode 可以大大提高项目管理和文档处理的效率。无论是个人任务管理、团队协作,还是日程安排,Org-mode 都能提供强大的支持和灵活性。

7.1 编写Elisp脚本

Emacs Lisp(Elisp)是Emacs的扩展语言,用于自定义和扩展Emacs功能。通过编写Elisp脚本,用户可以创建新功能、定制工作流程,并进一步提升Emacs的灵活性和效率。

Elisp简介

Emacs Lisp是一种Lisp方言,具有函数式和命令式编程特性。它是一种动态类型的编程语言,支持高级数据结构如列表、数组和哈希表。Elisp代码可以直接在Emacs中编写、评估和调试,使其成为扩展和定制Emacs的强大工具。

基本语法和结构

以下是一个简单的Elisp函数示例


	

这个函数定义了一个名为 的函数,当调用时,在Emacs的回显区域打印 "Hello, World!"。 声明使得这个函数可以作为Emacs命令执行。

详细讲解

  • 函数定义(defun: 用于定义一个函数。它的基本结构如下

	
  • 是函数的名称。
  • 是函数的参数列表。
  • 是函数的文档字符串,用于描述函数的功能。
  • 声明使得函数可以通过M-x命令调用。
  • 是函数的具体实现代码。
  • 打印消息(message: 函数用于在Emacs的回显区域显示一条消息。

更多Elisp示例

定义变量

Elisp支持多种类型的变量,包括全局变量和局部变量

  • 全局变量

	
  • 局部变量

	

条件语句

Elisp中的条件语句使用 、 和 等结构

  • if 语句

	
  • cond 语句

	
  • when 语句

	

循环

Elisp支持多种循环结构,包括 和

  • while 循环

	
  • dotimes 循环

	

编写和执行Elisp脚本

你可以直接在Emacs中编写和执行Elisp脚本。以下是几个步骤

  1. 创建一个Elisp文件
    在Emacs中创建一个以 为扩展名的文件,例如 。
  2. 编写Elisp代码
    在文件中编写你的Elisp代码。例如

	
  1. 加载并执行脚本
    保存文件后,使用 加载你的Elisp文件,然后你可以使用 执行你的函数。

调试Elisp代码

Emacs提供了多种调试工具和方法,帮助你调试Elisp代码

  • 使用 函数调试
    在代码中插入 函数,打印变量值或状态信息。
  • 启用调试模式
    使用 启用调试模式,当代码出错时,Emacs会自动进入调试器,显示详细的错误信息和调用堆栈。
  • 使用 进行交互式调试

	

通过编写Elisp脚本,用户可以充分利用Emacs的强大功能,实现高度定制和自动化的工作流。这不仅可以提高工作效率,还能大大增强Emacs的功能和可扩展性。

7.2 创建自定义命令和函数

在Emacs中,通过编写Elisp函数和命令,你可以实现个性化的功能,极大地提升编辑效率和工作流。下面是如何创建自定义命令和函数的详细介绍。

创建自定义命令和函数

编写Elisp函数可以让你实现特定的功能,并通过自定义命令将这些功能绑定到快捷键上,以便快速调用。以下是一个示例,展示了如何编写和使用自定义函数和命令。

示例

定义一个自定义函数 ,用于快速打开Emacs的配置文件


	

在这个示例中

  • :用于定义一个新的函数。后跟函数名和参数列表。
  • :函数的名称。
  • :函数的文档字符串,描述函数的作用。
  • :使得函数可以作为命令,通过 调用。
  • :调用 函数打开 ,即用户的Emacs配置文件。

将这个函数绑定到快捷键 上,使得你可以通过按 快速打开配置文件


	

扩展示例

你可以创建更多自定义函数,以实现特定的工作流和功能需求。例如

快速插入时间戳


	

这个函数将在光标处插入当前的日期和时间,并将其绑定到快捷键 上。

批量替换单词


	

这个函数将在当前缓冲区中将所有 字符串替换为 字符串,并将其绑定到快捷键 上。

更多自定义功能

以下是一些更多的自定义函数示例,可以帮助你进一步定制Emacs的功能

打开最近文件


	

清除缓冲区中的空行


	

启用和禁用某些模式


	

调试和优化自定义函数

在编写和调试Elisp代码时,可以使用以下工具和方法

  • 调试函数:使用 调试特定函数,例如 。
  • 查看消息缓冲区:使用 查看所有消息输出,帮助定位问题。
  • 检查性能:使用 和 进行性能分析,找出性能瓶颈。

通过这些配置和示例,你可以创建丰富的自定义命令和函数,充分发挥Emacs的强大功能,提升工作效率和编辑体验。

7.3 设计和使用自定义模式

自定义模式允许用户为特定文件类型定义专门的编辑环境。这不仅可以增强文件的可读性,还可以提供特定的语法高亮、缩进规则和快捷键绑定,极大地提升编辑体验和效率。

定义自定义模式

创建一个自定义模式涉及定义模式的基本行为和特性。以下是一个简单的示例,展示了如何定义一个基本的自定义模式


	

在这个示例中

  • :这是定义新模式的函数。它从一个现有的基础模式(如 )派生出一个新模式。
  • :新模式的名称。
  • :基础模式,所有行为和特性都将从这个模式继承。
  • :模式的名称字符串,显示在模式行中。
  • :模式的文档字符串,用于描述模式的用途和功能。

自动关联文件类型

为了让Emacs自动识别并使用新定义的模式,可以将文件扩展名与模式关联起来


	

这样,所有以 结尾的文件将自动使用 打开。

扩展自定义模式的功能

自定义模式不仅仅是语法高亮和缩进规则,还可以包括许多其他功能,如自定义快捷键、钩子函数等。以下是一些常见的扩展方法

语法高亮

定义自定义模式的语法高亮规则,使得特定的关键字、注释和字符串以不同颜色显示


	

自定义快捷键

为自定义模式定义快捷键,提高编辑效率


	

钩子函数

钩子函数是在进入或离开模式时执行的函数,可以用于初始化设置或清理工作


	

完整的自定义模式示例

以下是一个完整的自定义模式示例,结合了语法高亮、自定义快捷键和钩子函数


	

通过这些配置和示例,你可以创建功能强大的自定义模式,为特定文件类型提供优化的编辑环境。这不仅提高了编辑效率,还能大大增强Emacs的灵活性和适应性。

8.1 高效的编辑习惯

在Emacs中,养成高效的编辑习惯可以显著提升工作效率。以下是一些建议

  • 使用键盘快捷键:避免使用鼠标,通过键盘快捷键进行操作。Emacs的设计理念是让用户的双手不必离开键盘,因此尽量使用快捷键和命令。
  • 学习常用命令:熟练掌握常用的Emacs命令和模式切换。以下是一些常用命令的总结
  • 光标移动(前(后(下(上)。
  • 插入模式(打开文件(保存文件(另存为)。
  • 保存与退出(保存(退出(保存并退出)。
  • 复制与粘贴(复制(剪切(粘贴)。
  • 定制自己的 :根据个人习惯定制配置文件,优化Emacs的使用体验。通过配置 文件,可以设置快捷键、加载插件、调整显示等。

示例 配置


	

8.2 键盘快捷键优化

通过配置键盘快捷键,可以进一步提高Emacs的编辑效率。以下是一些常见的快捷键配置示例,这些快捷键可以帮助用户快速执行常见的编辑操作,如保存、退出、切换窗口和打开文件浏览器等。


	

扩展快捷键配置

为了更好地优化编辑效率,以下是一些更多的快捷键配置示例

快速打开配置文件

有时你可能需要频繁编辑你的Emacs配置文件,因此定义一个快捷键来快速打开它会很有帮助


	

文件和缓冲区管理

切换和管理缓冲区是Emacs日常使用中的常见操作,通过快捷键可以快速完成这些任务


	

窗口管理

高效管理窗口布局可以提升多任务处理能力


	

文本操作

自定义快捷键可以帮助你快速完成一些文本操作,如复制、剪切、粘贴等


	

快速跳转

通过快捷键快速跳转到文件或目录可以显著提升工作效率


	

自定义宏

录制宏并绑定快捷键可以自动化重复性任务


	

调试

绑定调试工具的快捷键可以加快代码调试过程


	

通过这些快捷键配置,可以显著提升Emacs的编辑效率,使得日常操作更加流畅和快捷。用户可以根据个人需求进一步定制这些快捷键,以优化工作流程和提高生产力。

8.3 常见问题与解决方案

在使用Emacs时,可能会遇到一些常见问题。以下是一些常见问题及其解决方法

启动Emacs时出现错误信息

  • 检查 .emacs 配置文件

	
  • 确认你的 文件中没有语法错误或不兼容的配置项。你可以通过以下方法快速定位问题
  • 使用 M-x debug-on-error

	
  • 在出现错误时,启用调试模式可以查看详细的错误信息,帮助你快速定位问题

插件安装失败

  • 确保插件管理器已正确安装

	
  • 检查你的插件管理器配置是否正确。例如,确保你已经在 中正确配置了 或
  • 检查网络连接
  • 确认你的网络连接正常,可以通过在浏览器中访问 网站来测试。

命令执行无效

  • 检查命令拼写
  • 确认你输入的命令拼写正确。如果不确定,可以使用 然后按 查看可用命令列表。
  • 查看函数和按键绑定

	
  • 使用 查看函数的详细信息,或 查看按键绑定的详细信息

无法加载插件

  • 确保插件已正确下载
  • 确认插件已下载到正确的目录。你可以检查 目录下是否存在相应的插件文件夹。
  • 重新加载 .emacs 文件
  • 在 文件中添加 来重新加载配置文件,或直接重启Emacs。

Emacs响应慢

  • 检查安装的插件数量
  • 过多的插件可能会导致Emacs响应变慢。检查并禁用不必要的插件。
  • 优化 .emacs 配置

	
  • 使用延迟加载(Lazy Loading)插件可以显著提升启动速度和运行效率。例如,使用 来实现延迟加载
  • 监控性能问题

	
  • 使用Emacs自带的性能分析工具,例如 和 ,可以帮助你找出性能瓶颈

8.4 资源与社区

官方文档和教程

  • Emacs官网:提供了最新的Emacs版本下载和官方文档。Emacs官网
  • GNU文档:Emacs手册详细介绍了Emacs的各项功能和使用方法。在Emacs中可以通过 打开。
  • EmacsWiki:一个由社区维护的百科全书,包含了大量的教程和配置示例。EmacsWiki

在线社区和论坛

  • Stack Overflow:解决Emacs相关问题的活跃社区。用户可以在这里提问和回答Emacs使用中的问题。
  • Reddit:r/emacs 子论坛,讨论和分享Emacs的使用经验、插件推荐和配置技巧。
  • Emacs邮件列表:获取最新的Emacs开发动态和讨论,与其他用户交流经验。

博客和教程网站

  • Mastering Emacs:提供了大量关于Emacs的深入文章和教程,适合进阶用户。Mastering Emacs
  • Emacs Rocks:通过视频展示了Emacs的一些高级技巧和插件使用方法。Emacs Rocks
  • Practical Emacs:一个全面的Emacs教程网站,涵盖了从基础到高级的各种内容。Practical Emacs

9.1 学习Emacs的长期价值

学习Emacs不仅可以提升文本编辑的效率,还可以帮助开发者养成高效的工作习惯。Emacs的强大功能和灵活性使其在各类编辑任务中表现出色,掌握Emacs技能将成为开发者的一项重要资产。

  • 高效编辑:Emacs的快捷键和命令模式使得文本编辑变得异常高效。通过一系列键盘命令,用户可以快速完成复杂的编辑操作,而无需依赖鼠标。这种高效的编辑方式在处理大规模文本和代码时尤为显著。
  • 灵活定制:Emacs的配置文件(或)允许用户根据个人习惯进行高度定制。无论是快捷键映射、插件配置还是外观设置,Emacs都能满足不同用户的需求。这种灵活性使得Emacs可以适应各种工作流和开发环境。
  • 跨平台一致性:Emacs可以在几乎所有操作系统上运行,包括Linux、macOS和Windows。这种跨平台一致性使得开发者可以在不同系统间无缝切换,而不需要重新学习新的编辑器。
  • 社区支持:Emacs有一个庞大而活跃的社区,提供了丰富的资源和支持。无论是遇到技术问题,还是寻找插件和配置建议,Emacs社区都能提供帮助。
  • 开发者必备技能:掌握Emacs不仅仅是一种技术技能,更是一种职业素养。许多开发者和运维人员都将Emacs作为其日常工具之一。熟练使用Emacs可以显著提高工作效率,增强在团队中的竞争力。

9.2 持续提升Emacs技能的建议

学习Emacs是一个不断探索和实践的过程,以下是一些持续提升Emacs技能的建议

  • 不断练习:通过日常使用和练习,熟练掌握Emacs的各种命令和操作。每天花一些时间在Emacs中进行实际操作,将所学知识应用到实际项目中,可以逐步提升自己的Emacs技能。
  • 参与社区:加入Emacs社区,与其他用户交流经验,获取最新的使用技巧和插件推荐。以下是一些有用的社区和资源
  • Stack Overflow:解决Emacs相关问题的活跃社区。在这里可以找到大量的Emacs使用问题和解决方案。
  • Reddit:r/emacs子论坛,讨论和分享Emacs的使用经验。
  • Emacs邮件列表:获取最新的Emacs开发动态和讨论。
  • 探索插件:不断尝试和使用新的插件,扩展Emacs的功能,提升编辑效率。以下是一些推荐的插件
  • Projectile:项目管理工具,帮助管理和导航大型项目。
  • Magit:Git集成工具,提供强大的版本控制功能。
  • Helm:强大的补全和搜索框架,提升导航和操作效率。
  • Company:代码补全框架,支持多种编程语言的智能补全。
  • Flycheck:现代语法检查工具,支持多种编程语言的语法和错误检查。
  • 参加培训和阅读资料:参加Emacs相关的培训课程,阅读Emacs的书籍和文档,可以系统性地提升Emacs技能。以下是一些推荐的资源
  • Learn Emacs Lisp in 15 Minutes:一本免费的在线书籍,详细介绍了Emacs Lisp编程。
  • Practical Emacs:一本详细介绍Emacs使用技巧和实践的书籍,适合进阶用户。
  • 加入在线课程和工作坊:许多在线平台和社区提供Emacs的课程和工作坊,通过这些课程可以系统地学习Emacs的各项功能和高级技巧。在线平台如Udemy、Coursera、Pluralsight等都有高质量的Emacs课程。
  • 记录和分享:在学习和使用Emacs的过程中,记录自己的学习笔记和配置文件,并与他人分享。这不仅可以帮助自己巩固所学知识,还能帮助其他学习者。可以通过博客、GitHub等平台分享自己的经验和配置。

本文地址:http://www.xhstdz.com/quote/767.html    物流园网 http://www.xhstdz.com/ , 查看更多

特别提示:本信息由相关企业自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关行业动态
推荐行业动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号