当前位置:首页>Linux>Linux 必修内功:Vi 命令全景解析

Linux 必修内功:Vi 命令全景解析

  • 2026-09-13 09:10:43
Linux 必修内功:Vi 命令全景解析

在Linux操作系统中,vi(Visual Interface)编辑器不仅是一个文本编辑工具,更是系统管理员和开发者的“瑞士军刀”。自1976年由Bill Joy发明以来,它几乎预装在所有的Unix-like系统中。尽管现代有许多图形化编辑器(如VS Code、Sublime Text)和功能更强大的终端编辑器(如Neovim、Emacs),但vi凭借其极低的资源占用、极高的操作效率以及无处不在的兼容性,依然占据着不可替代的地位。深入掌握vi,是每一位Linux使用者的必修课。

一、核心设计理念:模式化编辑

vi与大多数现代编辑器最大的不同在于其模式化(Modal)的设计思想。它不是一进入就可以随意打字,而是将操作划分为不同的模式,最主要的是命令模式(Command Mode)和插入模式(Insert Mode)。命令模式:这是vi启动后的默认模式。在此模式下,键盘上的按键被视为指令,而非输入字符。你可以进行光标移动、删除、复制、粘贴、查找替换等操作。如果在此模式下误按字母键,可能会触发意想不到的命令(如按d可能开始删除操作)。插入模式:只有进入此模式,用户才能像使用记事本一样输入文本。从命令模式进入插入模式通常按i(insert)、a(append)、o(open new line)等键。退出插入模式回到命令模式,必须按Esc键。末行模式(Last Line Mode):在命令模式下输入:(冒号),光标会跳转到屏幕最下方,此时可以执行保存、退出、设置环境参数等高级命令。这种设计初看繁琐,实则精妙。它将“编辑动作”与“文本输入”彻底分离,使得熟练用户可以在不离开主键盘区的情况下,以极高的速度完成复杂的文本处理任务。

二、基础操作详解
•
启动与文件操作在终端输入vi filename即可打开或创建文件。若文件不存在,vi会创建一个新缓冲区。保存文件:在命令模式下输入:w回车。退出编辑器:输入:q回车。若文件未修改可直接退出;若已修改,需强制退出则用:q!。保存并退出:最常用的组合命令是:wq或简写为:x,甚至可以直接在命令模式下输入ZZ(大写)。
•
光标移动虽然方向键可用,但在vi中,使用h(左)、j(下)、k(上)、l(右)进行移动才是正统且高效的方式,因为手指无需离开主键盘区。快速跳转:0跳到行首,$跳到行尾,gg跳到文件首,G跳到文件尾。翻页:Ctrl+f向下翻一页,Ctrl+b向上翻一页。单词跳转:w跳到下一个单词首,b跳到上一个单词首。
•
文本编辑插入:i在当前光标前插入,a在光标后插入,o在当前行下方新开一行插入,O在上方新开一行。删除:x删除当前字符,dd删除整行,ndd删除n行(如5dd删除5行)。dw删除一个单词。复制与粘贴:yy复制当前行,nyy复制n行。p在光标后粘贴,P在光标前粘贴。撤销与重做:u撤销上一步操作,Ctrl+r重做被撤销的操作。
•
查找与替换查找:在命令模式下输入/keyword回车,可向下查找关键词;?keyword向上查找。按n查找下一个,N查找上一个。替换:这是vi最强大的功能之一。在末行模式下,:s/old/new/g可将当前行的所有old替换为new。若需替换全文,则使用:%s/old/new/g。加上c参数(: %s/old/new/gc)可在每次替换前询问确认。
三、操作示例
1

命令模式

此模式下,可使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。

ZZ  # 保存退出ZQ  # 不保存退出#光标跳转h: 左L: 右j: 下k: 上G   # 光标跳转至最后一行gg  # 光标跳转至第一行x   # 删除单个字符dd  # 剪切光标所在的行D   # 从当前光标位置一直删除到行尾yy  # 复制行(小写)p  # 向下粘贴(大写)P  # 向上粘贴u  # 撤销最近的更改U  # 撤消光标落在这行后所有此行的更改
2

插入模式

使 Vim 进行输入模式的方式是在命令模式状态下输入 i、I、a、A、o、O 等插入命令,当编辑文件完成后按 Esc键即可返回命令模式。

-i  # 在当前光标所在位置之前随后输入的文本-I  # 行首插入命令-o  # 在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本-O  # 在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本-a  # 在当前光标所在位置之后随后输入的文本-A  # 行尾插入命令
3

末行模式

文件中的指定内容执行保存、查找或替换等操作。使 Vim 切换到编辑模式的方法是在命令模式状态下按“:”(英文冒号)键,此时 Vim 窗口的左下方出现一个“:”符号,这是就可以输入相关指令进行操作了。

:wq # 保存并退出:q  # 不保存直接退出:q! # 强制退出不保存:w 新文件名  # 另存为新文件:set numner    # 显示行号,简写(:set nu):set nonumner  # 取消显示行号,简写(:set nonu):set ignorecase    # 忽略大小写,简写(:set ic):set noignorecase  # 不忽略大小写,简写(:set noic)# 显示Tab ^I和换行符 和$:set list  # 启用:set nolist  # 禁用:set ff=unix  # 设置为unix编码:set key=password  # 设置密码:set key=''        # 取消密码# 查找内容(n:查找下一个匹配项,N:查找上一个匹配项):/xxx:noh    		 # 关闭高亮# 替换内容:s/old/new/g     # 将当前行的old替换为new,如果只替换第一个则去掉g:%s/old/new/g    # 将全文中的old替换为new,如果只替换第一个则去掉g:%s/hello//g     # 将全文中所有的hello删除
四、进阶技巧与实战意义

对于高级用户,vi的威力在于“动词+名词”的组合逻辑。例如,d是删除动词,w是单词名词,dw即删除单词;c是改变(删除并插入),ci"表示修改双引号内的所有内容。这种语法化的操作逻辑,使得复杂编辑变得直观且迅速。此外,vi支持多窗口分割(:split水平分割,:vsplit垂直分割)和多文件编辑(:n下一个文件,:prev上一个文件),允许用户在同一个终端会话中同时处理多个相关代码文件,极大地提升了调试和重构的效率。

最新文章

随机文章