Linux基础-文本编辑工具vi

一、vi 的历史与定位

​起源与发展
vi 由 Bill Joy 于 1976 年为 BSD Unix 系统开发,是早期 Unix/Linux 系统的标准文本编辑器。其设计哲学是“小即是美”,仅通过键盘操作实现高效文本处理,成为程序员和系统管理员的必备工具。
​核心特性
​模式化操作:通过普通模式、插入模式、底行模式的切换实现复杂编辑。
​轻量化:无需图形界面,纯字符模式运行,资源占用极低。
​可定制性:支持通过配置文件(如 .vimrc)和插件扩展功能(Vim 特性)。
​vi 与 Vim 的关系
Vim(Vi IMproved)是 vi 的增强版本,兼容 vi 命令并新增语法高亮、多光标编辑、插件系统等功能。现代 Linux 系统通常预装 Vim,但 vi 命令仍广泛用于兼容性场景。

二、vi 的三种核心模式

  1. ​普通模式(Normal Mode)​
    ​功能:光标移动、文本删除/复制/粘贴、模式切换。
    ​进入方式:启动 vi 时默认进入,或从插入模式按 Esc 返回。
    ​常用命令:
    hjkl:左/下/上/右移动光标。
    gg:跳转到文件首行,G 跳转末行。
    dd:删除当前行,yy 复制当前行。
  2. ​插入模式(Insert Mode)​
    ​功能:输入或修改文本内容。
    ​进入方式:
    i:在光标前插入。
    a:在光标后插入。
    o:在当前行下方插入新行。
    ​退出方式:按 Esc 返回普通模式。
  3. ​底行模式(Last Line Mode)​
    ​功能:文件操作(保存/退出)、全局搜索、显示行号等。
    ​进入方式:普通模式下按 :。
    ​常用命令:
    :w 保存,:q 退出,:wq 保存并退出。
    :set nu 显示行号,:set nonu 关闭行号。
    /pattern 搜索字符串,n 跳转下一个匹配项。

三、vi 的高级操作技巧

  1. ​文本块操作
    ​块选择:按 Ctrl+v 进入列块模式,选择多行后按 d 删除或 y 复制。
    ​行内操作:dw 删除当前单词,cw 替换当前单词。
  2. ​查找与替换
    ​全局替换:在底行模式执行 :%s/old/new/g(全文替换)或 :10,20s/old/new/g(指定行范围替换)。
    ​确认替换:添加 c 参数(如 :%s/old/new/gc),逐个确认替换。
  3. ​多窗口与分屏
    ​分屏命令:
    :split 水平分屏,:vsplit 垂直分屏。
    Ctrl+w + hjkl 切换窗口。
    ​标签页::tabnew 新建标签,:tabnext 切换标签。

四、vi 与 Vim 的关键差异

特性 vi Vim 来源
​语法高亮 不支持 支持
​插件系统 无 丰富(如 NERDTree、YouCompleteMe)
​多光标编辑 不支持 支持(通过插件或内置命令)
​编码支持 基础 支持 UTF-8 等多种编码
​撤销/重做 单次撤销(u) 多级撤销(u 和 Ctrl+r)

五、vi 的学习路径与资源

​入门练习
掌握模式切换(普通 ↔ 插入 ↔ 底行)。
练习基本命令:i、a、dd、yy、:wq。
​进阶技巧
学习正则表达式搜索(如 /\d{3} 匹配三位数字)。
掌握宏录制(q{寄存器} 开始录制)。
​推荐资源
​书籍:《vi/vim 使用大全》(Practical Vim)。
​在线教程:Vim 官方文档(:help 命令)、Linux 中国社区的 vi 指南。
​练习工具:VimGym(交互式练习平台)。

六、典型应用场景

​服务器配置管理
通过 SSH 登录远程服务器,使用 vi 编辑配置文件(如 /etc/nginx/nginx.conf)。
示例:快速注释多行配置:
vim
:10,20s/^/#/ " 注释第10到20行
​脚本编写
编辑 Shell/Python 脚本,利用 :set number 显示行号辅助调试。
​日志分析
使用 /error 搜索日志中的错误关键词,结合 n 跳转定位问题。

七、常见问题与解决方案

​误删文本
使用 u 撤销操作,Ctrl+r 重做。
​文件只读
强制保存::w!(需文件权限允许),或使用 sudo 重新打开。
​编码混乱
设置文件编码::set fileencoding=utf-8。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值