# 3.Linux 文本编辑器

# 1.vim 编辑器的基本操作

1.1 文本编辑器介绍

文本编辑器的作用:Linux 系统中的配置文件以文本文件的形式保存,Linux 管理员需要通过编辑配置文件进行系统管理
文本编辑器的分类:行编辑器与全屏幕编辑器,字符界面编辑器与图形界面编辑器
vim:Vim 是一个高度可配置的、跨平台的、高效率的文本编辑器,大多数 Linux 系统中缺省使用的文本编辑器。
Emacs: 用于编辑程序源代码文件的文本编辑器
nano: 在字符界面提供了菜单操作,易用性较好
gedit:GNOME 图形环境中的文本编辑器

1.2 vim 编辑器的三个模式
命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作
输入模式:正常的文本录入
末行模式:保存或退出文档,以及设置编辑环境

1.3 vim 编辑器的启动和退出
vim 编辑器的启动:
直接进入编辑环境 $ vi
进入编辑环境并打开(新建)文件 $ vi myfile
vim 编辑器的退出:
退出 vi 编辑环境
:q 退出
:wq 保存退出
输入末行命令放弃对文件的修改,并退出编辑器 :q!

1.4 文件的打开和读取
打开新文件:
打开新的文件到 vi 编辑器中 :e filename
打开新的文件到 vi 编辑器中,并放弃对当前文件的修改 :e! filename

读取其他文件:读取文件内容到当前 vi 编辑器中 :r filename

1.5 文件保存与另存为

保存对 vi 编辑器中已打开文件的修改 :w
将 vi 编辑器中的内容另存为指定文件名 :w myfile

# 2. 输入模式常见操作

2.1 进入输入模式
vim 编辑器有三个模式,利用命令进入到 vim 编辑器中初始面对的是命令模式,命令模式无法对当前文件进行输入操作,必须进入输入模式才能进行文本的输入。进入的方法是按键盘上的 i、a、o 这几个键。

命令功能
i在当前光标处进入插入状态
a在当前光标后进入插入状态
A将光标移动到当前行的行末,并进入插入状
o在当前行的下面插入新行,光标移动到新行的行首,进入插入状态
O在当前行的上面插入新行,光标移动到新行的行首,进入插入状态

2.2 输入模式的编辑操作

按键功能
方向键进行上下左右方向的光标移动
Home快速定位光标到行首
End快速定位光标到行尾
PageUp进行文本的向上翻页
PageDown进行文本的向下翻页
Backspace删除光标左侧的字符
Del删除光标位置的字符

# 3. 命令模式常见操作

3.1 命令模式的基本操作
输入 vi 命令后,便进入全屏幕编辑环境,此时的状态为命令模式。在命令模式下,我们可以输入一些命令,但是当你点击键盘上相应键输入命令时,这些命令只会呈现最终的效果,不会在编辑器界面上显示出命令的字符。

3.2 行内快速跳转

操作键功能
^将光标快速跳转到本行的行首字符 home
$将光标快速跳转到本行的行尾字符 end
w将光标快速跳转到当前光标所在位置的后一个单词的首字母
b将光标快速跳转到当前光标所在位置的前一个单词的首字母
e将光标快速跳转到当前光标所在位置的后一个单词的尾字母
方向键进行上下左右方向的光标移动
Home快速定位光标到行首
End快速定位光标到行尾

3.3 行间快速跳转

命令功能
:set nu在编辑器中显示行号
:set nonu取消编辑器中的行号显示
1G跳转到文件的首行
G跳转到文件的末尾行
#G跳转到文件中的第 #行
PageUp进行文本的向上翻页
PageDown进行文本的向下翻页

# 4.vim 编辑器的删除与撤销

4.1 文件内容的删除

命令功能
x删除光标处的单个字符 = delete
dd删除光标所在行 5dd 可以删除 5 行内容
dw删除当前字符到单词尾(包括空格)的所有字符
de删除当前字符到单词尾(不包括单词尾部的空格)的所有字符
d$删除当前字符到行尾的所有字符
d^删除当前字符到行首的所有字符
J删除光标所在行行尾的换行符,相当于合并当前行和下一行的内容

4.2 文件内容的撤销

命令功能
u取消最近一次的操作,并恢复操作结果可以多次使用 u 命令恢复已进行的多步操作
U取消对当前行进行的所有操作
Ctrl+r对使用 u 命令撤销的操作进行恢复

# 5.vim 编辑器的复制与粘贴

单行复制:在命令模式下,将光标移动到将要复制的行处,按 “yy” 进行复制;
多行复制:在命令模式下,将光标移动到将要复制的首行处,按 “nyy” 复制 n 行;其中 n 为数字。
粘贴:在命令模式下,将光标移动到将要粘贴的行处,按 “p” 进行粘贴

命令功能
yy复制当前行整行的内容到 vi 缓冲区 5yy 从当前行开始复制 5 行
yw复制当前光标到单词尾字符的内容到 vi 缓冲区
y$复制当前光标到行尾的内容到 vi 缓冲区
y^复制当前光标到行首的内容到 vi 缓冲区
p读取 vi 缓冲区中的内容,并粘贴到光标当前的位置(不覆盖文件已有的内容)

# 6.vim 编辑器的查找与替换

6.1 文件内容的查找
vi 提供了几种定位查找一个指定的字符串在文件中位置的方法。同时还提供一种功能强大的全局替换功能。
为查找一个字符串,在 vi 命令模式下键入 “/”,后面跟要查找的字符串,再按回车。vi 将光标定位在该串下一次出现的地方上。键入 n 跳到该串的下一个出现处,键入 N 跳到该串的上一个出现处。

命令功能
/word从上而下在文件中查找字符串 “word”
?word从下而上在文件中查找字符串 “word”
n定位下一个匹配的被查找字符串
N定位上一个匹配的被查找字符串

6.2 文件内容的替换

命令功能
😒/old/new将当前行中查找到的第一个字符 “old” 串替换为 “new”
😒/old/new/g将当前行中查找到的所有字符串 “old” 替换为 “new”
:#,#s/old/new/g在行号 “#,#” 范围内替换所有的字符串 “old” 为 “new”
:%s/old/new/g在整个文件范围内替换所有的字符串 “old” 为 “new”
😒/old/new/c在替换命令末尾加入 c 命令,将对每个替换动作提示用户进行确认
-->