Linux Vim教程(十):自定义配置与插件管理
目录
1. 概述
2. Vim 配置文件
2.1 .vimrc 文件
2.2 .gvimrc 文件
3. 自定义配置
3.1 自定义快捷键
3.2 自动命令
3.3 函数定义
4. 插件管理
4.1 插件管理工具
4.1.1 安装 vim-plug
4.1.2 配置 vim-plug
4.1.3 安装插件
4.2 常用插件
4.2.1 NERDTree
4.2.2 Fzf
4.2.3 Lightline
5. 高级使用技巧
5.1 寄存器与宏录制
5.1.1 使用寄存器
5.1.2 录制宏
5.2 寄存器与剪切板的综合使用
5.3 实用技巧
5.3.1 快速移动光标
5.3.2 批量编辑
6. 结论
Vim 是一个强大且灵活的文本编辑器,广泛用于编写和编辑代码。其强大的自定义功能和插件生态系统使其成为开发者的最爱。在本文中,我们将深入探讨如何通过自定义配置和插件管理来优化 Vim,使其更加适应个人的开发需求和习惯。
1. 概述
Vim 的灵活性不仅体现在其基本功能上,还体现在其高度可定制化的配置和丰富的插件支持上。通过合理的配置和插件管理,开发者可以大幅提高工作效率,简化操作,提升使用体验。本文将介绍 Vim 的自定义配置方法,以及常用插件的安装和管理技巧。
2. Vim 配置文件
Vim 的配置文件主要包括 vimrc
文件和 gvimrc
文件。vimrc
文件用于配置 Vim 的一般设置,而 gvimrc
文件则用于配置 GVim 的图形界面设置。
2.1 .vimrc 文件
.vimrc
文件是 Vim 的主配置文件,通常位于用户的主目录中。通过编辑该文件,可以设置 Vim 的各种行为和选项。
" 基本配置示例
set number " 显示行号
set relativenumber " 显示相对行号
set tabstop=4 " 设置 tab 宽度为 4
set shiftwidth=4 " 设置缩进宽度为 4
set expandtab " 将 tab 替换为空格
set autoindent " 自动缩进
set smartindent " 智能缩进
set cursorline " 高亮当前行
set showcmd " 显示命令
set showmode " 显示模式
set incsearch " 增量搜索
set hlsearch " 高亮搜索结果
syntax on " 启用语法高亮
filetype plugin indent on " 启用文件类型插件和自动缩进
2.2 .gvimrc 文件
.gvimrc
文件用于配置 GVim 的图形界面设置。GVim 是 Vim 的图形化版本,提供了更多的界面功能。
" 基本配置示例
set guifont=Monaco:h12 " 设置字体
set guioptions-=T " 隐藏工具栏
set guioptions-=m " 隐藏菜单栏
set lines=40 " 设置窗口高度
set columns=80 " 设置窗口宽度
3. 自定义配置
Vim 的自定义配置不仅限于基本的编辑器设置,还可以通过编写 Vim 脚本来自定义各种功能。
3.1 自定义快捷键
通过设置自定义快捷键,可以简化常用操作,提高编辑效率。
" 自定义快捷键示例
nnoremap <C-s> :w<CR> " Ctrl+s 保存文件
nnoremap <C-q> :q<CR> " Ctrl+q 退出 Vim
vnoremap <C-c> "+y " Ctrl+c 复制到系统剪贴板
nnoremap <C-v> "+p " Ctrl+v 从系统剪贴板粘贴
3.2 自动命令
自动命令(autocommand)用于在特定事件发生时执行特定命令。
" 自动命令示例
autocmd BufNewFile,BufRead *.py setlocal tabstop=4 shiftwidth=4 expandtab " 针对 Python 文件设置缩进
autocmd BufWritePre * :%s/\s\+$//e " 保存文件前删除行尾空白
autocmd BufEnter * if &buftype == 'terminal' | :startinsert | endif " 进入终端缓冲区时自动进入插入模式
3.3 函数定义
通过定义函数,可以实现复杂的自定义操作。
" 函数定义示例
function! ToggleNumber()if &numberset nonumberelseset numberendif
endfunctionnnoremap <F3> :call ToggleNumber()<CR> " F3 切换行号显示
4. 插件管理
Vim 拥有一个丰富的插件生态系统,通过安装和管理插件,可以大幅扩展 Vim 的功能。
4.1 插件管理工具
常用的 Vim 插件管理工具包括 Vundle、Pathogen 和 vim-plug。本文以 vim-plug 为例,介绍插件的安装和管理。
4.1.1 安装 vim-plug
首先,下载并安装 vim-plug:
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
4.1.2 配置 vim-plug
在 .vimrc
文件中配置 vim-plug:
call plug#begin('~/.vim/plugged')" 插件列表
Plug 'tpope/vim-sensible' " 常用配置
Plug 'scrooloose/nerdtree' " 文件浏览器
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } " 模糊查找
Plug 'airblade/vim-gitgutter' " Git 更改显示
Plug 'itchyny/lightline.vim' " 状态栏
Plug 'junegunn/goyo.vim' " 专注模式call plug#end()
4.1.3 安装插件
在 Vim 中运行 :PlugInstall
安装插件:
:PlugInstall
4.2 常用插件
4.2.1 NERDTree
NERDTree 是一个流行的文件浏览器插件,可以方便地浏览和管理项目文件。
" NERDTree 配置示例
nnoremap <C-n> :NERDTreeToggle<CR> " Ctrl+n 切换 NERDTree
let NERDTreeShowHidden=1 " 显示隐藏文件
4.2.2 Fzf
Fzf 是一个强大的模糊查找工具,可以快速查找文件和文本。
" Fzf 配置示例
nnoremap <C-p> :Files<CR> " Ctrl+p 启动文件查找
nnoremap <C-g> :GFiles<CR> " Ctrl+g 启动 Git 文件查找
nnoremap <C-b> :Buffers<CR> " Ctrl+b 启动缓冲区查找
4.2.3 Lightline
Lightline 是一个轻量级的状态栏插件,可以美化 Vim 的状态栏。
" Lightline 配置示例
let g:lightline = {\ 'colorscheme': 'wombat',\ 'active': {\ 'left': [ [ 'mode', 'paste' ],\ [ 'readonly', 'filename', 'modified' ] ]\ },\ 'component_function': {\ 'filename': 'LightlineFilename'\ }\ }function! LightlineFilename()return expand('%:t') . ( &modified ? '[+]' : '' )
endfunction
5. 高级使用技巧
5.1 寄存器与宏录制
寄存器和宏录制是 Vim 的高级功能,可以显著提高编辑效率。
5.1.1 使用寄存器
Vim 的寄存器用于临时存储和检索文本。可以使用 "
访问寄存器。
" 复制到寄存器 a
"ayy" 从寄存器 a 粘贴
"ap
5.1.2 录制宏
宏用于录制和重复执行一系列命令。使用 q
开始录制,q
结束录制。
" 录制宏到寄存器 a
qa
iHello, World!<Esc>
q" 执行宏
@a" 重复执行宏
@@
5.2 寄存器与剪切板的综合使用
Vim 可以与系统剪切板集成,方便地复制和粘贴文本。
" 复制到系统剪切板
"+y" 从系统剪切板粘贴
"+p
5.3 实用技巧
以下是一些实用的 Vim 技巧,可以进一步提升编辑效率。
5.3.1 快速移动光标
" 移动到文件开头
gg" 移动到文件结尾
G" 移动到行首
^" 移动到行尾
$
5.3.2 批量编辑
" 替换当前行的 foo 为 bar
:s/foo/bar/g" 替换整个文件的 foo 为 bar
:%s/foo/bar/g" 批量缩进
>G
6. 结论
通过合理地自定义配置和管理插件,Vim 可以成为一个强大、高效的文本编辑器。无论是基础设置、快捷键、自定义命令,还是高级功能如寄存器和宏录制,Vim 都提供了丰富的工具和方法来满足不同的编辑需求。希望本文能帮助开发者更好地利用 Vim 提高工作效率,享受编程的乐趣。
相关文章:
Linux Vim教程(十):自定义配置与插件管理
目录 1. 概述 2. Vim 配置文件 2.1 .vimrc 文件 2.2 .gvimrc 文件 3. 自定义配置 3.1 自定义快捷键 3.2 自动命令 3.3 函数定义 4. 插件管理 4.1 插件管理工具 4.1.1 安装 vim-plug 4.1.2 配置 vim-plug 4.1.3 安装插件 4.2 常用插件 4.2.1 NERDTree 4.2.2 Fzf…...

