当前位置:首页 > Linux > 正文

Linux vi怎么用?

在Linux终端输入”vi 文件名”启动vi编辑器,按i键进入编辑模式修改内容,按ESC返回命令模式,使用方向键移动光标,命令模式下输入:wq保存并退出,:q!强制退出不保存。

Linux中Vi编辑器的使用详解

Vi(Visual improved)是Linux系统中最经典、最强大的文本编辑器之一,由Bill Joy于1976年开发,作为系统管理员和开发者的必备工具,Vi以其高效的操作模式和广泛的兼容性(几乎所有Unix/Linux系统预装)成为编辑配置文件、脚本和代码的首选,下面将全面解析Vi的使用方法,从基础操作到进阶技巧。


Vi编辑器的核心概念

Vi有三种工作模式,理解模式切换是高效使用的关键:

Linux vi怎么用?  第1张

  1. 命令模式(Normal Mode)
    启动Vi后的默认模式,用于执行复制、删除、搜索等命令(不可直接输入文本)。
  2. 插入模式(Insert Mode)
    按特定键(如 i)进入,可自由编辑文本(屏幕底部显示 -- INSERT --)。
  3. 末行模式(Ex Mode)
    在命令模式下按 进入,用于保存文件、退出、搜索替换等操作。

基础操作指南

启动与退出

# 打开文件(不存在则新建)
vi filename.txt
# 退出操作(在命令模式下)
:q               # 退出(无修改时)
:q!              # 强制退出不保存
:wq 或 :x        # 保存并退出

模式切换

按键 功能
i 光标前插入
a 光标后插入
o 当前行下方插入新行
O 当前行上方插入新行
ESC 返回命令模式

光标移动(命令模式下)

按键 功能
h j k l 左/下/上/右移动
0 行首
行尾
gg 文件第一行
G 文件最后一行
Ctrl + f 向下翻页
Ctrl + b 向上翻页

文本编辑

命令 功能
x 删除光标处字符
dw 删除一个单词
dd 删除整行
yy 复制当前行
p 粘贴到光标后
u 撤销操作
Ctrl + r 重做操作

搜索与替换

# 命令模式下
/pattern     # 向下搜索 "pattern"
?pattern     # 向上搜索
:noh         # 取消高亮显示
# 末行模式下
:%s/old/new/g    # 全局替换所有 "old" 为 "new"
:12,18s/old/new/ # 替换12-18行的内容

文件操作

:w              # 保存文件
:w newfile.txt  # 另存为新文件
:e filename.txt # 打开其他文件
:set nu         # 显示行号
:set nonu       # 隐藏行号

进阶技巧

  1. 分屏操作

    :vsp file.txt   # 垂直分屏
    :sp file.txt    # 水平分屏
    Ctrl + w → 切换窗口
  2. 宏录制

    • qa 开始录制宏(保存到寄存器 a
    • 执行操作(如删除行、插入文本)
    • q 停止录制
    • @a 回放宏
  3. 批量注释

    :起始行,结束行 s/^/#/   # 添加行首注释(如 :2,10 s/^/#/)
    :起始行,结束行 s/^#//   # 取消注释

常见问题解决

  • 误入其他模式?
    连续按 ESC 返回命令模式。
  • 文件只读无法保存?
    :w !sudo tee % 强制保存(需sudo权限)。
  • 显示乱码?
    检查编码::set fileencoding,转换格式 :e ++enc=utf-8
  • 恢复崩溃文件
    重启后执行 vi -r filename 恢复未保存内容。

高效学习建议

  1. 掌握高频命令(iESC:wqddyy/p)。
  2. 练习使用方向键替代鼠标(h/j/k/l)。
  3. 查阅Vim内置教程:终端输入 vimtutor(30分钟入门)。

Vi的学习曲线陡峭但回报巨大,熟练后编辑效率远超图形工具,推荐安装增强版 Vim(Vi IMproved)以支持语法高亮、插件等功能:

sudo apt install vim   # Debian/Ubuntu
sudo yum install vim   # CentOS/RHEL

参考资料

  1. Vim官方文档
  2. Linux Man Pages (man vi)
  3. 《Practical Vim》 by Drew Neil(书籍)

原创声明:本文基于Vi/Vim通用操作规范及实践经验整理,适用于大多数Linux发行版(CentOS, Ubuntu, Debian等),文中命令已通过Bash 5.0及Vim 8.2验证。

0