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

【vim 学习系列文章 2 - vim 常用插件配置】

文章目录

    • 1.1 vim 常用插件
      • 1.1.1 vim 插件 Pathogen 管理
      • 1.1.2 vim 常用插件推荐
      • 1.1.3 vim Leaderf
      • 1.1.4 vim ripgrep 工具
      • 1.1.5 vim Leaderf 配合 rg
      • 1.1.6 vim autocmd 配置
    • 1.2 其它类型文件 vimrc 配置
      • 1.2.1 System Verilog vimrc 配置

上篇文章:vim 学习系列文章 1 - vim 常用配置
下篇文章:vim 学习系列文章 3 - vim 选中、删除、复制、修改引号或括号内的内容

1.1 vim 常用插件

1.1.1 vim 插件 Pathogen 管理

我一般使用 Pathogen 管理器安装 vim 插件, 那么什么是 Pathogen 呢? Pathogen 一般作为 vim 新手的第一个插件,用来统一管理 vim 插件包。(官方解释)非常容易地管理你的 ‘runtimepath’ , 在实际项目中,vim-pathogen 可以在它的私有文件夹下非常轻松地安装插件和管理运行时文件。

Pathogen 安装
复制以下代码到你的终端

mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim https://gitee.com/jojo2019007/vim-pathogen/raw/master/autoload/pathogen.vim

添加以下代码到 ~/.vimrc 文件中

execute pathogen#infect()
syntax on
filetype plugin indent on

此时 Pathogen 已经成功安装,可以安装以下插件测试下

cd ~/.vim/bundle && 
git clone https://github.com/tpope/vim-sensible.git

1.1.2 vim 常用插件推荐

目前我主要使用以下 vim 插件:

CondingCos:~/.vim$ ls
autoload  bundle  doc  plugin  README.mdCondingCos:~/.vim/bundle$ ls
autoload_cscope.vim  ctrlp.vim  fzf.vim  nerdtree  supertab  undotree  
vim-colors-solarized  vim-commentary  vinarise.vim  LeaderF  ripgrep

1.1.3 vim Leaderf

由于我使用的 git submoudle 管理本地 vim 插件,首先使用 git submodule add 命令将远程项目 Leaderf 和 ripgrep 克隆到本地 ~/.vim/bundle 文件夹下,具体步骤如下:

CodingCos@developer-numb-1:~/.vim/bundle$
CodingCos@developer-numb-1:~/.vim/bundle$ git submodule add git@github.com:BurntSushi/ripgrep.git
Cloning into '/mnt/user_home/CodingCos/.vim/bundle/ripgrep'...
remote: Enumerating objects: 10128, done.
remote: Counting objects: 100% (181/181), done.
remote: Compressing objects: 100% (103/103), done.
remote: Total 10128 (delta 115), reused 123 (delta 78), pack-reused 9947
Receiving objects: 100% (10128/10128), 4.35 MiB | 3.09 MiB/s, done.
Resolving deltas: 100% (6866/6866), done.
CodingCos@developer-numb-1:~/.vim/bundle$
CodingCos@developer-numb-1:~/.vim/bundle$ git submodule add git@github.com:Yggdroot/LeaderF.git
Cloning into '/mnt/user_home/CodingCos/.vim/bundle/LeaderF'...
remote: Enumerating objects: 7616, done.
remote: Counting objects: 100% (778/778), done.
remote: Compressing objects: 100% (299/299), done.
remote: Total 7616 (delta 435), reused 692 (delta 379), pack-reused 6838
Receiving objects: 100% (7616/7616), 2.03 MiB | 1.68 MiB/s, done.
Resolving deltas: 100% (4584/4584), done.
CodingCos@developer-numb-1:~/.vim/bundle$
CodingCos@developer-numb-1:~/.vim/bundle$ git submodule status43433aa8dad1601acf923d3c25fa3325799508aa LeaderF (v1.23-131-g43433aa)26f428f400d96d25a9d633e6314f6e1760923db1 autoload_cscope.vim (0.5)564176f01d7f3f7f8ab452ff4e1f5314de7b0981 ctrlp.vim (1.79-29-g564176f)d5f1f8641b24c0fd5b10a299824362a2a1b20ae0 fzf.vim (d5f1f86)eed488b1cd1867bd25f19f90e10440c5cc7d6424 nerdtree (6.10.16-1-geed488b)bc5504932764d8d4735bf955f6f7e04a95f151b8 ripgrep (grep-0.2.10-55-gbc55049)f0093ae12a9115498f887199809a6114659fc858 supertab (2.1-41-gf0093ae)08e259be24d4476c1ee745dc735eefd44f90efdc undotree (rel_4.2-147-g08e259b)528a59f26d12278698bb946f8fb82a63711eec21 vim-colors-solarized (heads/master)3654775824337f466109f00eaf6759760f65be34 vim-commentary (v1.3-20-g3654775)84dd647932fbd029310cca31f417c42f56d60547 vinarise.vim (ver.1.0-140-g84dd647)

