只通过在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日,周日上午 有时候觉得用插件管理器来安装插件太麻烦了, 所以我就在想能不能只通过在vimrc文件写东西来实现或安装vim的插件, 不过这样做肯定有很大的局限性,但我会尽量做到最好的效果 不定期更新 把下面这些代码…...
云原生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
论文作者:Zhimeng Xin,Tianxu Wu,Shiming Chen,Yixiong Zou,Ling Shao,Xinge You 作者单位:Huazhong University of Science and Technology; UCAS-Terminus AI Lab 论文链接:http://arxiv.org/abs/2309.08196v1 内容简介: 1&…...
Android 10.0 系统开启和关闭黑白模式主题功能实现
1. 概述 在10.0的rom系统开发定制化中,在系统SystemUI的下拉状态栏中,产品开发功能需求要求添加黑白模式功能开关的功能,就是打开黑白模式,系统颜色就会变成黑白颜色, 关闭黑白模式开关系统就会变成彩色模式,所以就需要了解下系统是怎么设置黑白模式和彩色模式的,然后添…...
Linux-VI和VIM
目录 VI的使用 VI的三种模式 进入VI 切换至插入模式(Insert mode)编辑文件 Insert 的切换 退出VI及保存文件 搜索 快捷删除 光标定位到最后一行 VIM查找字符串 全匹配 模糊匹配(正则表达式) 快速查找…...
【送书】实现可观测性平台的技术要点是什么?
文章目录 实现可观测性平台的技术要点是什么?兼容全域信号量所谓全域信号量有哪些?统一采集和上传工具统一的存储后台自由探索和综合使用数据总结 实现可观测性平台的技术要点是什么? 随着可观测性理念的深入人心,可观测性平台已经开始进入了落地阶段…...
AUTOSAR汽车电子嵌入式编程精讲300篇-车载网络 CAN 总线报文异常检测
目录 前言 国内外研究现状 车载网络 CAN 总线威胁分析和报文异常检测研究...
基于MUSIC算法的二维超声波成像matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、基本原理 4.2、数学公式 4.3、实现过程 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..........................................…...
Linux0.11——第三回 做好访问内存的最基础准备工作
前面两回是把启动区的代码复制来复制去的,这里我们要讨论的就是操作系统怎么为程序访问内存的方式做初步规划的? 操作系统的代码最开头的 512 字节的数据,先从硬盘的启动区移动到了内存 0x7c00 处,然后又立刻被移动到 0x90000 处…...
unity自己对象池的使用
unity出了自己的对象池 这里记录一下用法 命名空间就是这个 一般有两种用法,第一种是在using里面获取,脱离这个域就释放。第二种是在Get和Release配合使用 // This version will only be returned to the pool if we call Release on it.//只有使用Re…...
el-image 和 el-table冲突层级冲突问题
其中原理,很多博客已经所过了,table组件中使用图片,会出现层级过低问题, 网上大部分解决方式是 使用穿透 // 单元格样式 ::v-deep(.el-table__cell) {position: static !important; }我在此不推荐这种解决方式,原因&a…...
6年Android开发前10月的总结,写给正在求职的安卓开发
进入大厂工作对许多人来说已经是一种挑战,但只要充分准备,很多问题都可以逐步解决。当然,运气也起到了一定的作用,但最终还是与自身的努力密不可分。运气是实力的一部分,因为自助者天助。 每到10月进行总结时ÿ…...
ConcurrentHashMap 的并发度是什么?
ConcurrentHashMap采用了一种基于分离链接的哈希表设计: 分离链接哈希表:在Java 8中,ConcurrentHashMap 内部使用了一个称为分离链接哈希表的数据结构。它的核心思想是,每个哈希桶(bucket)不再是一个单一的槽位,而是一个链表或红黑树(取决于链表的长度),用于存储具有…...
Redis 面霸篇:从高频问题透视核心原理
Redis 为什么这么快? 很多人只知道是 K/V NoSQl 内存数据库,单线程……这都是没有全面理解 Redis 导致无法继续深问下去。 这个问题是基础摸底,我们可以从 Redis 不同数据类型底层的数据结构实现、完全基于内存、IO 多路复用网络模型、线程…...
【100天精通Python】Day69:Python可视化_实战:导航定位中预测轨迹和实际轨迹的3D动画,示例+代码
目录 1. 预测的3D轨迹和实际轨迹的动画图,同时动态更新 2 真值轨迹设置为静态的,预测轨迹不断更新 3 网格的三维坐标系有旋转运动,以此全方位展示预测轨迹和真值轨迹之间的空间关系 1. 预测的3D轨迹和实际轨迹的动画图,同时动态更…...
MySQL中对varchar类型的列进行统计分析
需求1:如何在MYSQL中查找my_data列中所有<5%的数量,my_data为varchar类型 如果my_data列是varchar类型并存储为上面显示的格式(如"28.62%“),那么在查找所有小于或等于5%的值时,我们首先需要去掉末…...
mysql索引最左前缀法则、使用场景
提示:mysql索引最左前缀使用的规则,以及索引失效和部分字段索引失效 文章目录 索引使用法则最左前缀法则 索引执行explain分析遵守联合索引最左前缀法则(索引有效)未遵守联合索引最左前缀法则(索引失效或部分索引失效&…...
LeetCode75-06:移动零
移动零 初版(bug) func moveZeroes(nums []int) {if len(nums) 1{return}// 设置两个指针fp1,fp2分别指向第一个元素和第二个元素,// 两种情况// 假如指针fp1指向元素为零// 1) *fp2!0,则交换。// 2) *fp20,则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、编程实现 给定若干…...
别再乱改注册表了!详解Windows桌面路径修改与explorer进程重启的底层逻辑
Windows桌面路径修改与explorer进程重启的底层逻辑解析 每次修改Windows注册表时,你是否真正理解背后的运行机制?当我们将桌面路径从默认位置迁移到D盘后,简单的"还原默认值"操作有时并不能完全解决问题。这背后涉及Windows Shell …...
图解numpy轴运算:用动画演示argmin/argmax在不同维度下的工作原理(附可运行代码)
用空间思维理解NumPy轴运算:argmin/argmax的维度穿越指南 当你第一次在NumPy中遇到axis参数时,是否感觉像在解一道空间几何题?本文将通过视觉化的思维模型,带你穿透维度的迷雾,掌握argmin和argmax在不同维度数组中的行…...
STEP3-VL-10B一文详解:多模态对齐损失函数设计与人类反馈强化学习细节
STEP3-VL-10B一文详解:多模态对齐损失函数设计与人类反馈强化学习细节 1. 引言:为什么一个“小”模型能比肩“大”模型? 最近,一个只有100亿参数的“小”模型在技术圈里引起了不小的轰动。它就是阶跃星辰开源的STEP3-VL-10B。你…...
千问3.5-2B视觉理解作品分享:电商商品图识别、医疗报告图解析、工业仪表读数案例
千问3.5-2B视觉理解作品分享:电商商品图识别、医疗报告图解析、工业仪表读数案例 1. 视觉理解模型简介 千问3.5-2B是Qwen系列中的小型视觉语言模型,它能够同时理解图片内容和处理自然语言。这个模型最特别的地方在于,你只需要上传一张图片&…...
弦音墨影在影视鉴赏中的创新应用:自然语言解析千里江山图式影像
弦音墨影在影视鉴赏中的创新应用:自然语言解析千里江山图式影像 1. 系统概述与核心价值 「弦音墨影」是一款将尖端人工智能技术与东方美学深度融合的视频理解系统。它基于Qwen2.5-VL多模态大模型,为用户提供了一种全新的视频内容交互体验——通过自然语…...
CogVideoX-2b作品集:这些流畅自然的视频都是用文字生成的
CogVideoX-2b作品集:这些流畅自然的视频都是用文字生成的 当文字能够直接转化为流畅自然的视频,创作的门槛将被彻底打破。CogVideoX-2b作为智谱AI开源的文字生成视频工具,正在让这一愿景成为现实。本文将展示一系列由该模型生成的惊艳视频作…...
【高清视频】PCIe 5.0 144 Lane 8槽位 PCIe Switch卡实拍讲解
我们之前拍摄了一个基于Broadcom的PCIe 5.0 PEX89144的144 lane的PCIe 5.0的扩展板 - “一张144 lane Gen5 switch卡,如何在桌面上扩出8个x16 PCIe测试环境?”,但是当时没有连接主机进行lspci的演示,今天的视频补上,感…...
文墨共鸣模型与SolidWorks设计文档交互:基于文本的产品设计需求分析
文墨共鸣模型与SolidWorks设计文档交互:基于文本的产品设计需求分析 你有没有过这样的经历?脑子里有一个新产品的绝妙想法,或者客户给了一堆模糊的功能描述,但当你坐在SolidWorks面前,准备把这些想法变成三维模型时&a…...
【AI实战项目】项目二:语言模型构建与应用实战
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程https://www.captainai.net/troubleshooter 项目背景: 在当今AI蓬勃发展的时代,语⾔模…...
Oracle VM VirtualBox快速上手指南——Win10环境下的下载与安装详解
1. 为什么选择VirtualBox搭建虚拟环境? 作为一个在虚拟化领域摸爬滚打多年的老手,我测试过市面上几乎所有主流虚拟机软件。对于Windows 10用户来说,Oracle VM VirtualBox绝对是入门虚拟化的首选利器。它最大的优势就是完全免费开源࿰…...
