【Linux】Vim 设置

ops/2025/2/28 13:39:49/

【Linux】Vim 设置

零、起因

刚学Linux,有时候会重装Linux系统,然后默认的vi不太好用,需要进行一些设置,本文简述如何配置一个好用的Vim。

壹、软件安装

sudo apt-get install vim

贰、配置路径

对所有用户生效:

sudo vi /etc/vim/vimrc

对当前用户生效:

vi ~/.vimrc

查看配置位置:
打开vim,输入:version

叁、常用配置

vim-script">" 显示行号
set number" 显示光标行横线
set cursorline" 高亮打开
syntax on" 打开文件检测
filetype on" 设置 tab 键的宽度为 4 个空格
set tabstop=4" 设置当输入 tab 时,实际插入的空格数为 4
set shiftwidth=4" 将 tab 转换为空格
set expandtab" (可选)设置自动缩进时使用空格而不是 tab
set softtabstop=4" 设置自动缩进
set autoindent" 设置使用 c/c++ 语言的自动缩进方式
set cindent

vi配置

肆、C/C++代码自动补全

注意:此操作对Vim版本要求较高(Vim 9.1.0016+),请先确认版本是否支持!
YouCompleteMe 是一个功能强大的语义级代码补全插件,支持 C/C++ 的智能提示和跳转。下文介绍 YouCompleteMe 如何配置。

安装依赖

基础工具链

sudo apt install g++ gcc cmake git python3-dev clangd

Vim 插件管理器 Vundle

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

vimrc_65">配置 .vimrc

添加以下内容到 ~/.vimrc

vim-script">" Vundle 插件配置
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'Valloric/YouCompleteMe'     " 自动补全插件
Plugin 'scrooloose/nerdtree'        " 可选:文件树插件
Plugin 'yianwillis/vimcdoc'         " 中文文档插件
call vundle#end()" YCM 自动补全配置
let g:ycm_global_ycm_extra_conf = '~/.vim/.ycm_extra_conf.py'
let g:ycm_clangd_binary_path = 'clangd'  " 需安装 clangd
let g:ycm_auto_trigger = 1               " 自动触发补全
let g:ycm_key_list_select_completion = ['<Tab>', '<Down>']
let g:ycm_key_list_previous_completion = ['<S-Tab>', '<Up>']

安装 YCM

在 Vim 中执行插件安装命令(VIM会显示正在处理插件,等处理完再退出):

vim-script">:PluginInstall

安装完成后,进入 YCM 目录编译:

cd ~/.vim/bundle/YouCompleteMe
python3 install.py --clangd-completer

编译成功

代码补全

C项目中,若项目比较复杂,需要生成compile_commands.json文件便于YCM处理,对于Make项目,可以使用bear来辅助生成。

安装bear
sudo apt install bear
生成compile_commands.json

在make项目目录下执行:

bear -- make
完成

再次使用vi打开C文件时,有提示了。
自动补全


http://www.ppmy.cn/ops/161974.html

相关文章

IP-----动态路由OSPF(2)

这只是IP的其中一块内容&#xff0c;IP还有更多内容可以查看IP专栏&#xff0c;前一章内容为动态路由OSPF &#xff0c;可通过以下路径查看IP-----动态路由OSPF-CSDN博客,欢迎指正 注意&#xff01;&#xff01;&#xff01;本部分内容较多所以分成了两部分在上一章 5.动态路…

[特殊字符] 蓝桥杯 Java B 组 之最小生成树(Prim、Kruskal) 并查集应用

Day 3&#xff1a;最小生成树&#xff08;Prim、Kruskal&#xff09; & 并查集应用 &#x1f4d6; 一、最小生成树&#xff08;MST&#xff09;简介 最小生成树&#xff08;Minimum Spanning Tree, MST&#xff09; 是一个 无向连通图 的 最小代价子图&#xff0c;它包含 …

倚光科技:助力玻璃非球面的打样与小批量生产

在现代光学和精密制造领域&#xff0c;非球面光学元件凭借其卓越的光学性能&#xff0c;已成为推动高端科技发展的核心组件。相比于传统的球面透镜&#xff0c;非球面透镜能够显著减少光学系统中的像差和畸变&#xff0c;大幅提升成像质量、系统紧凑性和能量利用率。因此&#…

【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter25-客户端存储

二十五、客户端存储 客户端存储 随着 Web 应用程序的出现&#xff0c;直接在客户端存储用户信息的需求也随之出现。这背后的想法是合理的&#xff1a;与特定用户相关的信息应该保存在用户的机器上。无论是登录信息、个人偏好&#xff0c;还是其他数据&#xff0c;Web 应用程序提…

【读书笔记·VLSI电路设计方法解密】问题57:逻辑合成过程中插入测试的目的是什么

如第3章第20题所述&#xff0c;可测试性设计&#xff08;Design for Testability, DFT&#xff09;是创建具有商业价值的产品时需要考虑的一个非常重要的问题。为了实现DFT功能&#xff0c;使设计能够检测制造缺陷&#xff0c;需要在设计中添加额外的测试电路&#xff0c;而这些…

想学python进来看看把

目录 什么是python 我将列举python与其他几种编程语言的对比 Python vs Java Python vs JavaScript Python vs C​编辑 我将列举代码示例帮大家来理解 python c/c java 写一个python程序 你一定要知道什么是BUG呦 遇到bug怎么办 1. 保持冷静 2. 重现 Bug 3. 阅…

Spring Boot 3 集成 RabbitMQ 实践指南

Spring Boot 3 集成 RabbitMQ 实践指南 1. RabbitMQ 核心原理 1.1 什么是RabbitMQ RabbitMQ是一个开源的消息代理和队列服务器&#xff0c;使用Erlang语言开发&#xff0c;基于AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;协议实现。它支持多种消息传递模…

【FL0086】基于SSM和微信小程序的垃圾分类小程序

&#x1f9d1;‍&#x1f4bb;博主介绍&#x1f9d1;‍&#x1f4bb; 全网粉丝10W,CSDN全栈领域优质创作者&#xff0c;博客之星、掘金/知乎/b站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战&#xff0c;以及程序定制化开发…