代理协议解析:如何根据需求选择HTTP、HTTPS或SOCKS5?
代理IP协议是一种网络代理技术,可以实现隐藏客户端IP地址、加速网站访问、过滤网络内容、访问内网资源等功能。常用的IP代理协议主要有Socks5代理、HTTP代理、HTTPS代理这三种。代理IP协议主要用于分组交换计算机通信网络的互联系统中使用,只负责数据的路…...

Verilog语言和C语言的本质区别是什么?
在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 用老石的一句话其实很好说…...

Delphi5实现鱼C屏幕保护程序
效果图 鱼C屏幕保护程序 添加背景图片 在additional添加image组件,修改picture属性上传图片。 这个图片可以截屏桌面,方便后面满屏不留白操作。实现无边框 即上面的“- □ ”不显示 将Form1的borderstyle属性改为bsnone实现最大化,满屏 将…...

【计算机毕业设计】844学籍管理系统
🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板ÿ…...

Java之开发 系统设计 分布式 高性能 高可用
1、restful api 基于rest构建的api 规范: post delete put get 增删改查路径 接口命名 过滤信息状态码 2、软件开发流程 3、命名规范 类名:大驼峰方法名:小驼峰成员变量、局部变量:小驼峰测试方法名:蛇形命名 下划…...
java连接redis和基础操作命令
引入依赖 <!--引入java连接redis的驱动--><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.3.1</version></dependency> 单机模式连接redis main(){ //连接redis的信息 默认连接…...

土耳其云手机提升TikTok电商效率
在数字化飞速发展的今天,TikTok不仅是一个社交平台,更是一个巨大的电商市场。随着TikTok电商功能在全球范围内的扩展,土耳其的商家和内容创作者正面临着前所未有的机遇。本文将详细介绍土耳其云手机怎样帮助商家抓住机遇,实现业务…...

《Utilizing Ensemble Learning for Detecting Multi-Modal Fake News》
系列论文研读目录 文章目录 系列论文研读目录论文题目含义ABSTRACTINDEX TERMSI. INTRODUCTIONII. RELATED WORKA. FAKE NEWS CLASSIFICATION APPROACHES FOR SINGLE-MODALITY 单模态虚假新闻分类方法1) SINGLE-MODALITY BASED CLASSIFICATION APPROACHES USING TEXTUAL FEATUR…...