note: 需要登陆自己的 github,再使用 git submodule add, 否是 执行不成功

执行完上面命令后,需要将对应的文件推到 自己的 github

CodingCos@developer-numb-1:~/.vim$ git st .
On branch main
Your branch is up to date with 'origin/main'.Changes to be committed:(use "git reset HEAD <file>..." to unstage)modified:   .gitmodulesnew file:   bundle/LeaderFnew file:   bundle/ripgrep
CodingCos@developer-numb-1:~/.vim$ git commit -a -s
CodingCos@developer-numb-1:~/.vim$ git branch -a
* mainremotes/origin/HEAD -> origin/mainremotes/origin/main
CodingCos@developer-numb-1:~/.vim$ git push origin HEAD:origin/main
Counting objects: 4, done.
Delta compression using up to 64 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 549 bytes | 549.00 KiB/s, done.
Total 4 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), completed with 3 local objects.
To github.com:xxxx/.vim.git

note: 使用Leaderf之前需要先安装 ripgrep

1.1.4 vim ripgrep 工具

ripgrep(简称 rg),是一个用 Rust 实现的命令行搜索工具,可以通过正则来搜索当前的目录。默认情况下 ripgrep 会遵循 .gitignore 的内容,并且自动跳过隐藏的文件目录,以及二进制文件

可以通过下面命令进行安装:

sudo apt-get install ripgrep

用法

  • 最直接的用法
$ rg 'device' ./

会显示当前目录下的搜索内容,会打印出文件名及关键字出现的行数。
和 grep 命令类似,也有三个打印出上下行的选项:
-A NUM 打印匹配行后面 after N
-B NUM 打印匹配行前面 before N
-C NUM 打印匹配行前后 N

  • 用正则表达式搜索
    使用 -e REGEX 来指定正则表达式:
rg -e "*device" -C2
  • 搜索所有内容包括 gitignore 和隐藏文件
    默认 rg 会忽略 .gitignore 和隐藏文件,可以使用 -uu 来查询所有内容:
rg -uu "device" ./
  • 显示匹配的次数
    使用 -c 来显示匹配的次数:
rg -c "device" ./

结果会在文件名后面增加一个次数。

  • 搜索指定的文件类型
    可以使用 -t type 来指定文件类型, 可以用 -T 来不搜索某种类型文件, 比如:只搜索 cpp 文件 (-t) :
rg -w 'device' ./ -tcpp

所支持的文件类型可以通过下面命令来查看

rg --type-list

看到这里,有些读者可能要问假如我要在两个文件类型中查找呢,这个时候 -t 参数就无法满足了,需要引入新的 -g 参数,man rg 看一下 -g 就知道该选项后面跟着一个 GLOB,正则表达式,包括或者去除一些文件或者目录。比如要在 c 文件或者 cpp 文件中查找 “device” 关键字:

rg -g "*.{c,cpp}" "device"
  • 显示不包含关键字的行
    使用选项 -v 来显示不包含关键字的行, 比如显示不含 “device” 的行:
rg -v "device" -tcpp ./
  • 忽略大小写(-i)

  • 只打印包含匹配内容的文件名
    使用 -l 来打印文件名:

rg -l -w "device" 

相反的是如果要打印没有匹配内容的文件名:

rg --files-without-match -w "device" ./

1.1.5 vim Leaderf 配合 rg

