前言
在Linux的世界里,文本编辑器是每位开发者、运维人员最亲密的伙伴。无论你是编写代码、修改配置文件,还是记录笔记,都离不开一款趁手的编辑器。
今天,我们将系统学习Linux中最核心的两类编辑器——Vim(专业级)和Nano(轻量级),并补充掌握Shell命令中echo、管道符、重定向和文件合并等实用技巧。这些都是日常工作中最常用到的技能。
本文将通过在Xshell中的实际操作,带你一步步掌握每个命令的用途、用法和实操技巧,并建立清晰的知识框架体系。所有截图要求统一列在文末,方便你一次性完成。
第一部分:Vim编辑器——编辑器之神
一、Vim编辑器简介
1.1 什么是Vim?
Vim(Vi Improved)是Unix/Linux系统中最著名的文本编辑器之一,它是Vi编辑器的增强版本。Vim采用控制台图形模式来模拟文本编辑窗口,允许用户查看文件中的行、在文件中移动、插入、编辑和替换文本。
Vim被誉为"编辑器之神",以其高效、强大、可扩展而闻名。虽然学习曲线较陡,但一旦掌握,编辑效率将远超普通编辑器。
1.2 安装Vim
在Ubuntu发行版中,可能需要先安装Vim:
bash
安装Vim
sudo apt-get install vim
查看Vim软件包的位置
which vim
查看Vim的详细信息
ls -l /usr/bin/vim
1.3 基本用法
bash
使用Vim打开(或创建)文件
vim filename
如果指定的是一个不存在的文件名,Vim会开辟一段新的缓冲区域来编辑,编辑完保存后相当于新建了一个文件。
如果指定的是一个已有文件的名字,Vim会读取该文件的所有内容,放到一段缓冲区域中来准备编辑。
二、Vim的三种模式
Vim的核心在于它的模式驱动设计,它有三种主要模式:
模式 说明 如何进入
普通模式 将按键解释为命令,用于移动光标、删除、复制等操作 刚打开文件时默认进入;按ESC从其他模式返回
插入模式 在光标位置输入文本,类似记事本输入 按i、a、o等键
命令行模式 输入额外命令控制Vim行为(保存、退出、替换等) 在普通模式下按:(英文冒号)
💡 核心口诀:普通模式管命令,插入模式管打字,命令行模式管保存。
2.1 普通模式——光标移动命令
在普通模式下,可以用方向键移动光标。Vim也提供了专用的字符移动命令:
命令 功能
h 左移一个字符
j 下移一行
k 上移一行
l 右移一个字符
PageDown 或 Ctrl+F 下翻一屏
PageUp 或 Ctrl+B 上翻一屏
G 移到缓冲区的最后一行
gg 移到缓冲区的第一行
2.2 插入模式——进入与退出
命令 功能
i 在光标当前位置进入插入模式
a 在光标当前位置之后进入插入模式
o 在光标所在行的下方新建一行并进入插入模式
ESC 退出插入模式,返回普通模式
2.3 命令行模式——保存与退出
在普通模式下按:进入命令行模式,常用命令如下:
命令 功能
:q 如果未修改缓冲区数据,退出;如有修改则提示
:q! 取消所有修改并强制退出(不保存)
:w filename 将文件保存到指定文件名
:wq 保存并退出
:wq! 保存并强制退出
三、Vim高级操作
3.1 删除、剪切与粘贴
Vim中删除命令会将被删除的文本保存在缓存中,可以通过p命令取回(实现剪切效果)。
命令 功能
x 删除光标所在位置的字符
2x 删除从光标位置开始的两个字符
dd 删除光标所在行
5dd 删除从光标当前所在行开始的5行
p 将缓存中的文本粘贴到光标当前位置之后
剪切操作示例:
bash
dd # 删除一行文本(同时存入缓存)
(移动光标到目标位置)
p # 将删除的文本粘贴到光标位置之后(实现了剪切)
3.2 复制与粘贴
Vim中的复制命令是y(yank,意为"猛拉",即复制)。
命令 功能
y 复制当前光标位置的字符
yw 复制一个单词
y$ 复制到行尾
yy 复制当前行
p 粘贴复制的内容
可视模式复制多行文本:
移动光标到要开始复制的位置,按下v键(进入可视模式)
移动光标覆盖要复制的文本(文本会高亮显示)
按y键复制
移动光标到目标位置,按p键粘贴
3.3 查找文本
在普通模式下,按/键进入查找模式:
bash
/待查找的文本 # 从光标位置开始向下查找
n # 查找下一个匹配项
N # 查找上一个匹配项
3.4 替换文本
在命令行模式(按:)下使用替换命令:
命令 功能
😒/old/new/ 替换当前行中第一个"old"为"new"
😒/old/new/g 替换当前行中的所有"old"为"new"
:n,ms/old/new/g 替换行号n和m之间所有"old"为"new"
:%s/old/new/g 替换整个文件中的所有"old"为"new"
:%s/old/new/gc 替换整个文件中的所有"old"为"new",每次出现时提示确认
第二部分:Nano编辑器——轻量之选
四、Nano编辑器简介
Nano是一个简单易用的控制台文本编辑器,适合快速编辑文件。对于Vim感到不适应的新手,Nano是很好的入门选择。
bash
使用Nano打开文件
nano filename
在Nano编辑器窗口的底部显示了各种控制命令:
快捷键 功能
Ctrl+X 退出(如有修改会提示保存)
Ctrl+O 保存文件
Ctrl+G 显示帮助信息
Ctrl+K 剪切当前行
Ctrl+U 粘贴
💡 提示:脱字符表示Ctrl键,X表示Ctrl+X。
第三部分:Shell命令补充
五、echo——输出文本与变量
echo命令用于在终端中显示文本或变量的值。
主要用途:
在终端显示文本信息
输出变量的值
生成格式化的字符串
向文件追加内容
实操演示:
bash
输出普通文本
echo “Hello, Linux!”
输出变量的值(必须使用双引号)
name=“ZhangSan”
echo "KaTeX parse error: Expected 'EOF', got '#' at position 16: name" #̲ 输出:ZhangSan ec…name’ # 输出:$name(单引号不会解析变量)
输出带格式的文本
echo -e “Line1\nLine2” # -e启用转义字符,\n换行
向文件追加内容
echo “New line content” >> file.txt
覆盖文件内容
echo “New content” > file.txt
⚠️ 注意:若要正常输出变量的值,必须使用双引号("),不能用单引号(')。
六、管道符(|)
管道符|用于将一个命令的输出作为另一个命令的输入,实现命令的串联。
基本格式:
bash
command1 | command2 | command3
实操演示:
bash
将echo的输出通过管道传给grep进行筛选
echo -e “apple\nbanana\napple\norange” | grep apple
查看进程并筛选
ps aux | grep sshd
查看历史命令并筛选
history | grep vim
组合使用:列出文件并统计行数
ls -l | wc -l
七、重定向(>、>>、<)
重定向用于改变命令的输入和输出方向。
7.1 输出重定向(> 和 >>)
符号 功能
将输出重定向到文件,覆盖原有内容
将输出追加到文件末尾
2> 将错误输出重定向到文件
实操演示:
bash
覆盖写入文件
echo “First line” > test.txt
cat test.txt # 输出:First line
追加内容到文件
echo “Second line” >> test.txt
cat test.txt # 输出:First line\nSecond line
将命令输出保存到文件
ls -l > file_list.txt
错误输出重定向
ls /nonexistent 2> error.log
7.2 输入重定向(<)
<用于将文件内容作为命令的输入。
实操演示:
bash
将文件内容作为sort的输入
sort < nums.txt
将文件内容作为grep的输入
grep “ERROR” < test.log
将文件内容作为cat的输入
cat < test.txt
💡 提示:输入重定向也可以用管道符实现:cat file.txt | command。
八、文件合并
8.1 paste——列对列合并
paste命令将多个文件按列对列的方式合并。
实操演示:
bash
创建两个测试文件
echo -e “Tom\nJerry\nAlice” > names.txt
echo -e “25\n22\n27” > ages.txt
列对列合并
paste names.txt ages.txt
输出:
Tom 25
Jerry 22
Alice 27
使用指定分隔符
paste -d ‘,’ names.txt ages.txt
输出:
Tom,25
Jerry,22
Alice,27
8.2 join——按共同列合并
join命令将多个文件中有相同特征的列进行合并(类似于数据库中的JOIN操作)。
实操演示:
bash
创建两个测试文件
echo -e “1 Tom\n2 Jerry\n3 Alice” > id_names.txt
echo -e “1 25\n2 22\n3 27” > id_ages.txt
按第一列(ID)合并
join id_names.txt id_ages.txt
输出:
1 Tom 25
2 Jerry 22
3 Alice 27
第四部分:知识框架体系
📝 Vim编辑器知识框架
text
Vim编辑器
├── 三种模式
│ ├── 普通模式(命令模式)
│ │ ├── 光标移动:h j k l / gg G / Ctrl+F Ctrl+B
│ │ ├── 删除:x dd
│ │ ├── 复制:y yw yy
│ │ ├── 粘贴:p
│ │ └── 查找:/ 文本
│ ├── 插入模式(编辑模式)
│ │ ├── i → 当前位置插入
│ │ ├── a → 当前位置之后插入
│ │ └── o → 下一行插入
│ └── 命令行模式(按:进入)
│ ├── :w 保存
│ ├── :q 退出
│ ├── :wq 保存并退出
│ ├── :q! 强制退出(不保存)
│ └── :%s/old/new/g 全局替换
└── 高级操作
├── 可视模式(v)→ 选择文本 → y复制
├── 查找:/pattern → n下一个
└── 替换:😒/old/new/ 范围
📊 Shell补充命令框架
text
Shell补充命令
├── echo(输出)
│ ├── echo “文本” → 输出文本
│ ├── echo “$变量” → 输出变量值(双引号)
│ └── echo “内容” >/>> 文件 → 写入/追加文件
├── 管道符(|)
│ └── command1 | command2 → 前者输出作为后者输入
├── 重定向
│ ├── > → 覆盖写入
│ ├── >> → 追加写入
│ ├── 2> → 错误输出重定向
│ └── < → 输入重定向
└── 文件合并
├── paste → 列对列合并
└── join → 按共同列合并(类似数据库JOIN)
第五部分:练习题(必做)
以下练习题来自PPT要求,请务必完成。
任务:使用Vim编辑器创建一个.txt文本文件,文件每一行内容参考下图格式(可自行仿照创建),执行如下操作:
学习如何进入和退出编辑模式
学习如何保存文本
查找文本中的所有old字符
替换文件中old为test(以及只在特定行中进行替换)
参考操作流程:
bash
1. 创建并打开文件
vim test.txt
2. 按 i 键进入插入模式,输入以下内容:
old is good
I like old things
old friends are best
This is the fourth line
old memories
3. 按 ESC 键退出插入模式
4. 保存文件:按 : 进入命令行模式,输入 wq
5. 重新打开文件进行查找
vim test.txt
6. 在普通模式下按 /,输入 old,回车查找
7. 按 n 继续查找下一个
8. 替换:按 : 进入命令行模式
全局替换::%s/old/test/g
特定行替换::1,3s/old/test/g
第六部分:截图清单