当前位置: 首页 > 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、编程实现 给定若干…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明&#xff0c;此教程是针对Simulink编译模型并导入Veristand中编写的&#xff0c;同时需要注意的是老用户编译可能用的是Veristand Model Framework&#xff0c;那个是历史版本&#xff0c;且NI不会再维护&#xff0c;新版本编译支持为VeriStand Model Generation Suppo…...