Oracle集群RAC磁盘管理命令asmcmd的使用
文章目录 ASM磁盘共享简介ASM磁盘共享的优势ASM磁盘组成ASM磁盘共享的应用场景Asmcmd简介Asmcmd的功能Asmcmd的命令Asmcmd的使用注意事项Asmcmd运行模式交互模式运行非交互模式运行ASMCMD命令分类实例管理命令:文件管理命令:磁盘组管理命令:模板管理命令:文件访问管理命令:…...
vscode插件开发笔记——大模型应用之AI编程助手
系列文章目录 文章目录 系列文章目录前言一、代码补全 前言 最近在开发vscode插件相关的项目,网上很少有关于大模型作为AI 编程助手这方面的教程。因此,借此机会把最近写的几个demo分享记录一下。 一、代码补全 思路: 读取vscode插件上鼠…...

@JSONField(format = “yyyyMMddHH“)的作用和使用
JySellerItqrdDataDO对象中的字段为: private Date crdat; 2.数据库中的相应字段为: crdat datetime DEFAULT NULL COMMENT 创建时间,2. 打印出的结果为: “crdat”:“2024072718” 年月日时分秒 3. 可以调整format的格式 4. 这样就把Date类…...
计算机网络 6.1Internet概念
第六章 Internet基础 第一节 Internet概念 一、认识Internet 1.定义:集现代计算机技术、通信技术于一体的全球性计算机互联网。 2.地位:当今世界上规模最大的计算机互联网。 3.使用协议:TCP/IP。 4.基本结构: ①主干网…...

编写SpringBoot的自定义starter包
starter项目 先来看一下Starter的官方解释: Spring Boot Starter 是一种方便的依赖管理方式,它封装了特定功能或技术栈的所有必要依赖项和配置,使得开发者可以快速地将这些功能集成到Spring Boot项目中。Spring Boot官方提供了一系列的Star…...

【LeetCode:3106. 满足距离约束且字典序最小的字符串 + 贪心】
🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...

25 Python常用函数——reduce()
在 Python 3.x 中,reduce() 不是内置函数,而是放到了标准库 functools 中,需要先导入再使用。 标准库 functools 中的函数 reduce() 可以将一个接受两个参数的函数以迭代累积的方式从左到右依次作用到一个序列或迭代器对象的所有元素上&#…...

oracle登录报“ORA-27101: shared memory realm does not exist”
oracle登录报“ORA-27101: shared memory realm does not exist” 问题: 1、使用ip:1521/服务名方式连库报错" ORA-27101: shared memory realm does not exist Linux-x86_64 Error: 2: No such file or directory" 2、sqlplus XX/密码 可以登录数据库 …...

界面控件Telerik UI for WPF 2024 Q2亮点 - 全新的AIPrompt组件
Telerik UI for WPF拥有超过100个控件来创建美观、高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序。UI for WPF支持MVVM、触摸等,创建的应用程序可靠且结构良好,非常容易维护,其直观的API将无缝地集成Visual Studio…...
IT服务运营过程中的资源要素管理(至简)
在IT服务运营管理过程中,所有资源要投入正式、连续、稳定运行,要保持规范化的管理和标准化的操作,具体包括工具管理、知识管理、服务台管理与评价、备件库管理等内容。 一、工具管理 1、工具的基本运营。见下表: 工具的基本运营…...
wodpress设置固定链接的方式和好处【SEO优化】
设置固定链接的好处 提高用户体验:固定链接使得网址更加直观和易于记忆,用户可以更容易地分享和访问文章。 优化SEO:搜索引擎更倾向于索引具有清晰结构的网址,固定链接有助于提高网站的SEO表现。 避免URL重复:固定链…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...