1 VIM的背景介绍
Vi 的诞生与1976年,Vim 的前身是 Vi(Visual Editor),由 Bill Joy 在 BSD Unix 系统上开发,作为 ed(行编辑器)的改进版本,提供全屏编辑功能,成为 Unix/Linux 系统的标准文本编辑器。
Vim 的诞生1991年,Vi 虽然强大,但功能有限。1991年,Bram Moolenaar 基于 Vi 开发了 Vim(Vi IMproved),增加了多级撤销、语法高亮、跨平台支持等特性,并逐步成为最流行的 Vi 增强版本。
目前开源与社区发展,Vim 是开源软件(遵循 GPL 协议),拥有活跃的开发者社区,至今仍在持续更新(最新稳定版为 Vim 9.0,2022年发布)。Vim 是终端环境下的高效编辑器,凭借其极简设计和强大的可扩展性,在开发者中经久不衰。尽管学习成本较高,但熟练使用后编辑速度远超常规编辑器,尤其适合服务器维护和键盘流编程。
它的特点如下:
模态编辑(Modal Editing):
Vim 的核心设计是模式分离(普通模式、插入模式、可视模式等),减少手指移动,提升编辑效率。键盘优先:
几乎所有操作均可通过键盘完成,避免依赖鼠标,适合快速文本处理。可扩展性:
支持插件(通过 .vimrc 配置)和脚本(Vimscript/Lua),可定制成 IDE(如搭配 LSP)
1.1 VIM的用途
Vim 是一款功能强大的文本编辑器,学习曲线较陡,但掌握基本操作后效率会大幅提升。它用途如下:
- 系统管理员与开发者:
默认预装在大多数 Linux/Unix 和 macOS 系统中(vi 通常是 Vim 的别名)。常用于配置文件编辑(如 /etc/nginx/nginx.conf)、远程服务器调试(通过 SSH)。
- 程序员:
高效编写代码(支持语法高亮、自动补全插件如 coc.nvim)。与版本控制工具(Git)结合(如 fugitive.vim)。
- 写作与日志:
纯文本编辑(Markdown、LaTeX 支持),适合无干扰写作。
1.2 VIM的安装
在ubuntu 环境下面的安装
sudo apt update
sudo apt install vim # 安装基础版
sudo apt install vim-gtk3 # 安装图形化版本(GVim)
1.3 其它常用的编辑器
(1) Nano
特点:简单易用,适合新手,快捷键提示在屏幕底部。
sudo apt install nano # Debian/Ubuntu
sudo dnf install nano # RHEL/Fedora
sudo pacman -S nano # Arch Linux
(2)Micro
特点:现代化终端编辑器,支持鼠标操作、语法高亮、多光标。
curl https://getmic.ro | bash # 一键安装
sudo mv micro /usr/local/bin # 添加到 PATH
1.4 总结
服务器/终端:Vim、Nano、Micro
桌面环境:VS Code、Kate、Sublime Text
极客/可定制:Emacs、Neovim、Helix
2 VIM 常见指令
VIM 一共有四种模式。
普通模式(Normal Mode):默认模式,用于导航和操作文本。从其他模式按 Esc 返回普通模式。
插入模式(Insert Mode):输入文本。 从普通模式按 i(光标前插入)、a(光标后插入)、o(下一行插入)等进入。
可视模式(Visual Mode):选择文本。 按 v(字符选择)、V(行选择)、Ctrl+v(块选择)。
命令模式(Command Mode):执行命令(如保存、退出)。从普通模式按 : 进入。
2.1 普通模式-- 移动光标
- 基本移动:也可以使用箭头来移动
h(左)、j(下)、k(上)、l(右)。
w(下一个单词开头)、b(上一个单词开头)。
0(行首)、^(行首非空格)、$(行尾)。
- 翻页:
Ctrl+f(下一页)、Ctrl+b(上一页)。
- 跳转:
gg(文件开头)、G(文件结尾)、行号+G(跳转到指定行)。
2.2 编辑模式
- 删除:
x(删除当前字符)或者del、dw(删除单词)、dd(删除整行)。
- 复制/粘贴:
yy(复制行)、p(粘贴到光标后)、P(粘贴到光标前)。
- 撤销/重做:
u(撤销)、Ctrl+r(重做)。
- 替换:
r(替换单个字符)、cw(替换单词)、:%s/old/new/g(全局替换)。
2.3 命令模式
- 保存、退出
:w 保存文件。
:q 退出(未修改时)。
:q! 强制退出(不保存修改)。
:wq 或 :x 保存并退出。
:e 文件名 打开其他文件。
- 搜索:
/关键词 向下搜索,?关键词 向上搜索。
按 n(下一个匹配)、N(上一个匹配)。
- 替换:
😒/old/new 替换当前行第一个匹配。
😒/old/new/g 替换当前行所有匹配。
:%s/old/new/g 全局替换。
2.4 可视模式
选择文本后进行编辑(删除、复制、缩进等)。
2.5 配置
- vim ~/.vimrc 打开文件
- 添加以下语句
set number " 显示行号
syntax on " 语法高亮
set tabstop=4 " Tab缩进4空格
set expandtab " Tab转空格