Linux 的编辑器--vim - 实践

news/2025/10/5 8:44:40/文章来源:https://www.cnblogs.com/yxysuanfa/p/19126238

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.mzph.cn/news/928045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析:Java基础(二):八种基本数据类型详解

深入解析:Java基础(二):八种基本数据类型详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

电子商务公司网站设计wordpress标签归档

BeanFactoryPostProcessor和BeanPostProcessor这两个接口都是初始化bean时对外暴露的入口之一&#xff0c;和Aware类似&#xff08;PS:关于spring的hook可以看看Spring钩子方法和钩子接口的使用详解讲的蛮详细&#xff09;本文也主要是学习具体的钩子的细节&#xff0c;以便于实…

上海网站建设服务是什么网络企业网站建设方案

&#x1f451;专栏内容&#xff1a;Java⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、方法的概念1、什么是方法&#xff1f;2、方法的定义3、方法调用的过程 二、方法重载1、重载的概念2、方法签名 在日常生活中…

邯郸专业网站建设报价某qq非主流个性网源码qq空间网站源码dede内核+采集规则

目录 一.部署单体项目 1.远程数据库 1.1远程连接数据库 1.2 新建数据库运行sql文件 2.部署项目到服务器中 3.启动服务器运行 二.部署前后端分离项目 1.远程数据库和部署到服务器 2.利用node环境启动前端项目 3.解决主机无法解析服务器localhost问题 方法一 ​编辑 方法二 一.部…

用什么做视频网站比较好的网站右键禁止

非线性容器实现能快速查找的数据结构&#xff0c;其底层通过 hash 或者红黑树实现&#xff0c;包括 HashMap、HashSet、TreeMap、TreeSet、LightWeightMap、LightWeightSet、PlainArray 七种。非线性容器中的 key 及 value 的类型均满足 ECMA 标准。 HashMap HashMap 可用来存…

越秀凭一己之力打破了行业天花板 - 智慧园区

近几年,房地产市场的供需关系已经发生深刻变化,整个行业都在研究怎么能在营销上作出突围。在这个过程中,数字营销几乎成了必选项。 然而,即使布局了数字营销业务,许多 房企面临的营销困境还是在加深 ,明源君认为…

贷款公司网站模板建app需要多少钱

定义 存储器单位时间内读出/写入的位数或字节数 单位 单位是bps&#xff08;位/秒&#xff09;或B/s&#xff08;字节/秒&#xff09; 计算公式 基于存储器时频率和数据总线位数的计算方法 公式&#xff1a;带宽 存储器时频率 存储器数据总线位数 / 8 基于存取周期和每…

详细介绍:静态资源js,css免费CDN服务比较

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

如何做qq钓鱼网站深圳网页设计公司在哪

文章首发于公众号「码上GIS」&#xff0c;欢迎关注。文中流向图和城市关系强度图的 ArcMap 10.5 Mxd 工程和数据可在公众号后台回复「190708」和「190709」获取不记得是从哪年开始&#xff0c;每年春运期间&#xff0c;百度都会发布个春运大数据&#xff0c;其中最让人印象深刻…

在AI技术唾手可得的时代,挖掘JavaScript学习资源的新需求成为关键

本文分析了一个广受欢迎的JavaScript学习资源库,该项目系统整理了33个核心JavaScript概念的学习资料,涵盖了从基础数据类型到高级设计模式的完整知识体系,为开发者提供了全面的学习路径和参考资料。a.内容描述核心功…

网站模板网站wordpress手机号网站

前言&#xff1a; 子窗口控件是特殊的子窗口&#xff0c;不需要我们注册窗口类&#xff0c;系统已经注册好了&#xff0c;我们只需要在创建时选择相应的窗口类名。常用的子窗口控件有按钮BUTTON、组合框COMBOBOX、编辑框EDIT、列表框LISTBOX、静态框STATIC、滚动条SCROLLBAR等类…

做生意网站wordpress 栏目页

符号在前就先加/减&#xff0c;符号在后就后加/减 在写代码的过程中&#xff0c;常见的一种情况是需要某个整数类型变量增加 1 或减少 1&#xff0c;Java 提供了一种特殊的运算符&#xff0c;用于这种表达式&#xff0c;叫做自增运算符&#xff08;)和自减运算符&#xff0…

洛谷P9676 [ICPC 2022 Jinan R] Skills

洛谷P9676 [ICPC 2022 Jinan R] Skills P9676 [ICPC 2022 Jinan R] Skills 设计状态时,可以知道要用当前的压掉一维,\(dp_{i,j,0/1/2}\) 表示当前选第 \(0/1/2\) 种,\(i,j\) 表示其余两种的最后选择时间。 如果没有…

微信小程序(uniapp)搭建腾讯云 IM 消息撤回

微信小程序(uniapp)搭建腾讯云 IM 消息撤回2025-10-05 08:13 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

读人形机器人31未来30年

读人形机器人31未来30年1. 先进的技术前景 1.1. 自主决策与认知计算1.1.1. 预计到2055年,最重大的突破之一将是具备先进自主决策能力的人形机器人的出现1.1.2. 借助认知计算和神经网络架构方面的突破,这些机器人将能…

【java面试】redis篇 - 指南

【java面试】redis篇 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco",…

做推文网站营销型网站建设广告语

简洁的结论&#xff1a; 系统环境 ubuntu22.04 nvidia-535解决方案 删除/etc/X11/xorg.conf 文件 记录一下折腾大半天的问题。 ubuntu系统是22.04,之前使用的时候更新驱动导致桌面崩溃&#xff0c;重新安装桌面安装不上&#xff0c;请IT帮忙&#xff0c;IT一番操作过后也表示…

洛谷P8421 [THUPC 2022 决赛] rsraogps

洛谷P8421 [THUPC 2022 决赛] rsraogps P8421 [THUPC 2022 决赛] rsraogps - 洛谷 因为从一个点最多会变化 \(\log V\) 次(这三种操作都是这样),考虑扫描线,这样每次更新前面答案贡献时,就有可能做到 \(\log V\) …

正规的网站建设专业公司学校微网站模板下载地址

原文&#xff1a;https://www.toutiao.com/i6855460778359816715/平台&#xff1a;头条作者&#xff1a;程序员不就是0和1一、 备份恢复策略进行备份或恢复操作时需要考虑一些因素&#xff1a;1、确定要备份的表的存储引擎是事务型还是非事务型&#xff0c;两种不同的存储引擎备…