1. 文本编辑器

在Linux系统中,文本编辑是日常操作和系统管理的核心需求之一,无论是修改系统配置文件、编写shell脚本,还是编辑普通文本文件,都需要用到文本编辑器。 Linux系统提供了多种文本编辑器,其中Vi/Vim、nano、gedit是最常用的三种, 分别适用于不同场景:Vi/Vim功能强大、支持终端操作,适合专业管理员和脚本开发者; nano操作简单、入门门槛低,适合新手快速编辑文件; gedit是图形化编辑器,界面友好,适合习惯图形化操作的用户。

本章将详细讲解这三种编辑器的安装方法、基础操作、核心功能及实操示例,帮助学习者根据自身需求选择合适的编辑器, 熟练掌握文本编辑技巧,提升Linux操作效率。

1.1. Vi/Vim编辑器

大部分Linux系统中都会自带Vi编辑器已方便用户在终端上编辑文件, 而Vim是Vi的升级版本,它在Vi的基础上进行了改进和增加了很多特性,是一个功能更强大、高度可定制的文本编辑器。 比如支持代码折叠、插件、多国语言支持、垂直分割视窗、拼字检查、上下文相关补完,标签页编辑等功能。 热爱Vim编辑器的用户,能把它玩出花来,甚至直接把它打造成IDE。

在对Linux服务器进行运维或控制嵌入式开发板的时候,绝大部分情况下我们只能使用终端, 而在终端编辑文件时使用Vi/Vim编辑器几乎是最好的选择, 所以即使它上手不易,但我们也绝不能逃避学习。对新手来说, 要求能熟练使用Vi/Vim编辑器对文件进行基本的读写修改。

1.1.1. Vi/Vim的安装

大多数Linux发行版默认已安装Vi/Vim,可通过以下命令验证是否安装及查看版本:

1
vim --version

若未安装,在Debian/Ubuntu系统下,可使用apt安装Vim编辑器,执行以下命令进行安装:

1
sudo apt install vim

1.1.2. 打开Vi/Vim

安装后使用vi或vim命令都可以打开,它们的基础使用方法是一样的:

1
2
vi       #若系统安装了vim,该命令会自动打开vim软件
vim      #打开vim软件

也可以使用如下命令创建或打开文件:

1
2
vi 文件名   #若文件存在则打开,文件不存在则创建
vim 文件名

1.1.3. 退出Vim

由于Vim是在终端下使用,没有图形界面的,所以对它的所有控制都只能通过命令来实现,包括退出,对于新手来说如何退出Vim都是个问题。

最简单粗暴的Vim退出方式是使用“Ctrl”+“z”直接强制退出。

此处我们通过Vim的命令行模式退出Vim的步骤来体验它的“一般模式”和“命令行模式”。

打开Vim后,请按如下步骤进行操作,注意若开启了输入法,要先把输入法设置成英文:

  1. 按下退出键“Esc”,Vim会进入到“一般模式”。

  2. 输入英文冒号“:”,Vim会进入到“命令行模式”。

  3. 输入强制退出命令“q!”,即字母“q”及英文叹号“!”。

  4. 按回车执行命令,会退出Vim,返回到终端。

执行时终端显示的内容如下图所示。

../../_images/editor3.png

1.1.4. 输入内容

初次使用Vim时,想要在编辑器输入内容也并非易事, Vim打开后默认是在“一般模式”的, 键盘的输入都会被当成一般命令而不是文本的内容,即在该模式下的所有输入就如同在其它常用编辑器中按了快捷键。 运气好按了进入“插入模式”的快捷键,后续的输入才会被当成文本内容。

可通过以下步骤进入到“插入模式”输入内容并保存文件:

  1. 按下退出键“Esc”进入“一般模式”。

  2. 输入一般命令“i”,即直接按字母“i”,进入“插入模式”,如下图所示。

  3. 随意输入一些内容。

  4. 按下退出键“Esc”再次进入“一般模式”。

  5. 输入英文冒号“:”,Vim会进入到“命令行”模式。

  6. 输入保存退出命令“wq”。

  7. 按回车执行命令,会退出Vim,返回到终端。