再 vim 中运行 LeaderF 之后的操作
可以通过 help leaderf-prompt 查看所有的操作, 比较常用的列在下面:

<C-C>, <ESC> : 退出
<C-R> : 在模糊查询和正则表达式模式间切换
<C-F> : 在全路径搜索和名字搜索模式间切换
<Tab> : 切换成normal模式
<C-V>, <S-Insert> : 从剪切板里copy字符串进行查询
<C-U> : 清除已经打出的字符
<C-J>, <C-K> : 在结果列表中移动
<Up>, <Down> : 从历史记录里调出上一次/下一次的输入pattern
<2-LeftMouse> or <CR> : 打开在光标处的文件或者被选择的多个文件
<F5>  : 刷新缓存
<C-P> : 预览选中结果
<C-Up> : 在预览popup窗口里滚动向上
<C-Down> : 在预览popup窗口里滚动向下

一旦按 tab, 则会进入 normal 模式, 可以使用大部分 normal 模式命令。

1.1.6 vim autocmd 配置

http://yyq123.github.io/learn-vim/learn-vi-49-01-autocmd.html

1.2 其它类型文件 vimrc 配置

1.2.1 System Verilog vimrc 配置

请参考:https://blog.csdn.net/weixin_42916702/article/details/117818186

上篇文章:vim 学习系列文章 1 - vim 常用配置
下篇文章:vim 学习系列文章 3 - vim 选中、删除、复制、修改引号或括号内的内容

推荐阅读
https://www.jianshu.com/p/9000cd49822c
https://retzzz.github.io/dc9af5aa/

相关文章:

【vim 学习系列文章 2 - vim 常用插件配置】

文章目录 1.1 vim 常用插件1.1.1 vim 插件 Pathogen 管理1.1.2 vim 常用插件推荐1.1.3 vim Leaderf1.1.4 vim ripgrep 工具1.1.5 vim Leaderf 配合 rg1.1.6 vim autocmd 配置 1.2 其它类型文件 vimrc 配置1.2.1 System Verilog vimrc 配置 上篇文章&#xff1a;vim 学习系列文章…...

【外卖系统】修改菜品

需求分析 在菜品管理列表页面点击修改按钮&#xff0c;跳转到修改页面&#xff0c;在修改页面回显菜品相关信息并进行修改&#xff0c;在最后点击确定按钮完成修改操作 代码设计 页面发送ajax请求&#xff0c;请求服务端获取分类数据&#xff0c;用于菜品分类下拉框中数据显…...

【暑期每日一练】 day11

目录 选择题 &#xff08;1&#xff09; 解析&#xff1a; &#xff08;2&#xff09; 解析&#xff1a; &#xff08;3&#xff09; 解析&#xff1a; &#xff08;4&#xff09; 解析&#xff1a; &#xff08;5&#xff09; 解析&#xff1a; 编程题 题一 描…...

神经概率语言模型

本文主要参考《A Neural Probabilistic Language Model》这是一篇很重要的语言模型论文,发表于2003年。主要贡献如下: 提出了一种基于神经网络的语言模型&#xff0c;是较早将神经网络应用于语言模型领域的工作之一&#xff0c;具有里程碑意义。采用神经网络模型预测下一个单词…...

什么是shadow DOM?

Shadow DOM&#xff08;影子DOM&#xff09;是一种用于在Web组件中封装HTML、CSS和JavaScript的技术。它是Web组件的一个重要特性&#xff0c;旨在将组件的结构、样式和行为封装在一个独立的、隔离的DOM树中&#xff0c;从而与主文档的DOM树相互隔离。 传统的Web开发中&#x…...

我的 365 天创作纪念日

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…...

spark-sql : “java.lang.NoSuchFieldError: out“ 异常解决

异常现象 at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:847)at org.apac…...

Node.js入门笔记(包含源代码)以及详细解析

Node.js 入门笔记源码 01、如何在终端中执行js 文件 目标&#xff1a;将下面的代码语句在中断中执行 代码演示&#xff1a; console.log(Hello World)for (let i 0;i < 3;i) {console.log(6)}方法&#xff1a;在文件上右击打开在终端中执行&#xff0c;然后输入node空格 输…...

