往期内容回顾
一、Vim工具
1、Linux编辑器-vim介绍
Vim 是 "Vi IMproved" 的缩写,是 vi 编辑器的升级版,功能更强大,广泛用于 Linux/Unix 中的文本编辑,尤其适合程序员。
2、Vim 的三种工作模式
Vim 有三种主要模式:
模式 | 描述 |
---|---|
普通模式(Normal) | 默认进入的模式,可用于浏览、删除、复制、粘贴等操作。 |
插入模式(Insert) | 编辑文本的模式,可像普通编辑器那样输入文字。 |
命令模式(Command) | 用于保存、退出、查找、替换等命令操作。 |
进入 Vim
bashvim 文件名
若文件不存在,Vim 会新建该文件;
- 若文件存在,则打开文件进行编辑。
3、模式切换操作
操作 | 功能 |
---|---|
Esc | 从任何模式返回普通模式 |
i | 进入插入模式,在当前光标前插入 |
I | 在行首插入 |
a | 在光标后插入 |
A | 在行尾插入 |
: | 进入命令模式 |
4、命令模式的常用操作
1、光标定位:
基本移动
操作 | 命令 | 说明 |
---|---|---|
向左移动 | h | 左移一个字符 |
向右移动 | l | 右移一个字符 |
向上移动 | k | 上移一行 |
向下移动 | j | 下移一行 |
2、行内跳转
操作 | 命令 | 说明 |
---|---|---|
移动到行首 | 0 | 移动到当前行第一个字符 |
移动到第一个非空白字符 | ^ | 行首的第一个非空格字符 |
移动到行尾 | $ | 当前行最后一个字符 |
3、按词跳转
操作 | 命令 | 说明 |
---|---|---|
向前移动一个词 | w | 移动到下一个词开头 |
向后移动一个词 | b | 移动到前一个词开头 |
移动到词尾 | e | 当前或下一个词的词尾 |
4、按句/段落跳转
操作 | 命令 | 说明 |
---|---|---|
下一个句子 | ) | 移动到下一个句子的开头 |
上一个句子 | ( | 向上移动一个句子 |
下一段落 | } | 移动到下一个段落开头 |
上一段落 | { | 移动到上一段落开头 |
5、文件内跳转
操作 | 命令 | 说明 |
---|---|---|
移动到文件开头 | gg | 第一行 |
移动到文件末尾 | G | 最后一行 |
跳转到第 N 行 | :N | 例如 :42 跳转到第 42 行 |
快速上下移动 | Ctrl+d / Ctrl+u | 向下/向上滚动半屏 |
6、文本编辑操作
操作 | 命令 | 说明 |
---|---|---|
文本行切换大小写 | shift+~ | 例如:R-> r |
替换模式 | shift + r =R | 批量替换文本; |
替换单个符 | r | r->替换单个 |
7、其他常用操作
操作 | 命令 | 说明 |
---|---|---|
进入插入模式 | i | 在光标前插入 |
删除一个字符 | x | 删除光标所在字符 |
撤销操作 | u | 撤销上一步 |
重做操作 | Ctrl+r | 重做撤销 |
复制行 | yy | 复制整行 |
粘贴 | p | 在光标后粘贴 |
删除行 | dd | 删除整行 |
注意:光标所在行:
yy复制(n+yy:支持对光标所在行,进行多行复制)
p粘贴 (n+p:支持对内容,进行多行粘贴)
5、插入模式:
命令模式->插入模式:
命令 | 含义和行为 |
---|---|
i | 在光标前插入(最常用) |
I | 在当前行的行首插入(跳过缩进) |
a | 在光标后插入(append) |
A | 在当前行的行尾插入 |
o | 在当前行的 下方新开一行并插入 |
O | 在当前行的 上方新开一行并插入 |
gi | 返回上次插入模式的位置继续插入 |
若想退出插入模式,按 Esc 回到命令模式
6、底行模式:
在 Vim 中,底行模式(也叫命令行模式、末行模式)是通过在命令模式下输入 : 进入的。这时你可以输入各种命令,比如保存、退出、查找、替换等。
1、文件操作
命令 | 作用 |
---|---|
:w | 保存当前文件 |
:w 文件名 | 另存为指定文件 |
:q | 退出(无更改) |
:q! | 强制退出(不保存) |
:wq 或 :x | 保存并退出 |
:e 文件名 | 打开一个文件 |
:n | 打开下一个文件(多个文件时) |
:prev | 打开上一个文件 |
2、查找与替换
命令 | 作用 |
---|---|
:/关键词 | 向下查找 |
:?关键词 | 向上查找 |
:s/原/新/ | 替换当前行第一个 |
:s/原/新/g | 替换当前行所有匹配项 |
:%s/原/新/g | 替换全文所有匹配项 |
:%s/原/新/gc | 替换全文并逐个确认(c 表示 confirm) |
3、行号和显示
命令 | 作用 |
---|---|
:set number | 显示行号 |
:set nonumber | 取消行号显示 |
:set cursorline | 高亮当前行 |
:set nocursorline | 取消高亮当前行 |
vim模式下分屏操作:vs 文件名
**光标的跨屏操作:**ctrl + ww;
底行模式下可以执行Linux命令。
二、vim的配置原理
1. Vim 的启动与配置文件加载过程
Vim 启动时,会按照一定顺序查找配置文件(这些配置文件定义了启动时加载的设置、插件、主题等)vim的配置文件,是一人一份的,一个用户配置的是自己的。主要配置文件有两个:
配置文件 | 说明 |
---|---|
~/.vimrc 或 ~/.config/nvim/init.vim | Vim 启动时读取的主要配置文件 |
~/.vim/ 目录 | Vim 相关插件、脚本等的存储目录 |
在 Neovim 中,对应的主配置文件是 ~/.config/nvim/init.vim 或 init.lua(如果用 Lua 配置)
2. Vim 配置文件结构
典型的 .vimrc 文件由以下部分组成:
bash" 基础设置 set number " 显示行号 set tabstop=4 " Tab 宽度为 4 set shiftwidth=4 " 自动缩进为 4 set expandtab " 将 tab 替换为空格 set autoindent " 自动缩进 " 搜索设置 set ignorecase " 忽略大小写 set smartcase " 启用智能大小写 " 主题与界面 syntax on " 开启语法高亮 colorscheme desert " 主题设置 " 插件管理(使用插件管理器) call plug#begin('~/.vim/plugged') Plug 'preservim/nerdtree' Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } call plug#end() " 自定义快捷键 nnoremap <C-n> :NERDTreeToggle<CR>
bash" 高亮当前行 set cursorline " 让光标跳到文件上次退出的位置 if has("autocmd") autocmd BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g'\"" | endif endif " 启用鼠标 set mouse=a " 设置颜色主题(需要安装主题) colorscheme desert
3、如何配置自己的vimrc
示例 .vimrc 配置文件
bashset nocompatible filetype off syntax on set number set tabstop=4 shiftwidth=4 expandtab set autoindent smartindent set cursorline set mouse=a set encoding=utf-8 set fileencodings=utf-8,gbk set ignorecase smartcase set incsearch hlsearch " 状态栏 set ruler set laststatus=2 set showcmd " leader 键映射 let mapleader=" " nnoremap <leader>w :w<CR> nnoremap <leader>q :q<CR> nnoremap <leader><space> :nohlsearch<CR> " 插件管理 call plug#begin('~/.vim/plugged') Plug 'preservim/nerdtree' Plug 'vim-airline/vim-airline' Plug 'neoclide/coc.nvim', {'branch': 'release'} Plug 'preservim/nerdcommenter' call plug#end()
-
新手推荐的插件:
-
nerdtree(文件管理)
-
vim-airline(美化状态栏)
-
coc.nvim(智能补全,强大但较重)
-
nerdcommenter(快捷注释)
-
-
每次修改 .vimrc 后可通过以下命令重新加载:
bash:source ~/.vimrc
三、为什么要使用 Vim 写 C/C++ 代码
1、极致的高效编辑体验
1. 纯键盘操作,无需鼠标
- 所有操作(移动、复制、粘贴、删除、查找等)都可以通过快捷键完成,极大提升效率。
2. 强大的文本编辑能力
- Vim 的 多光标、宏录制、块编辑 等特性让你对文本进行批量、结构化的操作变得非常方便。
3. 无限撤销、重做,历史记录可追踪
- Vim 允许你非常自由地控制编辑历史,尤其在调试代码或尝试性修改时非常有帮助。
2、与构建工具、调试器无缝集成
支持命令行编译系统:
make、cmake、gcc、clang++ 可直接从 Vim 中调用:
bash:!g++ main.cpp -o main && ./main
与调试器集成:
-
使用插件如 vimspector 或 termdebug,你可以在 Vim 中调试 C/C++ 程序:
- 设置断点,单步执行,查看变量。
3、启动和运行速度极快
-
启动几乎为"秒开",相比一些重量级 IDE 如 VS、Eclipse、CLion,要轻快得多。
-
不会卡顿、不需要等待索引重新生成。
-
学会 Vim,对你理解代码结构、训练编程逻辑非常有帮助。
4、完整的终端工作流
-
Vim 可以和 shell 命令完美结合,像 grep, sed, awk, gdb, git, make 这些工具都可以直接在 Vim 内集成。
-
支持 多窗口拆分、终端内运行调试器、项目构建系统等,形成一个完整的"内功"开发环境。
5、Vim 适合这类 C/C++ 程序员
类型 | 原因 |
---|---|
系统级/嵌入式开发者 | 可以在服务器终端直接编码编译 |
追求高效键盘操作 | 熟练后效率远超鼠标为主的 IDE |
喜欢自由定制工具 | Vim 几乎可以定制一切 |
需要轻量快速的开发环境 | 启动快,占资源小 |
喜欢 Unix 哲学 | Vim 与 Linux 工具链高度契合 |