「Linux文件及目录管理」vi、vim编辑器

101 阅读6分钟

知识点解析

vi/vim编辑器简介

  • vi:Linux默认的文本编辑器,基于命令行操作,功能强大。
  • vim:vi的增强版,支持语法高亮、多窗口编辑、插件扩展等功能。

vi/vim基本模式

  • 命令模式:默认模式,用于移动光标、复制、粘贴、删除等操作。
  • 插入模式:按i进入,用于输入文本。
  • 末行模式:按:进入,用于保存文件、退出编辑器、执行命令等。

常用命令

  • 移动光标h(左)、j(下)、k(上)、l(右),或使用方向键。
  • 插入文本i(当前光标前插入)、a(当前光标后插入)、o(下一行插入)、O(上一行插入)。
  • 删除文本x(删除当前字符)、dd(删除当前行)、dG(删除当前行到文件末尾)、d$(删除当前光标到行尾)。
  • 复制与粘贴yy(复制当前行)、p(粘贴)、P(在光标前粘贴)、y$(复制当前光标到行尾)。
  • 保存与退出:w(保存)、:q(退出)、:wq(保存并退出)、:q!(强制退出不保存)、:wq!(强制保存并退出)。
  • 搜索与替换/keyword(搜索关键词)、:s/old/new/g(全局替换)、:%s/old/new/g(全局替换所有文件中的匹配项)。

案例代码与解析

案例:创建并编辑文件

# 使用vi创建并编辑文件example.txt
vi example.txt

操作步骤

  1. i进入插入模式,输入以下内容:
    Hello, Linux!
    This is a vi editor tutorial.
    Let's learn some basic commands.
    
  2. Esc退出插入模式,进入命令模式。
  3. 输入:wq保存并退出。

解析

  • vi example.txt:打开或创建文件。
  • i:进入插入模式。
  • Esc:退出插入模式。
  • :wq:保存并退出。

案例:复制与粘贴文本

# 打开文件example.txt
vi example.txt

操作步骤

  1. 将光标移动到第一行。
  2. yy复制当前行。
  3. 将光标移动到文件末尾,按p粘贴。
  4. 再次按p粘贴,复制两行相同的文本。
  5. 输入:wq保存并退出。

解析

  • yy:复制当前行。
  • p:粘贴复制的内容。

案例:搜索与替换文本

# 打开文件example.txt
vi example.txt

操作步骤

  1. 输入/Linux搜索关键词“Linux”。
  2. n跳转到下一个匹配项。
  3. 输入:s/Linux/UNIX/g将同一行内所有“Linux”替换为“UNIX”。
  4. 输入:%s/Linux/UNIX/g将全文中所有“Linux”替换为“UNIX”。
  5. 输入:wq保存并退出。

解析

  • /Linux:搜索关键词。
  • n:跳转到下一个匹配项。
  • :s/old/new/g:全局替换(同一行内所有匹配项)。
  • %:s/old/new/g:全文替换。

案例:删除多行文本

# 打开文件example.txt
vi example.txt

操作步骤

  1. 将光标移动到要删除的第一行。
  2. 输入5dd删除当前行及接下来的4行(共5行)。
  3. 输入:wq保存并退出。

解析5dd:删除5行文本。

案例:分屏操作

# 打开vi并分屏显示example.txt和newfile.txt
vi -o example.txt newfile.txt

操作步骤

  1. 输入:next切换到newfile.txt
  2. newfile.txt中输入一些文本。
  3. 输入:prev切换回example.txt
  4. 输入:wqall保存并退出所有文件。

解析

  • vi -o file1 file2:水平分屏打开两个文件。
  • :next:切换到下一个文件。
  • :prev:切换到上一个文件。
  • :wqall:保存并退出所有文件。

常见错误与解决方法

错误:进入vi后无法输入文本。
解决方法:按i进入插入模式。

错误:修改文件后无法保存,提示“E212: Can't open file for writing”。 解决方法

  • 确保有文件写入权限,或使用:w!强制保存(如果权限允许)。
  • 如果文件是只读的,可以使用:w newfile.txt保存到新文件。

错误:误删除重要文本。
解决方法

  • 如果未保存,可以按u撤销操作。
  • 如果已保存,可以从备份恢复或使用版本控制工具(如git)。

错误:在vi中打开多个文件后,不知道如何切换。
解决方法

  • 使用:next切换到下一个文件,:prev切换到上一个文件。
  • 使用:ls查看当前打开的文件列表。

理论练习

题目:如何在vi中搜索关键词“error”,并跳转到下一个匹配项?
答案:按/error进入搜索模式,输入关键词后按Enter,按n跳转到下一个匹配项。

题目:如何在vi中将当前行复制并粘贴到下一行两次?
答案:按yy复制当前行,按p粘贴到下一行,再次按p粘贴。

题目:如何在vi中全文替换“old”为“new”?
答案:输入:%s/old/new/g并按Enter

题目:如何在vi中分屏显示两个文件,并切换到另一个文件?
答案:使用vi -o file1 file2打开两个文件,输入:next切换到另一个文件。

实操练习

任务:使用vi创建文件test.txt,并输入以下内容:

Line 1: This is the first line.
Line 2: This is the second line.
Line 3: This is the third line.

答案

vi test.txt
# 按i进入插入模式,输入上述内容
# 按Esc退出插入模式,输入:wq保存并退出

任务:在test.txt中搜索关键词“second”,并将其替换为“SECOND”。
答案

vi test.txt
# 按/second搜索关键词
# 按Enter确认,输入:s/second/SECOND/g并Enter替换
# 按:wq保存并退出

任务:在test.txt中删除第二行,并在文件末尾添加一行新文本“Line 4: This is the fourth line.”。
答案

vi test.txt
# 将光标移动到第二行,按dd删除
# 将光标移动到文件末尾,按o进入插入模式,输入新文本
# 按Esc退出插入模式,输入:wq保存并退出

任务:在test.txt中复制第一行并粘贴到文件末尾两次。
答案

vi test.txt
# 将光标移动到第一行,按yy复制
# 将光标移动到文件末尾,按p粘贴,再次按p粘贴
# 按:wq保存并退出

任务:使用vi同时打开test.txtexample.txt,在test.txt中添加一行文本“Line 5: Learning vi is fun!”,然后切换到example.txt,在文件末尾添加一行文本“Learning vi is powerful!”,最后保存并退出所有文件。
答案

vi -o test.txt example.txt
# 在test.txt中,将光标移动到文件末尾,按o进入插入模式,输入新文本
# 按Esc退出插入模式,输入:next切换到example.txt
# 在example.txt中,将光标移动到文件末尾,按o进入插入模式,输入新文本
# 按Esc退出插入模式,输入:wqall保存并退出所有文件

知识总结

  1. vi/vim基本模式:命令模式、插入模式、末行模式。
  2. 常用命令:移动光标、插入文本、删除文本、复制粘贴、保存退出、搜索替换。
  3. 高级功能:多文件编辑、分屏操作、语法高亮(需配置)、插件扩展。