当前位置: 首页 > news >正文

Linux 的编辑器--vim - 实践

1.Linux编辑器-vim使⽤

vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,⽽且还有⼀些新的特性在⾥⾯。例如语法加亮,可视化操作不仅可以在终端运⾏,也可以运⾏于x window、 mac os、 windows。

2.vim的基本概念

实际vim总共有12种模式,六种基础模式和六种新增模式,以为就是six BASIC modes和six ADDITIONAL modes.

3.vim的基本操作

模式间的操作

进入vim

$ vim test.c
不过有⼀点要特别注意,就是你进⼊vim之后,是处于[正常模式],你要切换到[插⼊模式]才能够输⼊⽂字。
[正常模式]切换⾄[插⼊模式]
输⼊a
输⼊i
输⼊o
[插⼊模式]切换⾄[正常模式]
⽬前处于[插⼊模式],就只能⼀直输⼊⽂字,如果发现输错了字,想⽤光标键往回移动,将该字删除,可以先按⼀下「ESC」键转到[正常模式]再删除⽂字。当然,也可以直接删除。
[正常模式]切换⾄[末⾏模式]
「shift + ;」, 其实就是输⼊「:」
退出vim及保存⽂件,在[正常模式]下,按⼀下「:」冒号键进⼊「Last line mode」
: w (保存当前⽂件)
: wq (输⼊「wq」,存盘并退出vim)
: q! (输⼊q!,不存盘强制退出vim)

4.命令模式的命令

切换大小写:

shift+`==~:切换大小写

 查找:

shift+1==#:光标所在单词的下一个位置。

5.vim末⾏模式命令集

在使⽤末⾏模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进⼊末⾏模式。

列出⾏号
「set nu」: 输⼊「set nu」后,会在⽂件中的每⼀⾏前⾯列出⾏号。
跳到⽂件中的某⼀⾏
「#」:「#」号表⽰⼀个数字,在冒号后输⼊⼀个数字,再按回⻋键就会跳到该⾏了,如输⼊数字15,再回⻋,就会跳到⽂章的第15⾏。
查找字符
「/关键字」: 先按「/」键,再输⼊您想寻找的字符,如果第⼀次找的关键字不是您想要的,可以⼀直按「n」会往后寻找到您要的关键字为⽌。
「?关键字」:先按「?」键,再输⼊您想寻找的字符,如果第⼀次找的关键字不是您想要的,可以⼀直按「n」会往前寻找到您要的关键字为⽌。
问题:∕ 和 ?查找有和区别?操作实验⼀下

 保存⽂件

「w」: 在冒号输⼊字⺟「w」就可以将⽂件保存起来
离开vim
「q」:按「q」就是退出,如果⽆法离开vim,可以在「q」后跟⼀个「!」强制离开vim。
「wq」:⼀般建议离开时,搭配「w」⼀起使⽤,这样在退出的时候还可以保存⽂件。

批量替换:

%s /scr/dst/g 

:s 表示substitute,也就是替换, 格式为以下

:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]

        range 表示区间 % 用于表示全文, 2,3 表示从第2行开始到第3行

        {pattern} 表示字符串匹配规则,要匹配什么样的字符串 , 比如^a 表示以a字符起始的字符串

        {string} 表示要将匹配到的字符串替换为的新的string字符串

        [flags] s_flags中,g比较常用,通常使用g表示全部替换,默认如果不给的话,表示只替换一次

[        count] 表示在一行中匹配多少次,很少会用到....

如果想要将文件中所有 nihao 替换为 hello 则命令为: %s/nihao/hello/g

:p 用于打印指定区间的行

:[range]p[rint] [flags]

:i 在指定行上方添加文本

:{range}i[nsert][!]

分屏:

vs  文件名:分屏光标在哪边就是对哪边操作 、

ctrl+ww    :切换光标所在文件

6.批量注释操作

这里我们需要用到新的模式,视图模式了解即可

批量化注释:

1.ctrl+v  :进入视图模式

2.hjkl     :移动光标

3.shift+i :进入插入模式。

4.输入//

5.ESC返回

批量化去注释:

1.ctrl+v  :进入视图模式

2.hjkl     :移动光标

3.d         :删除。

hjkl选中区域就是我们视图模式操作的区域。 

7.vim的配置

以下是一份专为 C/C++ 开发优化的 Vim 配置流程,涵盖代码补全、调试、格式化、项目管理等关键功能,适合在终端高效开发。


1. 安装 Vim(确保版本 ≥ 8.2)

# Ubuntu/Debian
sudo apt update && sudo apt install vim-gtk  # 支持剪贴板
# macOS
brew install vim
# Windows (通过 Chocolatey)
choco install vim

2. 创建 ~/.vimrc 并配置基础选项

" === 基础设置 ===
set nocompatible    " 禁用 Vi 兼容模式
filetype plugin indent on  " 启用文件类型检测
syntax enable       " 语法高亮
set number          " 显示行号
set relativenumber  " 相对行号(方便跳转)
set tabstop=4       " Tab 显示为 4 空格
set shiftwidth=4    " 自动缩进 4 空格
set expandtab       " Tab 转空格
set smartindent     " 智能缩进
set cursorline      " 高亮当前行
set mouse=a         " 启用鼠标支持(可选)
" === 搜索优化 ===
set incsearch       " 实时搜索
set ignorecase      " 忽略大小写
set smartcase       " 包含大写时区分大小写
" === 快捷键映射 ===
let mapleader = " " " 设置 Leader 键为空格
nnoremap w :w   " 快速保存
nnoremap q :q   " 快速退出
inoremap jj            " 用 jj 退出插入模式

3. 安装插件管理器 Vim-Plug

# Linux/macOS
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
# Windows (PowerShell)
iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`ni "$env:USERPROFILE/vimfiles/autoload/plug.vim" -Force

