上篇文章: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 onfiletype plugin indent on此时 Pathogen 已经成功安装,可以安装以下插件测试下
cd ~/.vim/bundle && git clone https://github.com/tpope/vim-sensible.git 1.1.2 vim 常用插件推荐目前我主要使用以下 vim 插件:
CondingCos:~/.vim$ lsautoload bundle doc plugin README.mdCondingCos:~/.vim/bundle$ lsautoload_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.gitCloning 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 9947Receiving 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.gitCloning 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 6838Receiving 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 mainYour 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/ripgrepCodingCos@developer-numb-1:~/.vim$ git commit -a -sCodingCos@developer-numb-1:~/.vim$ git branch -a* mainremotes/origin/HEAD -> origin/mainremotes/origin/mainCodingCos@developer-numb-1:~/.vim$ git push origin HEAD:origin/mainCounting 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.gitnote: 使用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/