插件窝 干货文章 Linux 的vi和vim 有什么不同?

Linux 的vi和vim 有什么不同?

支持 Vim 功能 Vi 194    来源:    2025-05-11

Vi 和 Vim 是 Linux/Unix 系统中两个密切相关的文本编辑器,它们的主要区别如下:


1. 定义与关系

  • Vi(Visual Editor):

    • 1976年由 Bill Joy 开发,是 Unix 系统的原始文本编辑器
    • 功能基础,是 POSIX 标准的一部分,几乎所有 Unix/Linux 系统都预装。
  • Vim(Vi IMproved):

    • 1991年由 Bram Moolenaar 开发,是 Vi 的增强版(名称即 "Vi Improved")。
    • 在 Vi 基础上扩展了大量功能,成为现代 Linux 发行版的默认替代品(如 Ubuntu 中 vi 命令实际调用 vim)。

2. 核心区别

特性 Vi Vim
语法高亮 不支持 支持(多种编程语言)
多级撤销 仅支持单次撤销 支持无限次撤销(uCtrl+r
多窗口/分屏 不支持 支持(:split, :vsplit
脚本扩展 支持 Vimscript 和插件系统
跨平台 仅限 Unix 支持 Windows/macOS/Linux
搜索高亮 支持(:set hlsearch
命令行历史 记录历史命令(:history
鼠标支持 支持(GUI 和终端)
文件恢复 支持(.swp 文件恢复)

3. 兼容性

  • Vim 兼容 Vi
    Vim 的兼容模式(vim -C)可以模拟 Vi 的行为,但默认会启用增强功能。
  • 命令差异
    例如,Vi 中 :q! 强制退出,而 Vim 还支持 :qa!(退出所有窗口)。

4. 如何检查当前编辑器?

# 查看 vi 的实际指向(多数系统已链接到 vim)
ls -l $(which vi)

# 启动时显示版本(Vim 会输出 "Vi IMproved")
vim --version

5. 何时使用?

  • Vi
    仅需快速编辑配置文件,或在极简环境(如救援模式)中使用。
  • Vim
    需要代码编辑、插件管理(如 Vim-Plug)、或复杂操作时。

6. 进阶建议

  • 如果习惯 Vi 但想尝试 Vim,可通过 ~/.vimrc 配置兼容性选项: vim " 启用 Vi 兼容模式(不推荐,会禁用 Vim 功能) set compatible
  • 学习 Vim 的高级功能(如宏录制 q、寄存器操作 ")能显著提升效率。

总结:Vim 是 Vi 的现代化替代品,除非环境限制,否则建议优先使用 Vim。对于新手,掌握 Vim 的基础操作(:wq, i, ESC)后,再逐步探索其强大功能。