跳到主要内容

文本编辑器

在实际学习开发中,除了 Linux 方面的知识,经常需要修改系统配置文件和编辑代码。熟练使用编辑器工具可以帮助开发者提高开发速度和编程效率。本章节将介绍 Vi 和 Nano 编辑器。这些工具已经默认安装在 Lyra 上,用户可以直接使用。

1. Nano 编辑器

Nano 是一个简单易用的终端文本编辑器,适合初学者或对编辑器定制需求较少的开发者。它提供了基本的编辑功能,如插入、删除、复制和粘贴等,同时具有简单的界面和易于上手的操作方式。Nano 对于快速编辑或修复代码以及编辑配置文件等小型任务非常方便。虽然 Nano 的功能相对较简单,但由于其简洁性和易用性,它在某些场景下仍然是开发者的首选。

在终端启动输入 nano 即可启动 nano 编辑器或者你也可以在命令后面加上一个文件的路径来打开一个特定的文件。如果这个文件不存在,它就会被创建,例如,在树莓派终端输入 sudo nano luckfox.txt 打开后就可以像记事本一样编辑文档。

  1. 顶端这一行显示 nano 编辑器的版本和正在编辑的当前文件名。底部两行显示最常用的编辑器中的快捷键,^ 符号代表 Ctrl,M- 代表 Alt。
  2. 常用快捷键:
  • 文件管理

    Ctrl+S  保存
    Ctrl+O 另存为
    Ctrl+X 退出 nano
    Ctrl+R 在当前缓存区插入文件
    Ctrl+G 获取帮助
  • 编辑

    Alt+N   打开关闭行号
    Shift+ ↑ 或↓ 向上或向下选中
    Alt + 3 对所选行或区域进行注释或取消注释
    Alt + U 撤销
    Alt + E 恢复
  • 搜素

    Ctrl + Q 开始向后搜索
    Ctrl + W 开始向前搜索
    Alt + Q 向后搜索下一个匹配的文本
    Alt + W 向前搜索下一个匹配的文本

2. vi 编辑器

vi 是一个高度可定制的文本编辑器,广泛用于开发人员在终端环境下进行编码工作。vi 具有强大的编辑功能和广泛的插件生态系统,使得开发者可以高效地编辑和组织代码。vi 支持多种编程语言,并提供了丰富的快捷键和命令,使得开发者能够快速导航、编辑和调试代码。由于其高度可定制性和强大的功能,vi 在开发者中享有广泛的应用和高度的地位。以下只是简单地介绍一下它的用法和常用命令。

为了方面使用,一般在 vi 配置文件后面添加下面三句:

set nu        # 显示行号
syntax on # 语法高亮
set tabstop=4 #tab 退四格

2.1 vi 模式

基 本 上 vi 共 分 为 三 种 模 式, 分 别 是 命 令 模 式(Command mode), 输 入 模 式(Insert mode)和底线命令模式(Last line mode):

  • 命令模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段。
  • 输入模式:在此模式下输入字符,编辑文件。
  • 底线模式:将文件保存或退出 vi,也可以设置编辑环境,如寻找字符串、列出行号等。

我们可以将这三个模式想成底下的图标来表示:

2.2 常用命令

  1. 打开文件、保存、关闭文件(vi 命令模式下使用):

    vi filename打开 filename 文件
    :w保存文件
    :q退出编辑器,如果文件已修改请使用下面的命令
    :q!退出编辑器,且不保存
    :wq退出编辑器,且保存文件
    :wq!强制退出编辑器,且保存文件
    ZZ退出编辑器,且保存文件
    ZQ退出编辑器,且不保存
  2. 插入文本或行(vi 命令模式下使用,执行下面命令后将进入插入模式,按 ESC 键可退出插入模式):

    a在当前光标位置的右边添加文本
    i在当前光标位置的左边添加文本
    A在当前行的末尾位置添加文本
    I在当前行的开始处添加文本(非空字符的行首)
    O在当前行的上面新建一行
    o在当前行的下面新建一行
    R替换(覆盖)当前光标位置及后面的若干文本
    J合并光标所在行及下一行为一行(依然在命令模式)
  3. 删除、恢复字符或行(vi 命令模式下使用):

    x删除当前字符
    nx删除从光标开始的 n 个字符
    dd删除当前行
    ndd向下删除当前行在内的 n 行
    u撤销上一步操作
    U撤销对当前行的所有操作
  4. 复制、粘贴(vi 命令模式下使用):

    yy将当前行复制到缓存区
    nyy将当前行向下 n 行复制到缓冲区
    yw复制从光标开始到词尾的字符
    nyw复制从光标开始的 n 个单词
    y^复制从光标到行首的内容
    y$复制从光标到行尾的内容
    p粘贴剪切板里的内容在光标后
    P粘贴剪切板里的内容在光标前