../../_images/editor4.png

1.1.5. Vim的三种模式

经过以上的使用演示,我们体验到了Vim编辑器的三种工作模式:

  • 一般模式(normal mode):一般模式用来浏览文本,查找内容,但是不可以编辑,在该模式下的键盘输入会被当成快捷键, 如复制粘贴等。打开Vim时,默认是工作在一般模式。

  • 插入模式(insert mode):插入模式下具有普通编辑器的功能,该模式下的键盘输入会被当成文本内容。

  • 命令行模式(command-line mode):命令行模式支持保存、退出、替换等命令,以及Vim的高级功能。

我们在使用Vim时,常常会在这三种模式之间进行切换,切换方式可以参考下图。

../../_images/editor018.png

上图的意义就是:

  • 在任意模式下,我们可以通过按键“Esc”进入到一般模式。

  • 在一般模式下,通过按键“a” “i” “o” “O” “r” “R”等可进入到插入模式。

  • 在一般模式下,通过按键“:”可进入到命令行模式。

1.1.5.1. 一般模式

打开Vim编辑器后,默认进入一般模式,该模式下无法直接输入文本,主要用于执行操作命令,如移动光标、复制、粘贴、删除、保存、退出等。

在任意模式下按按键“Esc”可进入到一般模式。

下表列出了一般模式下常用的快捷键,在一般模式下,可以进行复制,粘贴,删除,查找替换某个关键字等。

一般模式快捷键:

快捷键

功能描述

光标移动

k / ↑

光标向上移动

j / ↓

光标向下移动

h / ←

光标向左移动

l / →

光标向右移动

PageUp

向上翻页

PageDown

向下翻页

nG

跳转到第n行

gg

跳至文件开头

G

跳至文件末尾

0

跳至当前行开头

$

跳至当前行末尾

b

跳至上一个单词开头

w

跳至下一个单词开头

文本查找与替换

/word

在文件中搜索关键字word

n

查找下一个关键字

N

查找上一个关键字

:1,$s/word1/word2/gc

将文本中的所有关键字word1用word2进行替换,需要用户进行确认

撤销重做

u

撤销上一步的操作,等价于Windows的Ctrl+Z

Ctrl+r

重做上一步的操作

删除、剪切、复制、粘贴

d

删除光标所选的内容

dd

删除当前行

ndd

删除光标后n行

d0

删除光标所在位置至当前行开头的内容

d$

删除光标所在位置至当前行末尾的内容

x

剪切光标选中的字符

y

复制光标所选的内容

yy

复制当前行

nyy

复制当前行后n行

p

将复制的数据粘贴在当前行的下一行

P

将复制的数据粘贴在当前行的上一行

区块操作

v

选择多个字符

V

可以选择多行

ctrl+v

可以选择多列

1.1.5.2. 插入模式

Vim提供多个快捷键来从一般模式进入插入模式,见下表。进入插入模式之后,就可以正常地编辑文本了, 使用方向键来移动光标,回车键进行换行,操作方式与Windows记事本没有什么区别。

进入/退出插入模式的快捷键:

快捷键

功能描述

i

在当前光标所在位置插入文本

a

在当前光标所在位置的下一个字符插入文本

o

在光标所在位置后插入新行

r

替换当前光标所在位置的字符

R

可以替换当前光标所在位置之后的字符,按下“Esc”则退出

ESC

退出插入模式

1.1.5.3. 命令行模式

在一般命令模式下,按下键盘的冒号键“:”,就可以进入命令行模式,继续输入要执行的命令按回车即可执行。

命令行模式快捷键:

快捷键

功能描述

:w

保存文档

:w <filename>

另存为以<filename>为文件名的文档

:r <filename>

读取文件名为filename的文档

:q

直接退出软件,前提是文档未做任何修改

:q!

不保存修改,直接退出软件

:wq

保存文档,并退出软件

:set nu

在行首加入行号

:set nonu

不显示行号

:set hlsearch

搜索结果高亮显示

:! command

回到终端窗口,执行command命令,按回车键可切回vim

1.1.6. 用Vi/Vim编写shell脚本