windows自动化点击大麦app抢购、捡漏,仅支持windows11操作系统

文章目录 必要条件程序运行必要条件 确保windows11版本操作系统,如果不是可以通过镜像升级为windows11如果已经是windows11操作系统,确保更新到最新版本 修改系统所在时区,将国家或地区改为美国 开启虚拟化 勾选Hyper-V,如果没有则不需要勾选 勾选虚拟机平台 勾选完毕,点…...

vue 拦截 v-html 中 a 标签 href 跳转

记录 template 中 给需要 拦截的 代码片段加上click 方法 click“targetNodeNameClick” <p class"message-content message-content-text" v-html"replaceURLWithHTMLLinks(getText(message))" click"targetNodeNameClick"></p>然…...

分布式id、系统id、业务id以及主键之间的关系

推荐 连分布式ID都理解不了&#xff0c;你是刚培训出来冒充面试官的吧 1 分布式id、系统id、业务id以及主键之间的关系 分布式ID、系统ID、业务ID和主键的关系&#xff1a; 分布式ID&#xff1a;在分布式系统中&#xff0c;由于存在多个独立的节点&#xff0c;为了保证每个节…...

设计模式七:适配器模式(Adapter Pattern)

适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;用于将一个类的接口转换成客户端所期望的另一个接口。它允许不兼容的接口能够协同工作。 适配器模式涉及角色&#xff1a; 目标接口&#xff08;Target Interface&#xff09;&#xff1a…...

数据结构---队列

(一)队列之基础补充 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。 —— 百科 「队列 Queue」是一种…...

chatGPT在软件测试中应用方式有哪些?

ChatGPT可以在软件测试中以以下方式应用&#xff1a; 1. 自动化对话测试&#xff1a;ChatGPT可以用于自动化对话测试&#xff0c;模拟用户与软件系统进行实时对话。它可以扮演用户的角色&#xff0c;向系统发送各种类型的指令和请求&#xff0c;并验证系统的响应是否符合预期。…...

chatgpt 接口使用(一)

使用api实现功能 参考链接&#xff1a;https://platform.openai.com/examples 安装库&#xff1a; pip3 install openai 例如&#xff1a; import os import openaiopenai.api_key os.getenv("OPENAI_API_KEY") response openai.ChatCompletion.create(model&q…...

【个人笔记】Linux 服务管理两种方式service和systemctl

service命令与systemctl 命令 service 命令与传统的 SysVinit 和 Upstart 初始化系统相关。较早期的 Linux 发行版&#xff08;如早期的 Ubuntu、Red Hat 等&#xff09;使用了这些初始化系统。service 命令用于启动、停止、重启和查询系统服务的状态。虽然许多现代 Linux 发行…...

HCIP中期考试实验

考试需求 1、该拓扑为公司网络&#xff0c;其中包括公司总部、公司分部以及公司骨干网&#xff0c;不包含运营商公网部分。 2、设备名称均使用拓扑上名称改名&#xff0c;并且区分大小写。 3、整张拓扑均使用私网地址进行配置。 4、整张网络中&#xff0c;运行OSPF协议或者BGP…...

【WebRTC---源码篇】(二十二)WebRTC的混音处理

音频混音主力 音频混音主体主要通过(重采样) + (混音)为主 音频重采样 内容实现是在webrtc::voe中实现的,下面来对重采样全流程逐一分析 。 void RemixAndResample(const AudioFrame& src_frame,//源音频数据帧PushResampler<int16_t>* resampler,//重采样对…...

MTK system_server 卡死导致手机重启案例分析

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、MTK AEE Log分析工具二、AEE Log分析流程三、system_server 卡死案例分析及解决 本文主要针对 Exception Type: system_server_watchdog , system_…...

加强 Kubernetes 能力:利用 CRD 定义多版本资源的实现方式

姚灿武&#xff0c;Rancher 中国研发工程师&#xff0c;拥有 7 年云计算领域经验&#xff0c;热衷开源技术&#xff0c;在云原生相关技术领域拥有丰富的开发和实践经验。 CRD&#xff0c;即自定义资源定义&#xff08;Custom Resource Definition&#xff09;&#xff0c;是 Ku…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...