Linux 的Vim/Vi 操作指南
一、引言
1.1 为什么要学习 Vim/Vi
- 系统必备工具:在 Arch Linux 等 Linux 发行版中,Vi/Vim 是默认的文本编辑器,无需额外安装
- 远程服务器利器:在无图形界面的服务器环境中,Vim 是最强大的编辑工具
- 高效编辑体验:通过快捷键组合实现极速文本处理
- 终身技能:掌握 Vim 后可显著提升工作效率
1.2 前置准备
- 一台安装了 Arch Linux 系统的电脑或VirtualMachine虚拟机
- 基本的 Linux 命令行操作知识
- 耐心和大量重复练习的决心
二、安装与启动
2.1 安装 Vim
bash
# 更新软件源
sudo apt update
# 安装 Vim
sudo pacman -S vim
# 验证安装
vim --version
2.2 启动与退出
bash
# 启动 Vim
vim
# 打开指定文件
vim filename.txt
# 退出 Vim
# 在命令模式下输入
:q
# 强制退出(不保存)
:q!
# 保存并退出
:wq
2.3 自动缩进配置
2.3.1 临时生效配置(当前会话)
在 Vim 命令模式下输入:
vim
set autoindent
set smartindent
set tab终止=4
set shiftwidth=4
set expandtab
2.3.2 永久生效配置
编辑用户配置文件 ~/.vimrc:
bash
vim ~/.vimrc
添加以下配置:
bash
# 自动缩进
set autoindent
# 智能缩进(根据语法自动调整缩进)
set smartindent
# 设置 tab 键宽度为 4 个空格
set tab终止=4
# 设置自动缩进宽度为 4 个空格
set shiftwidth=4
# 将 tab 键转换为空格
set expandtab
保存并退出后,配置将永久生效。
注意:
- 统一使用空格缩进,避免混合使用 tab 和空格
- 使用
:retab命令将现有文件中的 tab 转换为空格
2.4 语法高亮配置
2.4.1 临时生效配置
在 Vim 命令模式下输入:
vim
syntax on
2.4.2 永久生效配置
在 ~/.vimrc 中添加:
bash
# 启用语法高亮
syntax on
# 启用文件类型检测
filetype on
# 启用文件类型插件
filetype plugin on
# 启用文件类型缩进
filetype indent on
- 执行
:set filetype?查看当前文件类型 - 执行
:set syntax?查看当前语法高亮状态
三、基本模式介绍
3.1 三种主要模式
| 模式名称 | 模式说明 | 切换方法 |
|---|---|---|
| 普通模式 | 默认模式,用于移动光标和执行命令 | 按 Esc 键从其他模式切换 |
| 插入模式 | 用于输入文本 | 按 i、a、o 等键进入 |
| 命令行模式 | 用于执行保存、退出等命令 | 按 : 键进入 |
3.2 模式切换技巧
Esc:从任何模式切换到普通模式i:在光标前插入a:在光标后插入o:在当前行下方新建一行并插入O:在当前行上方新建一行并插入
四、基础操作
4.1 光标移动
4.1.1 基本移动
h - 向左移动一个字符
j - 向下移动一行
k - 向上移动一行
l - 向右移动一个字符
4.1.2 快速移动
w - 移动到下一个单词开头
b - 移动到上一个单词开头
0 - 移动到行首
$ - 移动到行尾
G - 移动到文件末尾
gg - 移动到文件开头
4.2 文本编辑
4.2.1 删除文本
dd - 删除当前行
dw - 删除一个单词
d$ - 删除从光标到行尾的内容
x - 删除光标所在字符
4.2.2 复制粘贴
yy - 复制当前行
yw - 复制一个单词
p - 在光标后粘贴
P - 在光标前粘贴
4.2.3 撤销与重做
u - 撤销上一步操作
Ctrl+r - 重做撤销的操作
五、高级操作
5.1 搜索与替换
5.1.1 搜索
bash
/keyword - 向下搜索关键词
?keyword - 向上搜索关键词
n - 跳转到下一个匹配
N - 跳转到上一个匹配
5.1.2 替换
bash
:s/old/new - 替换当前行第一个匹配
:s/old/new/g - 替换当前行所有匹配
:%s/old/new/g - 替换整个文件所有匹配
:%s/old/new/gc - 替换整个文件所有匹配,需要确认
5.2 多文件编辑
bash
# 同时打开多个文件
vim file1.txt file2.txt
# 切换文件
:n - 切换到下一个文件
:N - 切换到上一个文件
:args - 查看当前打开的文件列表
5.3 分屏操作
bash
:split - 水平分屏
:vsplit - 垂直分屏
Ctrl+w+w - 切换分屏
Ctrl+w+q - 关闭当前分屏
六、配置文件
6.1 全局配置文件
bash
# 编辑全局配置文件
sudo vim /etc/vim/vimrc
6.2 用户配置文件
bash
# 编辑用户配置文件
vim ~/.vimrc
6.3 常用配置项
bash
# 显示行号
set number
# 自动缩进
set autoindent
# 语法高亮
syntax on
# 显示光标所在行
set cursorline
# 显示括号匹配
set showmatch
# 设置 tab 宽度为 4 个空格
set tabstop=4
set shiftwidth=4
set expandtab
# 启用鼠标支持
set mouse=a
# 设置编码为 UTF-8
set encoding=utf-8
七、常见问题与解决方案
7.1 无法退出 Vim
问题描述:不小心进入了 Vim,不知道如何退出
解决方案:
- 按
Esc键确保处于普通模式 - 输入
:q或:q!或:wq退出
7.2 配置不生效
问题描述 :修改了 .vimrc 但配置没有生效
解决方案:
- 检查配置文件是否有语法错误
- 在 Vim 中执行
:source ~/.vimrc重新加载配置 - 确保配置文件权限正确
7.3 中文乱码
问题描述:打开中文文件时出现乱码
解决方案 :
在 .vimrc 中添加以下配置:
bash
# 设置文件编码自动检测顺序
# 优先尝试 UTF-8,然后依次是 GB2312、GBK、GB18030
# 确保 Vim 能正确识别各种中文编码文件
set fileencodings=utf-8,gb2312,gbk,gb18030
# 设置终端编码为 UTF-8
# 确保 Vim 与终端之间的编码一致,避免显示乱码
set termencoding=utf-8
# 设置 Vim 内部编码为 UTF-8
# 统一内部处理编码,确保文本处理的一致性
set encoding=utf-8
小拓展提示:
- 编码优先级 :
- 配置顺序决定了编码检测的优先级
- UTF-8 作为国际通用编码应放在最前面
- 中文兼容性 :
- GB2312、GBK、GB18030 是中文常用编码
- 确保覆盖所有可能的中文编码场景
- 终端匹配 :
- 确保终端的编码设置与 Vim 的 termencoding 一致
- 大多数现代终端默认使用 UTF-8 编码
7.4 快捷键冲突
问题描述:某些快捷键不工作或被其他程序占用
解决方案:
- 检查终端模拟器的快捷键设置
- 在 Vim 中重新映射冲突的快捷键
八、高级配置与插件
8.1 安装插件管理器
Vundle 是为 Vim 编辑器设计的插件管理工具,它通过自动化插件的安装、更新、搜索和清理流程,从而极大简化了 Vim 插件的管理工作。
bash
# 安装 Vundle
mkdir -p ~/.vim/bundle
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
8.2 常用插件推荐
- NERDTree:文件浏览器
- YouCompleteMe:代码补全
- vim-airline:状态栏美化
- ctrlp.vim:文件搜索
8.3 配置示例
bash
set nocompatible # 必须:关闭 Vi 兼容模式
filetype off # 必须:关闭文件类型检测
set rtp+=~/.vim/bundle/Vundle.vim # 设置 Vundle 的运行时路径
call vundle#begin() # 必须:初始化 Vundle
# 让 Vundle 管理自身,这行必须存在
Plugin 'VundleVim/Vundle.vim'
" 在此处添加其他插件声明,例如:
" Plugin 'preservim/nerdtree' # 文件浏览器
" Plugin 'tpope/vim-fugitive' # Git 管理
" Plugin 'vim-airline/vim-airline' # 状态栏
call vundle#end() # 必须:结束 Vundle 配置
filetype plugin indent on # 必须:开启文件类型检测、插件和缩进
九、学习资源与练习
9.1 在线资源
9.2 练习项目
- 用 Vim 编辑自己的
.bashrc文件 - 用 Vim 编写一个简单的 Python 脚本
- 尝试用 Vim 进行 Markdown 文档写作
十、总结
10.1 学习要点回顾
- 掌握三种基本模式的切换;
- 熟练使用光标移动快捷键;
- 学会基本的编辑操作;
- 配置个性化的 Vim 环境。