到此为止,Vim的基本操作就介绍完了,最后我们尝试用Vim编写一个输出hello world的脚本,熟悉Vim的操作。

在终端中执行行下列命令:

1
vim hello_world.sh

然后进入插入模式(在一般模式下按“i”键),输入下列代码后, 保存文件并退出(退出插入模式,进入命令行模式后,输入wq并回车),注意以下内容全为英文符号。

1
2
3
#!/bin/bash

echo "helloworld,this is a script test!"

此脚本文件中的echo命令的作用是将其后面的文本内容直接输出到终端上。

../../_images/editor2.jpg

Vim退出后回到终端,添加执行权限并运行脚本文件:

1
2
3
4
5
6
7
8
#给予运行权限
sudo chmod u+x hello_world.sh

#运行脚本
./hello_world.sh

#信息输出如下
helloworld,this is a script test!

1.2. nano编辑器

nano是一款轻量级、操作简单的终端文本编辑器,与Vim相比,nano无需切换工作模式,打开后即可直接输入文本, 界面简洁、入门门槛极低,适合Linux新手、临时编辑文件,或不需要复杂功能的场景。 缺点是功能不如Vim全面,不适合复杂的代码编辑。

1.2.1. nano的安装

大多数Linux发行版默认已安装nano,可通过以下命令验证及安装:

1
nano --version

若未安装,在Debian/Ubuntu系统下,可使用apt安装nano编辑器,执行以下命令进行安装:

1
sudo apt update && sudo apt install nano -y

1.2.2. nano的基础操作

打开nano编辑器后,直接进入编辑模式,可直接输入文本,编辑器底部会显示常用快捷键提示(以^表示Ctrl键),打开与关闭nano操作如下:

  • 打开nano并编辑文件:nano 文件名,如nano test.txt,若文件不存在,会自动创建;

  • 关闭nano:按Ctrl + X,会提示是否保存文件,按Y(保存)或N(不保存),再按Enter确认退出。

Nano 编辑器常用快捷键主要通过 Ctrl(^)和 Alt(M-)组合实现,涵盖保存、退出、查找、复制、粘贴等操作。

  1. 基本操作快捷键:

  • 退出编辑器:Ctrl + X,若文件未保存,会提示是否保存更改;

  • 保存文件:Ctrl + O,可确认文件名和保存位置;

  • 显示帮助:Ctrl + G,列出所有快捷键及功能;

  • 新建缓冲区:Ctrl + R后输入文件路径,可打开或创建新文件。

  1. 文本查找与替换

  • 查找文本:Ctrl + W,输入要查找的内容后按 Enter;

  • 重复查找:Alt + W 或 Ctrl + W;

  • 向后查找:Ctrl + Q,重复向后查找Alt + Q;

  • 搜索并替换:Alt + R,按提示输入要替换的文本和目标文本,按Y替换当前实例,N跳到下一个,A替换所有;

  • 取消搜索/替换:Ctrl + C。

  1. 文本编辑与操作

  • 标记文本开始:Ctrl + 6,方向键选择文本后可进行复制或剪切;

  • 复制文本:Alt + 6,将选中的文本复制到剪贴板;

  • 剪切文本:Ctrl + K,剪切当前行或选中文本;

  • 粘贴文本:Ctrl + U,将剪贴板内容粘贴到光标位置;

  • 全选文本:先 Ctrl + 6 标记开始,再移动光标到末尾。

  1. 光标移动

  • 向左/右移动一个字符:Ctrl + B / Ctrl + F;

  • 向上/下移动一行:Ctrl + P / Ctrl + N;

  • 跳到文件开头/结尾:Ctrl + Y / Ctrl + V;

  • 跳到指定行:Ctrl + _,输入行号。

nano的快捷键均以Ctrl或Alt为组合键,底部提示栏已标注,新手可对照提示操作,无需刻意记忆。

1.2.3. 用nano编写shell脚本

到此为止,nano的基本操作就介绍完了,最后我们尝试用nano编写一个输出hello world的脚本,熟悉nano的操作。

  1. 在终端中执行行下列命令:

1
nano hello_world.sh
  1. 直接输入以下内容:

1
2
3
#!/bin/bash

