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

只通过在vimrc文件写东西来实现或安装vim的插件

2023年9月23日,周日上午

有时候觉得用插件管理器来安装插件太麻烦了,

所以我就在想能不能只通过在vimrc文件写东西来实现或安装vim的插件,

不过这样做肯定有很大的局限性,但我会尽量做到最好的效果

不定期更新


把下面这些代码直接复制到vimrc文件即可!!!

括号补全

" 括号自动补全
inoremap ( ()<left>
inoremap [ []<left> 
inoremap { {}<left>" 自动补全引号
inoremap " ""<left>
inoremap ' ''<left>

轻量化自动补全

这段代码来自GitHub:GitHub - skywind3000/vim-auto-popmenu: Display the Completion Menu Automantically (next AutoComplPop) !!

" enable this plugin for filetypes, '*' for all files.
let g:apc_enable_ft = {'text':1, 'markdown':1, 'php':1, 'c':1, 'cpp':1, 'h':1, 'java':1}" source for dictionary, current or other loaded buffers, see ':help cpt'
set cpt=.,k,w,b" don't select the first item.
set completeopt=menu,menuone,noselect" suppress annoy messages.
set shortmess+=c" vim: set noet fenc=utf-8 ff=unix sts=4 sw=4 ts=4 :
"
" apc.vim - auto popup completion window
"
" Created by skywind on 2020/03/05
" Last Modified: 2022/12/05 21:22
"
" Features:
"
" - auto popup complete window without select the first one
" - tab/s-tab to cycle suggestions, <c-e> to cancel
" - use ApcEnable/ApcDisable to toggle for certiain file.
"
" Usage:
"
" set cpt=.,k,b
" set completeopt=menu,menuone,noselect
" let g:apc_enable_ft = {'text':1, 'markdown':1, 'php':1}let g:apc_enable_ft = get(g:, 'apc_enable_ft', {})    " enable filetypes
let g:apc_enable_tab = get(g:, 'apc_enable_tab', 1)   " remap tab
let g:apc_min_length = get(g:, 'apc_min_length', 2)   " minimal length to open popup
let g:apc_key_ignore = get(g:, 'apc_key_ignore', [])  " ignore keywords
let g:apc_trigger = get(g:, 'apc_trigger', "\<c-n>")  " which key to trigger popmenu" get word before cursor
function! s:get_context()return strpart(getline('.'), 0, col('.') - 1)
endfuncfunction! s:meets_keyword(context)if g:apc_min_length <= 0return 0endiflet matches = matchlist(a:context, '\(\k\{' . g:apc_min_length . ',}\)$')if empty(matches)return 0endiffor ignore in g:apc_key_ignoreif stridx(ignore, matches[1]) == 0return 0endifendforreturn 1
endfuncfunction! s:check_back_space() abortreturn col('.') < 2 || getline('.')[col('.') - 2]  =~# '\s'
endfuncfunction! s:on_backspace()if pumvisible() == 0return "\<BS>"endiflet text = matchstr(s:get_context(), '.*\ze.')return s:meets_keyword(text)? "\<BS>" : "\<c-e>\<bs>"
endfunc" autocmd for CursorMovedI
function! s:feed_popup()let enable = get(b:, 'apc_enable', 0)let lastx = get(b:, 'apc_lastx', -1)let lasty = get(b:, 'apc_lasty', -1)let tick = get(b:, 'apc_tick', -1)if &bt != '' || enable == 0 || &pastereturn -1endiflet x = col('.') - 1let y = line('.') - 1if pumvisible()let context = s:get_context()if s:meets_keyword(context) == 0call feedkeys("\<c-e>", 'n')endiflet b:apc_lastx = xlet b:apc_lasty = ylet b:apc_tick = b:changedtickreturn 0elseif lastx == x && lasty == yreturn -2elseif b:changedtick == ticklet lastx = xlet lasty = yreturn -3endiflet context = s:get_context()if s:meets_keyword(context)silent! call feedkeys(get(b:, 'apc_trigger', g:apc_trigger), 'n')let b:apc_lastx = xlet b:apc_lasty = ylet b:apc_tick = b:changedtickendifreturn 0
endfunc" autocmd for CompleteDone
function! s:complete_done()let b:apc_lastx = col('.') - 1let b:apc_lasty = line('.') - 1let b:apc_tick = b:changedtick
endfunc" enable apc
function! s:apc_enable()call s:apc_disable()augroup ApcEventGroupau!au CursorMovedI <buffer> nested call s:feed_popup()au CompleteDone <buffer> call s:complete_done()augroup ENDlet b:apc_init_autocmd = 1if g:apc_enable_tabinoremap <silent><buffer><expr> <tab>\ pumvisible()? "\<c-n>" :\ <SID>check_back_space() ? "\<tab>" : \ get(b:, 'apc_trigger', g:apc_trigger)inoremap <silent><buffer><expr> <s-tab>\ pumvisible()? "\<c-p>" : "\<s-tab>"let b:apc_init_tab = 1endifif get(g:, 'apc_cr_confirm', 0) == 0inoremap <silent><buffer><expr> <cr> \ pumvisible()? "\<c-y>\<cr>" : "\<cr>"elseinoremap <silent><buffer><expr> <cr> \ pumvisible()? "\<c-y>" : "\<cr>"endifinoremap <silent><buffer><expr> <bs> <SID>on_backspace()let b:apc_init_bs = 1let b:apc_init_cr = 1let b:apc_save_infer = &infercasesetlocal infercaselet b:apc_enable = 1
endfunc" disable apc
function! s:apc_disable()if get(b:, 'apc_init_autocmd', 0)augroup ApcEventGroupau! augroup ENDendifif get(b:, 'apc_init_tab', 0)silent! iunmap <buffer><expr> <tab>silent! iunmap <buffer><expr> <s-tab>endifif get(b:, 'apc_init_bs', 0)silent! iunmap <buffer><expr> <bs>endifif get(b:, 'apc_init_cr', 0)silent! iunmap <buffer><expr> <cr>endifif get(b:, 'apc_save_infer', '') != ''let &l:infercase = b:apc_save_inferendiflet b:apc_init_autocmd = 0let b:apc_init_tab = 0let b:apc_init_bs = 0let b:apc_init_cr = 0let b:apc_save_infer = ''let b:apc_enable = 0
endfunc" check if need to be enabled
function! s:apc_check_init()if &bt != '' || get(b:, 'apc_enable', 1) == 0returnendifif get(g:apc_enable_ft, &ft, 0) != 0ApcEnableelseif get(g:apc_enable_ft, '*', 0) != 0ApcEnableelseif get(b:, 'apc_enable', 0)ApcEnableendif
endfunc" commands & autocmd
command! -nargs=0 ApcEnable call s:apc_enable()
command! -nargs=0 ApcDisable call s:apc_disable()augroup ApcInitGroupau!au FileType * call s:apc_check_init()au BufEnter * call s:apc_check_init()au TabEnter * call s:apc_check_init()
augroup END

相关文章:

只通过在vimrc文件写东西来实现或安装vim的插件

2023年9月23日&#xff0c;周日上午 有时候觉得用插件管理器来安装插件太麻烦了&#xff0c; 所以我就在想能不能只通过在vimrc文件写东西来实现或安装vim的插件&#xff0c; 不过这样做肯定有很大的局限性&#xff0c;但我会尽量做到最好的效果 不定期更新 把下面这些代码…...

云原生Kubernetes:K8S存储卷

目录 一、理论 1.存储卷 2.emptyDir 存储卷 3.hostPath卷 4.NFS共享存储 5.PVC 和 PV 6.静态创建PV 7.动态创建PV 二、实验 1.emptyDir 存储卷 2.hostPath卷 3.NFS共享存储 4.静态创建PV 5.动态创建PV 三、问题 1.生成pod一直pending 2.shoumount -e未显示共享…...

“五育”并举育人体系构建的实践研究课题实施方案

目录 一、研究背景与意义 二、课题理论依据 三、国内外研究情况与现状 四、研究目标...

小样本目标检测:ECEA: Extensible Co-Existing Attention for Few-Shot Object Detection

论文作者&#xff1a;Zhimeng Xin,Tianxu Wu,Shiming Chen,Yixiong Zou,Ling Shao,Xinge You 作者单位&#xff1a;Huazhong University of Science and Technology; UCAS-Terminus AI Lab 论文链接&#xff1a;http://arxiv.org/abs/2309.08196v1 内容简介&#xff1a; 1&…...

Android 10.0 系统开启和关闭黑白模式主题功能实现

1. 概述 在10.0的rom系统开发定制化中,在系统SystemUI的下拉状态栏中,产品开发功能需求要求添加黑白模式功能开关的功能,就是打开黑白模式,系统颜色就会变成黑白颜色, 关闭黑白模式开关系统就会变成彩色模式,所以就需要了解下系统是怎么设置黑白模式和彩色模式的,然后添…...

Linux-VI和VIM

目录 VI的使用 VI的三种模式 进入VI 切换至插入模式&#xff08;Insert mode&#xff09;编辑文件 Insert 的切换 退出VI及保存文件 搜索 快捷删除 光标定位到最后一行 VIM查找字符串 全匹配 模糊匹配&#xff08;正则表达式&#xff09; 快速查找​​​​​​…...

【送书】实现可观测性平台的技术要点是什么?

文章目录 实现可观测性平台的技术要点是什么?兼容全域信号量所谓全域信号量有哪些&#xff1f;统一采集和上传工具统一的存储后台自由探索和综合使用数据总结 实现可观测性平台的技术要点是什么? 随着可观测性理念的深入人心&#xff0c;可观测性平台已经开始进入了落地阶段…...

AUTOSAR汽车电子嵌入式编程精讲300篇-车载网络 CAN 总线报文异常检测

目录 前言 国内外研究现状 车载网络 CAN 总线威胁分析和报文异常检测研究...

基于MUSIC算法的二维超声波成像matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、基本原理 4.2、数学公式 4.3、实现过程 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..........................................…...

Linux0.11——第三回 做好访问内存的最基础准备工作

前面两回是把启动区的代码复制来复制去的&#xff0c;这里我们要讨论的就是操作系统怎么为程序访问内存的方式做初步规划的&#xff1f; 操作系统的代码最开头的 512 字节的数据&#xff0c;先从硬盘的启动区移动到了内存 0x7c00 处&#xff0c;然后又立刻被移动到 0x90000 处…...

unity自己对象池的使用

unity出了自己的对象池 这里记录一下用法 命名空间就是这个 一般有两种用法&#xff0c;第一种是在using里面获取&#xff0c;脱离这个域就释放。第二种是在Get和Release配合使用 // This version will only be returned to the pool if we call Release on it.//只有使用Re…...

el-image 和 el-table冲突层级冲突问题

其中原理&#xff0c;很多博客已经所过了&#xff0c;table组件中使用图片&#xff0c;会出现层级过低问题&#xff0c; 网上大部分解决方式是 使用穿透 // 单元格样式 ::v-deep(.el-table__cell) {position: static !important; }我在此不推荐这种解决方式&#xff0c;原因&a…...

6年Android开发前10月的总结,写给正在求职的安卓开发

进入大厂工作对许多人来说已经是一种挑战&#xff0c;但只要充分准备&#xff0c;很多问题都可以逐步解决。当然&#xff0c;运气也起到了一定的作用&#xff0c;但最终还是与自身的努力密不可分。运气是实力的一部分&#xff0c;因为自助者天助。 每到10月进行总结时&#xff…...

ConcurrentHashMap 的并发度是什么?

ConcurrentHashMap采用了一种基于分离链接的哈希表设计: 分离链接哈希表:在Java 8中,ConcurrentHashMap 内部使用了一个称为分离链接哈希表的数据结构。它的核心思想是,每个哈希桶(bucket)不再是一个单一的槽位,而是一个链表或红黑树(取决于链表的长度),用于存储具有…...

Redis 面霸篇:从高频问题透视核心原理

Redis 为什么这么快&#xff1f; 很多人只知道是 K/V NoSQl 内存数据库&#xff0c;单线程……这都是没有全面理解 Redis 导致无法继续深问下去。 这个问题是基础摸底&#xff0c;我们可以从 Redis 不同数据类型底层的数据结构实现、完全基于内存、IO 多路复用网络模型、线程…...

【100天精通Python】Day69:Python可视化_实战:导航定位中预测轨迹和实际轨迹的3D动画,示例+代码

目录 1. 预测的3D轨迹和实际轨迹的动画图&#xff0c;同时动态更新 2 真值轨迹设置为静态的&#xff0c;预测轨迹不断更新 3 网格的三维坐标系有旋转运动&#xff0c;以此全方位展示预测轨迹和真值轨迹之间的空间关系 1. 预测的3D轨迹和实际轨迹的动画图&#xff0c;同时动态更…...

MySQL中对varchar类型的列进行统计分析

需求1&#xff1a;如何在MYSQL中查找my_data列中所有<5%的数量&#xff0c;my_data为varchar类型 如果my_data列是varchar类型并存储为上面显示的格式&#xff08;如"28.62%“&#xff09;&#xff0c;那么在查找所有小于或等于5%的值时&#xff0c;我们首先需要去掉末…...

mysql索引最左前缀法则、使用场景

提示&#xff1a;mysql索引最左前缀使用的规则&#xff0c;以及索引失效和部分字段索引失效 文章目录 索引使用法则最左前缀法则 索引执行explain分析遵守联合索引最左前缀法则&#xff08;索引有效&#xff09;未遵守联合索引最左前缀法则&#xff08;索引失效或部分索引失效&…...

LeetCode75-06:移动零

移动零 初版(bug) func moveZeroes(nums []int) {if len(nums) 1{return}// 设置两个指针fp1,fp2分别指向第一个元素和第二个元素&#xff0c;// 两种情况// 假如指针fp1指向元素为零// 1) *fp2!0&#xff0c;则交换。// 2) *fp20&#xff0c;则fp2后移,直至*fp2!0,与fp1交换…...

C/C++统计满足条件的4位数个数 2023年5月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C统计满足条件的4位数个数 一、题目要求 1、编程实现 2、输入输出 二、解题思路 1、案例分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 C/C统计满足条件的4位数个数 2019年12月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 给定若干…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...