Vim编辑器完全指南与Shell命令补充:从零到实战
前言在Linux的世界里文本编辑器是每位开发者、运维人员最亲密的伙伴。无论你是编写代码、修改配置文件还是记录笔记都离不开一款趁手的编辑器。今天我们将系统学习Linux中最核心的两类编辑器——Vim专业级和Nano轻量级并补充掌握Shell命令中echo、管道符、重定向和文件合并等实用技巧。这些都是日常工作中最常用到的技能。本文将通过在Xshell中的实际操作带你一步步掌握每个命令的用途、用法和实操技巧并建立清晰的知识框架体系。所有截图要求统一列在文末方便你一次性完成。第一部分Vim编辑器——编辑器之神一、Vim编辑器简介1.1 什么是VimVimVi Improved是Unix/Linux系统中最著名的文本编辑器之一它是Vi编辑器的增强版本。Vim采用控制台图形模式来模拟文本编辑窗口允许用户查看文件中的行、在文件中移动、插入、编辑和替换文本。Vim被誉为编辑器之神以其高效、强大、可扩展而闻名。虽然学习曲线较陡但一旦掌握编辑效率将远超普通编辑器。1.2 安装Vim在Ubuntu发行版中可能需要先安装Vimbash安装Vimsudo apt-get install vim查看Vim软件包的位置which vim查看Vim的详细信息ls -l /usr/bin/vim1.3 基本用法bash使用Vim打开或创建文件vim filename如果指定的是一个不存在的文件名Vim会开辟一段新的缓冲区域来编辑编辑完保存后相当于新建了一个文件。如果指定的是一个已有文件的名字Vim会读取该文件的所有内容放到一段缓冲区域中来准备编辑。二、Vim的三种模式Vim的核心在于它的模式驱动设计它有三种主要模式模式 说明 如何进入普通模式 将按键解释为命令用于移动光标、删除、复制等操作 刚打开文件时默认进入按ESC从其他模式返回插入模式 在光标位置输入文本类似记事本输入 按i、a、o等键命令行模式 输入额外命令控制Vim行为保存、退出、替换等 在普通模式下按:英文冒号 核心口诀普通模式管命令插入模式管打字命令行模式管保存。2.1 普通模式——光标移动命令在普通模式下可以用方向键移动光标。Vim也提供了专用的字符移动命令命令 功能h 左移一个字符j 下移一行k 上移一行l 右移一个字符PageDown 或 CtrlF 下翻一屏PageUp 或 CtrlB 上翻一屏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 将缓存中的文本粘贴到光标当前位置之后剪切操作示例bashdd # 删除一行文本同时存入缓存移动光标到目标位置p # 将删除的文本粘贴到光标位置之后实现了剪切3.2 复制与粘贴Vim中的复制命令是yyank意为猛拉即复制。命令 功能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编辑器窗口的底部显示了各种控制命令快捷键 功能CtrlX 退出如有修改会提示保存CtrlO 保存文件CtrlG 显示帮助信息CtrlK 剪切当前行CtrlU 粘贴 提示脱字符表示Ctrl键X表示CtrlX。第三部分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⚠️ 注意若要正常输出变量的值必须使用双引号不能用单引号。六、管道符|管道符|用于将一个命令的输出作为另一个命令的输入实现命令的串联。基本格式bashcommand1 | 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.txtcat test.txt # 输出First line追加内容到文件echo “Second line” test.txtcat test.txt # 输出First line\nSecond line将命令输出保存到文件ls -l file_list.txt错误输出重定向ls /nonexistent 2 error.log7.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.txtecho -e “25\n22\n27” ages.txt列对列合并paste names.txt ages.txt输出Tom 25Jerry 22Alice 27使用指定分隔符paste -d ‘,’ names.txt ages.txt输出Tom,25Jerry,22Alice,278.2 join——按共同列合并join命令将多个文件中有相同特征的列进行合并类似于数据库中的JOIN操作。实操演示bash创建两个测试文件echo -e “1 Tom\n2 Jerry\n3 Alice” id_names.txtecho -e “1 25\n2 22\n3 27” id_ages.txt按第一列ID合并join id_names.txt id_ages.txt输出1 Tom 252 Jerry 223 Alice 27第四部分知识框架体系 Vim编辑器知识框架textVim编辑器├── 三种模式│ ├── 普通模式命令模式│ │ ├── 光标移动h j k l / gg G / CtrlF CtrlB│ │ ├── 删除x dd│ │ ├── 复制y yw yy│ │ ├── 粘贴p│ │ └── 查找/ 文本│ ├── 插入模式编辑模式│ │ ├── i → 当前位置插入│ │ ├── a → 当前位置之后插入│ │ └── o → 下一行插入│ └── 命令行模式按:进入│ ├── :w 保存│ ├── :q 退出│ ├── :wq 保存并退出│ ├── :q! 强制退出不保存│ └── :%s/old/new/g 全局替换└── 高级操作├── 可视模式v→ 选择文本 → y复制├── 查找/pattern → n下一个└── 替换/old/new/ 范围 Shell补充命令框架textShell补充命令├── echo输出│ ├── echo “文本” → 输出文本│ ├── echo “$变量” → 输出变量值双引号│ └── echo “内容” / 文件 → 写入/追加文件├── 管道符|│ └── command1 | command2 → 前者输出作为后者输入├── 重定向│ ├── → 覆盖写入│ ├── → 追加写入│ ├── 2 → 错误输出重定向│ └── → 输入重定向└── 文件合并├── paste → 列对列合并└── join → 按共同列合并类似数据库JOIN第五部分练习题必做以下练习题来自PPT要求请务必完成。任务使用Vim编辑器创建一个.txt文本文件文件每一行内容参考下图格式可自行仿照创建执行如下操作学习如何进入和退出编辑模式学习如何保存文本查找文本中的所有old字符替换文件中old为test以及只在特定行中进行替换参考操作流程bash1. 创建并打开文件vim test.txt2. 按 i 键进入插入模式输入以下内容old is goodI like old thingsold friends are bestThis is the fourth lineold memories3. 按 ESC 键退出插入模式4. 保存文件按 : 进入命令行模式输入 wq5. 重新打开文件进行查找vim test.txt6. 在普通模式下按 /输入 old回车查找7. 按 n 继续查找下一个8. 替换按 : 进入命令行模式全局替换:%s/old/test/g特定行替换:1,3s/old/test/g第六部分截图清单