目录
一、vim的基本概念
二、Vim 的三种基本模式
1. 命令模式(Command Mode)
2. 插入模式(Insert Mode)
3. 底行模式(Last Line Mode)
模式切换方法
IDE例子:
三、vim的基本操作
进入vim
模式切换
保存与退出
四、使用vim的大坑注意事项
原因分析
键位编码差异
vim 的默认设计
终端/系统的中间处理
解决方案
方法 1:临时切换(推荐)
方法 2:修改 vim 配置(比较麻烦)
方法 3:切换输入习惯
底层原理
确保指令输入的一致性
五、vim命令模式命令集汇总
【移动光标】
【插入模式】
【模式切换】
【删除】
【复制粘贴】
【剪切】
【撤销】
【大小写切换】
【替换】
【更改】
【翻页】
【跳至指定行】
六、vim末行模式命令集汇总
行号设置
跳转与查找
文件操作
分屏操作
系统命令
问题提示
七、简单 Vim 配置 [了解]
配置文件位置
系统级配置
用户级配置
常用配置选项
插件安装指南
第一步:准备工作
第二步:安装TagList插件
第三步:安装WinManager插件
第四步:验证安装
重量级选手 —— 一键切换到大佬的配置
一、vim的基本概念
vim(vi IMproved)是一款功能强大的多模式文本编辑器,专为高效代码编辑而设计。作为开发者的得力助手,vim通过其独特的模式设计大幅提升了文本编辑效率。
简单来说,vi和vim都是多模式编辑器,但vim是vi的升级版。它不仅完全兼容vi的所有命令,还新增了许多实用功能,比如语法高亮和可视化操作。此外,vim支持在多种环境中运行,包括终端、X Window、Mac OS和Windows系统。为便于学习,我们统一以vim为例进行讲解。
二、Vim 的三种基本模式
我们重点讲解 Vim 的三种基础模式(Vim 实际有多种模式,目前掌握这三种即可):
1. 命令模式(Command Mode)
- 又称普通模式(Normal Mode)
- 功能:
- 控制光标移动
- 执行删除字符、单词或整行操作
- 进行文本复制和移动
- 可切换到插入模式或底行模式
2. 插入模式(Insert Mode)
- 功能:
- 唯一支持文本输入的模式
- 按 ESC 键返回命令模式
- 后续最常用的编辑模式
3. 底行模式(Last Line Mode)
- 功能:
- 文件保存与退出
- 文本替换操作
- 字符串搜索
- 显示行号等
模式切换方法
- 命令模式下按 Shift+:进入底行模式
- 查看所有模式:在 Vim 中输入
:help vim-modes
命令(共 12 种模式,包括 6 种基础模式和 6 种附加模式)
古老的计算机连接的键盘上使用的就是vim文本编辑器,如图中保留着的这四个功能键:
IDE例子:
三、vim的基本操作
(这里演示了,后面就不演示了,太繁琐了,操作太多了,明白就可以了)
进入vim
在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:
$ vim test.c
模式切换
-
进入vim后默认处于[命令模式],此时需要切换到[插入模式]才能输入文字
-
[命令模式]切换至[插入模式]
-
输入「a」:在当前光标的后一位置进入插入模式。
-
输入「i」:在当前光标处进入插入模式。
-
输入「o」:在当前光标处新起一行进入插入模式。
-
-
[插入模式]切换至[命令模式]:按
ESC
键-
在[插入模式]下,只能持续输入文字。
-
如需修改错误,有两种方式(均可实现文字修正):
- 按「ESC」键切换至[命令模式],再移动光标进行删除
- 直接删除错误内容
-
-
[命令模式]切换至[末行模式]
-
按
Shift + ;
(即输入:
)
-
保存与退出
在[正常模式]下,按:
进入末行模式后:
-
w
保存当前文件 -
wq
保存该文件并退出vim -
q!
不保存该文件并强制退出vim
四、使用vim的大坑注意事项
我在使用vim遇到的情况是 vim 中一个非常经典的数字键盘输入问题,根本原因在于:(前提你的外设键盘是全键键盘)数字小键盘(Numpad)(右边)的输入信号和主键盘区的数字键(左边)在系统中被识别为不同的键位。以下是详细解释和解决方案:
原因分析
-
键位编码差异
-
主键盘区数字键(如字母区上方的
1
2
3
)在系统中被识别为普通数字键 -
小键盘数字键(Numpad)在系统中被识别为 特殊功能键(如
KP_1
KP_2
KP_3
)
-
-
vim 的默认设计
-
vim 的普通模式命令(如
3l
)仅响应主键盘区的数字输入 -
小键盘的数字输入会被 vim 识别为无效命令或插入操作(部分系统会直接输入数字字符)
-
-
终端/系统的中间处理
某些终端模拟器(如 iTerm2、GNOME Terminal)或系统驱动会将小键盘数字转为特殊信号,导致 Vim 无法正确解析
解决方案
方法 1:临时切换(推荐)
-
关闭 NumLock
按下键盘的NumLock
键(指示灯熄灭),此时小键盘会变成方向键/功能键,避免误触发插入模式
方法 2:修改 vim 配置(比较麻烦)
在系统级配置下(当然也可以是用户级配置,后面第七点有讲),vimrc在根目录下的etc目录中,在 vimrc
中添加以下配置,强制兼容小键盘输入:
" 允许小键盘数字作为命令前缀
set notimeout
set ttimeout
set timeoutlen=100
map <Esc>OQ 1
map <Esc>OR 2
map <Esc>OS 3
map <Esc>Ot 4
map <Esc>Ou 5
map <Esc>Ov 6
map <Esc>Ow 7
map <Esc>Ox 8
map <Esc>Oy 9
map <Esc>Op 0
方法 3:切换输入习惯
-
使用主键盘区数字键输入命令
-
需要输入大量数字时再开启小键盘
底层原理
小键盘的数字键在终端中实际发送的是 转义序列(如 ESC O q
代表 KP_1
),而 Vim 默认不将这些序列识别为数字命令。这与终端类型(TERM
环境变量)、键盘驱动、GUI 环境都有关联。
如果问题持续,建议在终端设置中检查「将小键盘数字作为普通键发送」选项(常见于 XShell/iTerm2 的高级设置)。
确保指令输入的一致性
在输入命令时,必须严格遵守规范的输入方式。例如:若要执行「G」命令(跳转到文章末尾),就必须准确输入大写字母G,而不能使用小写字母g。
五、vim命令模式命令集汇总
【移动光标】
- 按「k」:光标上移。
- 按「j」:光标下移。
- 按「h」:光标左移。
- 按「l」:光标右移。
- 按「$」:移动到光标所在行的行尾。
- 按「^」:移动到光标所在行的行首。
- 按「gg」:移动到文本开始。
- 按「Shift+g」:移动到文本末尾。
- 按「n+Shift+g」:移动到第n行行首。
- 按「n+Enter」:当前光标向下移动n行。
- 按「w」:光标从左到右,从上到下的跳到下一个字的开头。
- 按「e」:光标从左到右,从上到下的跳到下一个字的结尾。
- 按「b」:光标从右到左,从下到上的跳到上一个字的开头
- 按「G」:移动到文章的最后
- 按「#l」:光标移到该行的第#个位置,如:5l,56l
- 按「ctrl」+「b」:屏幕往"后"移动一页
- 按「ctrl」+「f」:屏幕往"前"移动一页
- 按「ctrl」+「u」:屏幕往"后"移动半页
- 按「ctrl」+「d」:屏幕往"前"移动半页
【插入模式】
- 按「i」:在当前光标处进入插入模式(从光标当前位置开始输入文件)
- 按「a」:在当前光标的后一位置进入插入模式(从光标下一位置开始输入文字)
- 按「o」:在当前光标处新起一行进入插入模式(插入新行并从行首输入文字)
【模式切换】
- 「ESC」键:从插入模式切换为命令模式
- 输入「Shift+;」即可进入底行模式,实际上就是输入「:」
【删除】
- 按「x」:删除光标所在位置的字符(每按一次删除一个字符)
- 按「nx」:删除光标所在位置开始往后的n个字符(如「6x」删除后面6个字符)
- 按「X」:删除光标所在位置的前一个字符(大写的X)
- 按「nX」:删除光标所在位置的前n个字符(如「20X」删除前面20个字符)
- 按「dd」:删除光标所在行
- 按「ndd」:删除光标所在行开始往下的n行(从光标行开始删除#行)
【复制粘贴】
- 按「yy」:复制光标所在行到缓冲区
- 按「nyy」:复制光标所在行开始往下的n行到缓冲区(如「6yy」拷贝6行文字)
- 按「yw」:将光标所在位置开始到字尾的字符复制到缓冲区
- 按「nyw」:将光标所在位置开始往后的n个字复制到缓冲区(复制#个字)
- 按「p」:将已复制的内容在光标的下一行粘贴上(需与"y"命令配合)
- 按「np」:将已复制的内容在光标的下一行粘贴n次
【剪切】
- 按「dd」:剪切光标所在行
- 按「ndd」:剪切光标所在行开始往下的n行
- 按「p」:将已剪切的内容在光标的下一行粘贴上
- 按「np」:将已剪切的内容在光标的下一行粘贴n次
【撤销】
- 按「u」:撤销(可多次按撤销多步操作)
- 按「Ctrl+r」:恢复刚刚的撤销(撤销的恢复)
【大小写切换】
- 按「~」:完成光标所在位置字符的大小写切换
- 按「n~」:完成光标所在位置开始往后的n个字符的大小写切换
【替换】
- 按「r」:替换光标所在处的字符
- 按「R」:替换光标所到位置的字符,直到按下「Esc」键为止
【更改】
- 按「cw」:将光标所在位置开始到字尾的字符删除,并进入插入模式(更改到字尾处)
- 按「cnw」:将光标所在位置开始往后的n个字删除,并进入插入模式(如「c3w」更改3个字)
【翻页】
- 按「Ctrl+b」:上翻一页(屏幕往"后"移动一页)
- 按「Ctrl+f」:下翻一页(屏幕往"前"移动一页)
- 按「Ctrl+u」:上翻半页(屏幕往"后"移动半页)
- 按「Ctrl+d」:下翻半页(屏幕往"前"移动半页)
【跳至指定行】
- 按「Ctrl+g」:列出光标所在行的行号
- 按「nG」:移动到第n行行首(如「15G」跳转到第15行)
六、vim末行模式命令集汇总
在使用底行模式之前,请先按「ESC」键确保处于普通模式,再按「:」进入底行模式,输入完指令后按Enter回车键执行该指令。
行号设置
-
「set nu」:显示行号
-
「set nonu」:取消行号
跳转与查找
-
「#」:跳转到指定行(如「:15」跳转到第15行)
-
「/关键字」:向下查找关键字(按「n」查找下一个)
-
「?关键字」:向上查找关键字(按「n」查找上一个)
文件操作
-
「w」:保存文件
-
「q」:退出vim(加「!」强制退出)
-
「wq」:保存并退出
分屏操作
-
「vs 文件名」:垂直分屏打开新文件
-
「Ctrl+w+w」:在分屏间切换光标
系统命令
-
「!指令」:执行外部Shell命令(如「!ls」查看目录)
问题提示
-
/ 和 ? 查找的区别:/是向下查找,?是向上查找
七、简单 Vim 配置 [了解]
配置文件位置
-
系统级配置
-
路径:
/etc/vimrc
-
说明:这是公共的 vim 配置文件,对所有用户有效
-
-
用户级配置
-
路径:~
/.vimrc(
如果不存在,则需要手动创建它)
# 1. 确保在主目录 cd ~# 2. 创建.vimrc文件 touch .vimrc# 3. 编辑配置文件(按i进入编辑模式,添加配置后ESC+:wq保存退出) vim .vimrc
-
说明:
-
从管理员切换到用户:
su [用户名]
-
进入主目录:
cd
~ -
编辑配置文件:
vim .vimrc
-
-
常用配置选项
- 启用语法高亮:
:syntax on
- 显示行号:
:set nu
- 设置缩进为4个空格:
:set shiftwidth=4
插件安装指南
要打造美观实用的 Vim 环境,默认配置可能功能有限。你可以通过安装插件来增强体验。首先请确认你正在为正确的用户进行配置,然后按照以下步骤操作:
第一步:准备工作
-
确保已创建用户级vim配置
cd ~ touch .vimrc mkdir -p ~/.vim/{doc,plugin} # 创建插件所需目录
第二步:安装TagList插件
-
下载插件
#直接下载(需有wget) wget http://www.vim.org/scripts/download_script.php?src_id=19574 -O taglist.zip
-
解压安装
unzip taglist.zip -d taglist cd taglist# 复制文件到vim配置目录 cp doc/taglist.txt ~/.vim/doc/ cp plugin/taglist.vim ~/.vim/plugin/
3.配置(编辑~/.vimrc)
vim ~/.vimrc
按i
进入插入模式,添加:
" TagList配置
let Tlist_Show_One_File=1 " 只显示当前文件的标签
let Tlist_Exit_OnlyWindow=1 " 如果只有taglist窗口则退出vim
let Tlist_Use_Right_Window=1 " 在右侧显示窗口
按ESC
后输入:wq
保存退出
第三步:安装WinManager插件
-
下载插件
wget http://www.vim.org/scripts/download_script.php?src_id=754 -O winmanager.zip
-
解压安装
unzip winmanager.zip -d winmanager cd winmanagercp doc/winmanager.txt ~/.vim/doc/ cp plugin/winmanager.vim ~/.vim/plugin/ cp plugin/wintagexplorer.vim ~/.vim/plugin/
-
配置(编辑~/.vimrc)
vim ~/.vimrc
添加:
" WinManager配置 let g:winManagerWindowLayout='FileExplorer|TagList' " 窗口布局 nmap wm :WMToggle<cr> " 设置wm快捷键切换窗口管理器
保存退出(:wq
)
第四步:验证安装
-
重启Vim
-
测试功能
-
打开一个C文件:
:e test.c
-
普通模式下输入
wm
,应该可以看到:-
左侧的文件浏览器
-
右侧的函数标签列表
-
-
再次输入
wm
可关闭
更具体请移步到:手把手教你把Vim改装成一个IDE编程环境(图文)_vim 打造成 ide-CSDN博客,其他手册,请执行 vimtutor 命令。
重量级选手 —— 一键切换到大佬的配置
上述的配置 vim 方法可能会比较复杂,特别是需要安装插件时,不建议手动逐个配置。更简单的方式是直接运行以下命令(注意:要在需要配置 vim 的用户下执行此命令,不建议直接在 root 用户下操作):
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
执行后会提示输入 root 密码,按指引操作即可:
稍微有点慢,我们等一下安装:
安装配置完成后,手动执行source ~/.bashrc
命令即可生效:
这时我们打开上次的test.c,可以看到此时vim文本编辑器具备了语法高亮、自动补全、行号显示和自动缩进等功能: