Linux系统编程Day5 -- Vim工具的使用

往期内容回顾

Linux常用工具(yum与vim)

​​​​​​ Linux系统编程Day4-- Shell与权限

一、Vim工具

1、Linux编辑器-vim介绍

Vim 是 "Vi IMproved" 的缩写,是 vi 编辑器的升级版,功能更强大,广泛用于 Linux/Unix 中的文本编辑,尤其适合程序员。

2、Vim 的三种工作模式

Vim 有三种主要模式:

模式 描述
普通模式(Normal) 默认进入的模式,可用于浏览、删除、复制、粘贴等操作。
插入模式(Insert) 编辑文本的模式,可像普通编辑器那样输入文字。
命令模式(Command) 用于保存、退出、查找、替换等命令操作。

进入 Vim

bash 复制代码
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 文件由以下部分组成:

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 配置文件

bash 复制代码
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 后可通过以下命令重新加载:

bash 复制代码
:source ~/.vimrc

三、为什么要使用 VimC/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 工具链高度契合
相关推荐
重生之我是Java开发战士1 小时前
【C语言】动态内存管理详解
c语言·开发语言·算法
lingling0091 小时前
光伏清洗机器人是什么?艾利特协作机器人如何重塑新能源运维效率
大数据·运维·人工智能
专注VB编程开发20年2 小时前
用ADO操作EXCEL文件创建表格,删除表格CREATE TABLE,DROP TABLE
服务器·windows·excel·ado·创建表格·删除表格·读写xlsx
程序员的世界你不懂2 小时前
Junit5+Maven+RestAssured+Allure接口自动化框架
运维·自动化
啊阿狸不会拉杆2 小时前
《算法导论》第 2 章 - 算法基础
数据结构·c++·算法·排序算法
q567315232 小时前
C语言编写轻量爬虫工具
c语言·开发语言·爬虫
水冗水孚2 小时前
😱😱😱CPU和内存飙到100%——我的火山引擎服务器被印度的ip恶意植入挖矿程序了!😡😡😡
服务器·ubuntu·centos
啊阿狸不会拉杆2 小时前
《算法导论》第 4 章 - 分治策略
开发语言·数据结构·c++·算法·排序算法
大博士.J2 小时前
网页自动化脚本selenium防检测
运维·selenium·自动化
白葵新2 小时前
C#案例实战
c++·python·算法·计算机视觉·c#