4. 配置 C/C++ 专用插件(添加到 ~/.vimrc

call plug#begin('~/.vim/plugged')
" === 主题 & UI ===
Plug 'gruvbox-community/gruvbox'  " 经典主题
Plug 'vim-airline/vim-airline'    " 状态栏美化
" === 代码补全 & LSP ===
Plug 'neoclide/coc.nvim', {'branch': 'release'}  " 强大的 LSP 支持
" === 代码导航 & 分析 ===
Plug 'preservim/tagbar'           " 显示代码结构(依赖 ctags)
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }  " 模糊搜索
Plug 'junegunn/fzf.vim'
" === C/C++ 增强 ===
Plug 'rhysd/vim-clang-format'     " 自动格式化(需安装 clang-format)
Plug 'bfrg/vim-cpp-modern'        " C++ 语法高亮增强
" === 调试 ===
Plug 'puremourning/vimspector'    " 图形化调试(类似 VS Code)
" === 项目管理 ===
Plug 'preservim/nerdtree'         " 文件树
call plug#end()
" === 主题设置 ===
colorscheme gruvbox
set background=dark

5. 安装插件

  1. 保存 ~/.vimrc 后,打开 Vim。

  2. 运行 :PlugInstall 安装所有插件。


6. 配置 LSP(C/C++ 语言服务器)

安装依赖
# 安装 clangd(C/C++ LSP 后端)
# Ubuntu/Debian
sudo apt install clangd-12
# macOS
brew install llvm
配置 coc.nvim

在 Vim 中运行 :CocConfig,添加以下内容(JSON 格式):

{"languageserver": {"clangd": {"command": "clangd","rootPatterns": ["compile_commands.json", ".git"],"filetypes": ["c", "cpp", "objc", "objcpp"]}}
}
常用 Coc 命令
  • :CocList diagnostics 查看错误

  • :CocCommand clangd.switchSourceHeader 切换 .h/.cpp

  • Ctrl+Space 触发补全


7. 配置 Clang-Format(代码格式化)

  1. 安装 clang-format

    sudo apt install clang-format  # Ubuntu/Debian
    brew install clang-format     # macOS
  2. 在 ~/.vimrc 中添加快捷键:

    " 按 \= 格式化当前行或选区
    nmap = :ClangFormat
    vmap = :ClangFormat

8. 配置调试(Vimspector)

  1. 安装调试器(如 gdb):

    sudo apt install gdb  # Ubuntu/Debian
    brew install gdb     # macOS
  2. 在项目根目录创建 .vimspector.json

    {"configurations": {"C++ Launch": {"adapter": "vscode-cpptools","configuration": {"request": "launch","program": "${workspaceRoot}/a.out",  " 修改为你的可执行文件路径"args": [],"stopAtEntry": true}}}
    }
  3. 快捷键:

    • F5 开始调试

    • F9 断点

    • F10 单步跳过


9. 常用快捷键总结

快捷键功能
<Leader> + n打开/关闭文件树 (NERDTree)
<Leader> + t打开 Tagbar(代码结构)
<Leader> + f模糊搜索文件 (FZF)
Ctrl + ]跳转到定义(LSP)
Ctrl + o返回上一个位置
gd查看定义(LSP)

10. 最终效果


附:快速恢复配置(备份与共享)

# 备份配置
cp ~/.vimrc ~/vimrc_backup
# 在新机器恢复
curl -fLo ~/.vimrc https://your-config-url/vimrc
vim +PlugInstall +qall

这样配置后,你的 Vim 将成为一个强大的 C/C++ IDE! ?

http://www.jsqmd.com/news/8558/

相关文章:

  • 深入解析:Java基础(二):八种基本数据类型详解
  • 物理_备忘
  • 越秀凭一己之力打破了行业天花板 - 智慧园区
  • 详细介绍:静态资源js,css免费CDN服务比较
  • 在AI技术唾手可得的时代,挖掘JavaScript学习资源的新需求成为关键
  • 洛谷P9676 [ICPC 2022 Jinan R] Skills
  • 微信小程序(uniapp)搭建腾讯云 IM 消息撤回
  • 读人形机器人31未来30年
  • 【java面试】redis篇 - 指南
  • 洛谷P8421 [THUPC 2022 决赛] rsraogps
  • 实用指南:流媒体基础解析:音视频封装格式与传输协议
  • Differential Equations (Smita Sood) Notes
  • 《前端面试题:BFC(块级格式化上下文)》 - 详解
  • NLP学习路线图(十四):词袋模型(Bag of Words) - 详解
  • 实用指南:苍茫命令行:linux模拟实现,书写微型bash
  • CF2149题解
  • 2025 年压滤机厂家最新推荐排行榜:隔膜压滤机,污泥压滤机,真空压滤机,板框压滤机,带式压滤机优质企业权威评选及选购指南
  • 2025 年搅拌器厂家最新推荐排行榜:涵盖立式、不锈钢、侧入式等多类型设备,深度解析实力厂商
  • 2025 年最新推荐承烧板厂家排行榜:筛选优质企业,破解采购难题,赋能高温工业生产
  • 一文看懂AI SoC芯片
  • 月球尘埃电解技术实现资源就地利用
  • 漏洞赏金计划公开后的三个阶段与应对策略
  • Python 在科学计算与工程模拟中的应用
  • Python 在大数据与分布式计算中的应用
  • Python 在教育与科研中的应用与价值
  • Python 在自动化测试与质量保障中的应用
  • 玩转树莓派屏幕之三:lvgl移植到树莓派
  • enthalpy/entropy
  • Day26自定义异常
  • 谈谈redis的热key问题如何解决