VI 和VIM区别
功能和特性
多级撤销/重做
- vi: 只支持单级撤销。
- vim: 支持多级撤销和重做,通过
u
撤销,Ctrl-r
重做。
多窗口/多标签
- vi: 不支持多窗口和多标签。
- vim: 支持分割窗口(
:split
和:vsplit
)和多标签页(:tabnew
)。
语法高亮
- vi: 不支持语法高亮。
- vim: 支持多种语言的语法高亮,使用
:syntax on
命令开启。
代码折叠
- vi: 不支持代码折叠。
- vim: 支持代码折叠,使用
zf
来折叠代码块,zo
打开折叠。
插件支持
- vi: 不支持插件。
- vim: 有丰富的插件支持,通过
vim-plug
等插件管理器可以安装各种插件。
自动补全
- vi: 不支持自动补全。
- vim: 提供自动补全功能,通过
Ctrl-n
和Ctrl-p
可以补全单词。
可视模式
- vi: 不支持可视模式。
- vim: 支持字符、行和块可视模式,使用
v
、V
和Ctrl-v
。
录制和播放宏
- vi: 不支持录制宏。
- vim: 支持录制宏,使用
q
开始录制,@
播放宏。
命令行历史
- vi: 不支持命令行历史。
- vim: 支持命令行历史,使用
:
后可以通过方向键上下查看历史命令。
查找和替换
- vi: 基础查找和替换功能。
- vim: 提供更强大的查找和替换功能,包括正则表达式支持。
用户体验
启动时间
- vi: 一般启动时间较快,功能少。
- vim: 启动时间稍慢,因为功能更多,但可以通过配置优化启动时间。
文档和帮助
- vi: 文档和帮助较少。
- vim: 提供详尽的文档和帮助系统,通过
:help
命令可以查看详细帮助。
配置灵活性
- vi: 配置选项较少。
- vim: 配置选项丰富,通过
~/.vimrc
可以定制大量选项。
扩展能力
脚本支持
- vi: 不支持脚本编写。
- vim: 支持 Vim 脚本(VimScript),可以编写自定义脚本扩展功能。
外部程序接口
- vi: 不支持与外部程序交互。
- vim: 可以与外部程序交互,通过
:!
命令运行外部命令,并可通过插件与多种工具集成。
GUI 版本
- vi: 只有命令行版本。
- vim: 提供 GUI 版本(gVim),具备图形界面的同时保留命令行版本的所有功能。
综合比较
- vi: 简单、轻量、快速启动,适用于资源受限的环境和简单的文本编辑任务。
- vim: 功能强大、可扩展性高,适合复杂的编辑任务和需要高级功能的用户。
2. 配置文件
- /etc/vimrc: 系统全局配置文件,影响所有用户。
- ~/.vimrc: 用户个人配置文件,仅影响当前用户。
- ~/.viminfo: vim 会话信息文件,保存编辑历史和光标位置等信息。
Vi 的四种模式
1. 一般模式(浏览模式)
- 进入方式:启动 vi 编辑器或从其他模式按
ESC
键。
2. 编辑模式(插入模式)
- 进入方式:在一般模式下按
i
、I
、a
、A
、o
、O
、R
、r
键。 - 退出方式:按
ESC
键返回一般模式。
3. 命令行模式
- 进入方式:在一般模式下按
:
、/
、?
键。 - 功能:执行保存、退出、查找等命令。
4. 可视化模式
进入方式:
v
字符可视化V
行可视化Ctrl+v
块可视化
- 退出方式:按
ESC
键返回一般模式。
一般模式下进行的快捷命令操作
光标移动
0
: 光标移到行首$
: 光标移到行尾G
: 移到文件最后一行nG
: 移到文件第 n 行gg
: 移到文件第一行nENTER
: 光标向下移动 n 行
查找
/word
: 向下查找 word 字符串?word
: 向上查找 word 字符串n
: 重复前一个搜索的动作(向下)N
: 重复前一个搜索的动作(向上)
删除和复制
x, X
: 向后删除和向前删除dd
: 删除整行ndd
: 从光标位置开始删除 n 行d1G
: 从第一行开始删除到光标所在行dG
: 删除光标位置到文件末尾d$
: 删除光标位置到行尾yy
: 复制光标所在行y5y
: 复制光标所在行和其后的4行yG
: 复制光标位置到文件末尾的所有行y$
: 复制光标位置到行尾
粘贴
P, p
: 粘贴到光标行前一行或后一行
撤销和重做
u
: 撤销前一操作.
: 重复前一操作
文件保存和退出
:w
: 保存数据:wq
: 保存退出 vi:wq!
: 强制保存后离开 vi(权限相关,强制写入):w[filename]
: 将编辑的数据另存为 filename:r[filename]
: 读入 filename 内容到光标行后面
Vim 的环境参数设置
:set nu
: 设置行号:set nonu
: 取消行号:set ruler
: 显示状态行:set showmode
: 显示 INSERT 编辑模式状态:set all
: 显示当前所有的环境参数设置值:syntax on/off
: 语法颜色开关
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。