echo "helloworld,this is a script test!"
  1. 编辑完成后,按Ctrl + O保存文件,按Enter确认文件名;

  2. 按Ctrl + X退出nano编辑器;

nano退出后回到终端,添加执行权限并运行脚本文件:

1
2
3
4
5
6
7
8
#给予运行权限
sudo chmod u+x hello_world.sh

#运行脚本
./hello_world.sh

#信息输出如下
helloworld,this is a script test!

1.3. gedit编辑器

gedit是GNOME桌面环境自带的图形化文本编辑器,界面友好、操作简单,与Windows系统的“记事本”功能类似, 支持图形化操作,如菜单、鼠标操作,同时具备语法高亮、自动缩进、插件扩展等功能,适合习惯图形化操作的用户, 或需要可视化编辑的场景。

gedit编辑器图形化界面、操作直观、支持语法高亮、可拖拽文件、支持多标签编辑,缺点是需要图形化桌面环境,无法在纯终端中使用。

1.3.1. gedit的安装

gedit默认安装在GNOME桌面环境中,若未安装,在Debian/Ubuntu系统下,可使用apt安装gedit编辑器,执行以下命令进行安装:

1
sudo apt update && sudo apt install gedit -y

1.3.2. gedit的基础操作

gedit的操作与Windows记事本、Word等图形化编辑工具类似,无需记忆复杂命令,通过鼠标和菜单即可完成所有操作,核心操作如下:

  1. 打开gedit

  • 图形化方式:点击桌面菜单“应用程序”→“附件”→“文本编辑器”;

  • 终端方式:执行gedit打开空白编辑器或gedit 文件名打开指定文件,如gedit test.sh。

  1. 创建新文件

打开gedit后,默认是空白文件,直接输入文本即可,或点击菜单栏“+”,创建新的空白标签页。

  1. 打开已有文件:

  • 点击菜单栏“打开”,在弹出的窗口中选择要打开的文件;

  • 直接将文件拖拽到gedit窗口中,即可打开该文件;

  • 终端中执行gedit 已有文件名,如gedit /home/cat/test.txt。

  1. 文本编辑操作

  • 输入文本:打开gedit后,直接使用键盘输入文本,按Enter换行,与普通记事本一致;

  • 光标移动:使用鼠标点击指定位置,或使用方向键移动光标;

  • 复制:鼠标拖拽选中要复制的文本,右键点击“复制”,或按Ctrl + C;

  • 粘贴:右键点击“粘贴”,或按Ctrl + V,将复制的内容粘贴到指定位置;

  • 删除文本:选中要删除的文本,按Delete键,或右键点击“删除”;

  • 撤销:点击菜单栏“编辑”→“撤销”,或按Ctrl + Z;

  • 恢复:点击菜单栏“编辑”→“恢复”,或按Ctrl + Shift + Z。

  1. 保存文件

  • 点击菜单栏“保存”,或按Ctrl + S;

  • 若为未保存过的新文件,会弹出“保存文件”窗口,选择保存路径、输入文件名,点击“保存”;

  • 另存为:点击菜单栏“文件”→“另存为”,或按Ctrl + Shift + S,可将文件保存为新的文件名或路径。

  1. 退出gedit

  • 点击窗口右上角的“x”按钮;

  • 按Ctrl + Q退出

  • 若文件有未保存的修改,会弹出提示窗口,选择“保存”“不保存”或“取消”。

1.3.3. 用gedit编写shell脚本

  1. 打开gedit:点击桌面菜单“应用程序”→“附件”→“文本编辑器”或者命令行终端输入gedit;

  2. 输入以下代码:

1
2
3
#!/bin/bash

echo "helloworld,this is a script test!"
  1. 保存文件右上角点击“保存”,选择保存路径,输入文件名test.sh,点击“保存”;

../../_images/editor021.jpg
  1. 点击窗口右上角的“x”按钮,完成编辑;

gedit退出后回到终端,添加执行权限并运行脚本文件:

1
2
3
4
5
6
7
8
#给予运行权限
sudo chmod u+x test.sh

#运行脚本
./test.sh

#信息输出如下
helloworld,this is a script test!