菜鸟科技网

Linux编辑文件命令vi如何使用?

Linux编辑文件命令vi是Linux系统中最为基础且强大的文本编辑工具之一,其名称源于“visual”的缩写,最初由Bill Joy在1976年开发,作为一款模式化的编辑器,vi通过不同的工作模式实现对文本的编辑、查找、替换等操作,虽然学习曲线较陡峭,但一旦掌握,便能高效完成各种文本处理任务,以下将从基本概念、操作模式、常用命令、高级技巧及注意事项等方面详细介绍vi的使用方法。

Linux编辑文件命令vi如何使用?-图1
(图片来源网络,侵删)

vi的基本概念与启动

vi编辑器分为三种主要模式:命令模式(Command Mode)、插入模式(Insert Mode)和末行模式(Last Line Mode),命令模式是vi的默认模式,用于执行光标移动、复制粘贴、删除等操作;插入模式用于直接输入文本;末行模式用于保存文件、退出编辑器以及执行搜索、替换等全局操作,启动vi编辑器的基本命令为vi 文件名,若文件不存在,则创建新文件;若文件已存在,则打开该文件。vi test.txt将打开或创建名为test.txt的文件,并进入命令模式。

vi的操作模式切换

理解三种模式之间的切换是掌握vi的关键,从命令模式进入插入模式,可通过以下按键实现:

  • i:在光标当前位置插入文本;
  • a:在光标后一个位置插入文本;
  • o:在当前行下方插入新行并进入插入模式;
  • O:在当前行上方插入新行并进入插入模式;
  • I:在当前行首插入文本;
  • A:在当前行尾插入文本。

从插入模式返回命令模式,需按下Esc键,从命令模式进入末行模式,需输入(冒号),此时vi底部会出现命令行提示,输入相应命令后按回车执行。w保存文件,q退出编辑器,wq保存并退出。

命令模式下的常用操作

命令模式是vi的核心操作模式,以下为常用命令及其功能:

Linux编辑文件命令vi如何使用?-图2
(图片来源网络,侵删)

光标移动

  • h:光标左移一个字符;
  • j:光标下移一行;
  • k:光标上移一行;
  • l:光标右移一个字符;
  • w:光标移动到下一个单词首部;
  • b:光标移动到上一个单词首部;
  • e:光标移动到当前单词尾部;
  • 0(数字零):光标移动到当前行首;
  • 光标移动到当前行尾;
  • gg:光标移动到文件首部;
  • G:光标移动到文件尾部;
  • nG(n为数字):光标移动到第n行。

文本删除与修改

  • x:删除光标所在位置的字符;
  • nx(n为数字):删除从光标开始的n个字符;
  • dd:删除当前行;
  • ndd(n为数字):删除当前行及后续n-1行;
  • d$:删除从光标到行尾的内容;
  • d^:删除从光标到行首的内容;
  • dw:删除一个单词;
  • D:删除从光标到行尾的内容(等同于d$)。

复制与粘贴

  • yy:复制当前行;
  • nyy(n为数字):复制当前行及后续n-1行;
  • yw:复制一个单词;
  • p:在光标后粘贴复制的文本;
  • P:在光标前粘贴复制的文本。

撤销与重做

  • u:撤销上一步操作;
  • Ctrl + r:重做被撤销的操作。

末行模式下的常用命令

末行模式主要用于文件保存、退出及全局操作,常用命令如下:

命令 功能说明
w 保存当前文件
w 文件名 另存为指定文件名的文件
q 退出vi编辑器(若未修改文件)
q! 强制退出vi编辑器(不保存修改)
wq 保存文件并退出编辑器
wq! 强制保存文件并退出(适用于只读文件)
set number 显示行号
set nonumber 隐藏行号
s/旧字符串/新字符串 替换当前行中首次出现的旧字符串
s/旧字符串/新字符串/g 替换当前行中所有旧字符串
%s/旧字符串/新字符串/g 替换文件中所有旧字符串
n1,n2s/旧字符串/新字符串/g 替换第n1行到第n2行中所有旧字符串
/字符串 从光标位置向下搜索字符串
?字符串 从光标位置向上搜索字符串
n 定位到下一个搜索结果
N 定位到上一个搜索结果

vi的高级技巧

  1. 多窗口编辑:通过split命令可分割窗口,实现多个文件同时编辑。split file1.txt将当前窗口分为上下两部分,下方打开file1.txt,使用Ctrl + w切换窗口,q关闭当前窗口。
  2. 可视化模式:在命令模式下按v进入字符可视化模式,按V(大写)进入行可视化模式,按Ctrl + v进入块可视化模式,可通过移动光标选择文本,然后进行删除、复制等操作。
  3. 自动缩进:通过set autoindent启用自动缩进,在插入模式下换行时会自动缩进,保持代码结构清晰。
  4. 语法高亮:通过syntax on启用语法高亮,支持多种编程语言的语法标识,便于代码阅读。

使用注意事项

  1. 区分大小写:vi的命令区分大小写,例如dd删除行,而DD无意义;/string区分大小写,若需不区分大小写搜索,可使用set ic命令。
  2. 避免误操作:在命令模式下误触按键可能导致意外修改,建议养成频繁按Esc键返回命令模式的习惯。
  3. 备份文件:编辑重要文件前,建议先备份原文件,避免操作失误导致数据丢失。

相关问答FAQs

问题1:vi编辑器中如何快速跳转到指定行?
解答:在末行模式下输入行号后按回车即可跳转到指定行,输入25并按回车,光标将跳转到文件的第25行,在命令模式下输入nG(n为行号)也可实现跳转,例如50G跳转到第50行。

问题2:vi编辑器中如何删除包含特定字符串的所有行?
解答:可通过结合搜索和删除命令实现,首先在末行模式下使用/字符串/定位到包含目标字符串的行,然后在命令模式下输入d删除该行,若需删除所有匹配行,可使用g/字符串/d命令,其中g表示全局匹配,d表示删除。g/error/d将删除文件中所有包含“error”的行。

Linux编辑文件命令vi如何使用?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