vim上手
在Ubuntu下使用Vim是Linux系统中非常基础且重要的技能,Vim是一款高效的文本编辑器,以“模式化操作”为核心,初期可能有点难上手,但熟练后会极大提升编辑效率。以下从安装、基础模式、核心操作、配置四个方面逐步讲解:
一、安装Vim
Ubuntu默认可能预装了Vim,若未安装,打开终端(Ctrl+Alt+T)执行以下命令:
sudo apt update  # 更新软件源
sudo apt install vim  # 安装Vim
二、Vim的三种核心模式(必须掌握)
Vim的核心是“模式化”,不同模式下按键功能完全不同,新手最容易因为“不知道当前在什么模式”而 confusion,先牢记这三种模式:
| 模式 | 作用 | 进入方式 | 退出方式(回到普通模式) | 
|---|---|---|---|
| 普通模式 | 导航、操作文本(删除、复制、粘贴等) | 启动Vim后默认进入 | 按 ESC键(无论在什么模式) | 
| 插入模式 | 输入/编辑文本 | 在普通模式下按 i/a/o等键 | 按 ESC键 | 
| 命令行模式 | 执行保存、退出、查找等命令 | 在普通模式下按 :(冒号) | 按 ESC键或执行命令后自动退出 | 
三、基础操作实战
以“创建并编辑一个文本文件”为例,一步步演示:
1. 启动Vim并打开文件
终端中输入以下命令,打开(或创建)一个名为 test.txt 的文件:
vim test.txt  # 若文件不存在,会在保存时创建;若存在,直接打开
启动后默认进入普通模式,此时键盘输入不会直接写入文本,而是执行导航或操作命令。
2. 进入插入模式(输入文本)
在普通模式下,按以下键进入插入模式(根据需要选择):
- i:在光标当前位置前插入(最常用)
- a:在光标当前位置后插入
- o:在光标下方新开一行插入
- I:在当前行开头插入(大写I)
- A:在当前行末尾插入(大写A)
- O:在光标上方新开一行插入(大写O)
进入插入模式后,左下角会显示 -- INSERT --,此时可以像记事本一样正常输入文本(例如输入“Hello Vim!”)。
3. 回到普通模式(操作文本)
输入完成后,按 ESC 键回到普通模式(左下角 -- INSERT -- 消失),此时可以对文本进行导航和编辑操作。
(1)光标导航(普通模式下)
| 按键 | 功能 | 进阶用法 | 
|---|---|---|
| h | 向左移动1个字符 | 数字+h:向左移动n个字符(如5h左移5格) | 
| j | 向下移动1行(常用) | 数字+j:向下移动n行(如3j下移3行) | 
| k | 向上移动1行(常用) | 数字+k:向上移动n行(如2k上移2行) | 
| l | 向右移动1个字符 | 数字+l:向右移动n个字符(如4l右移4格) | 
| gg | 直接跳到文件首行 | - | 
| G | 直接跳到文件末行 | 数字+G:跳到第n行(如10G跳到第10行) | 
| ^ | 跳到当前行开头(非空格) | - | 
| $ | 跳到当前行末尾 | - | 
(2)删除文本(普通模式下)
| 按键 | 功能 | 
|---|---|
| x | 删除光标所在位置的字符 | 
| dd | 删除光标所在行(常用) | 
| 数字+dd | 删除从当前行开始的n行(如 3dd删除3行) | 
| d^ | 删除从光标到当前行开头的内容 | 
| d$ | 删除从光标到当前行末尾的内容 | 
(3)复制与粘贴(普通模式下)
| 按键 | 功能 | 
|---|---|
| yy | 复制光标所在行(常用) | 
| 数字+yy | 复制从当前行开始的n行(如 2yy复制2行) | 
| p | 在光标下方粘贴复制的内容(常用) | 
| P | 在光标上方粘贴复制的内容 | 
(4)撤销与重做(普通模式下)
| 按键 | 功能 | 
|---|---|
| u | 撤销上一步操作(常用) | 
| Ctrl+r | 重做被撤销的操作(反撤销) | 
4. 命令行模式(保存、退出、查找等)
在普通模式下按 : 进入命令行模式(光标会跳到终端底部),输入以下命令后按回车执行:
| 命令 | 功能 | 
|---|---|
| :w | 保存当前文件(不退出) | 
| :q | 退出Vim(若未保存会提示错误) | 
| :wq | 保存并退出(常用,等价于 ZZ快捷键) | 
| :q! | 强制退出,不保存修改(放弃编辑) | 
| :set number | 显示行号(临时生效) | 
| :set nonumber | 隐藏行号 | 
| /关键词 | 从当前位置向下查找“关键词”(按 n跳到下一个,N跳到上一个) | 
| :%s/旧内容/新内容/g | 全局替换:将文件中所有“旧内容”替换为“新内容”( %表示全部行,g表示一行内所有匹配) | 
5. 完整流程示例
- 终端输入 vim test.txt打开文件(普通模式)
- 按 i进入插入模式,输入:Hello Vim! 这是我的第一个Vim文件。
- 按 ESC回到普通模式,按gg跳到首行,按dd删除第一行
- 按 i重新进入插入模式,补全为:学习Vim很有用! 这是我的第一个Vim文件。
- 按 ESC回到普通模式,按:进入命令行模式,输入:wq保存退出
四、常用配置(让Vim更好用)
默认Vim配置较简单,可通过 ~/.vimrc 文件自定义(该文件是Vim的用户配置文件,若不存在则创建)。
配置步骤:
- 终端输入 vim ~/.vimrc打开配置文件
- 按 i进入插入模式,添加以下常用配置:set number " 显示行号 set autoindent " 自动缩进(新行与上一行对齐) set tabstop=4 " Tab键宽度为4个空格 set shiftwidth=4 " 自动缩进时的宽度为4个空格 set expandtab " 将Tab键转换为空格(避免不同编辑器Tab显示不一致) set cursorline " 高亮当前行(方便定位) set encoding=utf-8 " 支持UTF-8编码(显示中文)
- 按 ESC回到普通模式,输入:wq保存退出,下次启动Vim时配置自动生效。
五、新手常见问题
- 无法退出Vim:无论在什么模式,先按 ESC回到普通模式,再按:q!(放弃)或:wq(保存)。
- 输入的字符变成了命令:因为处于普通模式,按 i进入插入模式即可输入文本。
- 中文乱码:在 ~/.vimrc中添加set encoding=utf-8即可解决。
