往期内容回顾
一、Vim工具
1、Linux编辑器-vim介绍
Vim 是 “Vi IMproved” 的缩写,是 vi 编辑器的升级版,功能更强大,广泛用于 Linux/Unix 中的文本编辑,尤其适合程序员。
2、Vim 的三种工作模式
Vim 有三种主要模式:
模式 |
描述 |
---|---|
普通模式(Normal) |
默认进入的模式,可用于浏览、删除、复制、粘贴等操作。 |
插入模式(Insert) |
编辑文本的模式,可像普通编辑器那样输入文字。 |
命令模式(Command) |
用于保存、退出、查找、替换等命令操作。 |
进入 Vim
vim 文件名
若文件不存在,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 文件由以下部分组成:
" 基础设置 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>
" 高亮当前行 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 配置文件
set 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 后可通过以下命令重新加载:
:source ~/.vimrc
三、为什么要使用 Vim 写 C/C++ 代码
1、极致的高效编辑体验
1. 纯键盘操作,无需鼠标
所有操作(移动、复制、粘贴、删除、查找等)都可以通过快捷键完成,极大提升效率。
2. 强大的文本编辑能力
Vim 的 多光标、宏录制、块编辑 等特性让你对文本进行批量、结构化的操作变得非常方便。
3. 无限撤销、重做,历史记录可追踪
Vim 允许你非常自由地控制编辑历史,尤其在调试代码或尝试性修改时非常有帮助。
2、与构建工具、调试器无缝集成
支持命令行编译系统:
make、cmake、gcc、clang++ 可直接从 Vim 中调用:
:!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 工具链高度契合 |