抛弃Vundle切换到vim - plug:安装更新更快且支持插件延迟加载

重要的是它支持插件 - 延迟加载:

抛弃Vundle切换到vim - plug:安装更新更快且支持插件延迟加载

" 定义插件,默认用法,和 Vundle 的语法差不多
Plug 'junegunn/vim-easy-align'
Plug 'skywind3000/quickmenu.vim'
" 延迟按需加载,使用到命令的时候再加载或者打开对应文件类型才加载
Plug 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
" 确定插件仓库中的分支或者 tag
Plug 'rdnetto/YCM-Generator', { 'branch': 'stable' }
Plug 'nsf/gocode', { 'tag': 'v.20150303', 'rtp': 'vim' }

定义插件插件:插件命令并行安装,它比Vundle快得多。关键是VIM插头只有一个文件。它可以放在我的Github上的VIM配置仓库中。您只需要:插件,您可以更新自己。建议在使用时将插头分组。将组放入同一类别插件中,您只需要确定VIMRC中的哪个组。

将Vundle放在VIM插头之后,不仅插件安装和更新更快,而且大量插件。我将其配置为延迟加载,而VIM启动速度比Vundle时提高了很多。一旦使用Vundle时的插件数量超过30,管理就会非常痛苦。使用VIM插头后,50-60插件很容易放松。

象征

有许多CTAG替代品,例如GTAG,ETAGS和CQUERY。但是,我不排除CTAG,因为他支持50多种语言,并且没有具有很多语言的符号索引工具。同时,VIM和CTAG是充分整合的。至少取决于。可以直接通过CTAG执行大量基本工作。但是,我从来没有见过几个人有CTAG。

即使是配置文件也无法正确编写,正确的CTAG配置应为:

set tags=./.tags;,.tags

首先,在这里解释,我将标签文件的名称从“标签”替换为“ .tags”。之前添加了更多点,因此即使将其放置在项目中,也不容易污染当前项目的文档。 Gitignore也很容易编写,只需忽略该点开始时的文件名即可。

“ ./. tags;”的前半部分代表文件目录中名称“ .tags”的符号文件(不是“:pwd”的VIM Currentory目录)。转到父亲的首都,直到您找到.tags文件或递归到根目录为止。尚未找到。这对复杂的项目非常友好。源代码分布在不同的子目录中。 ;逗号的下半部分由.tags分开,指的是VIM当前目录(“:pwd”命令同时返回的目录,可以通过:CD ..命令更改找到)。 .TAGS文件。

最后,请更新您的ctags。请勿使用旧的旺盛ctags。该产品已停止更新已有十年了。请改用最新的通用CTAG。 Ren Ren主动维护,更强大,更多的语言支持。

(请注意,最新版本的通用CTAGS调用您需要添加一个-utput-format = e-ctags,并且输出格式与兼容的旧繁荣CTAG兼容,否则会有小问题,例如Windows Lows Lower Path姓名)。

通用ctags安装过程:

安装通用ctags

$ sudo apt install autoconf
$ cd /tmp
$ git clone https://github.com/universal-ctags/ctags
$ cd ctags
$ sudo apt install \
    gcc make \
    pkg-config autoconf automake \
    python3-docutils \
    libseccomp-dev \
    libjansson-dev \
    libyaml-dev \
    libxml2-dev
$ ./autogen.sh
$ ./configure --prefix=/opt/software/universal-ctags  # 安装路径可以况调整。
$ make -j8
$ sudo make install

创建一个CTAGS链接

$ sudo ln -s /opt/software/universal-ctags.ac/bin/ctags /usr/bin/ctags  #注意ctags的安装文件夹名称

在VIM中配置CTAG

"set tags=tags 我们不用这个
set tags=./.tags;,.tags
set autochdir

使用CTAG

cd ~/work/opencv   # 随便进入到一个你的c++工程目录
ctags -R .  #递归地生成.tags文件

然后使用ctrl+](跳到函数定义)和ctrl+t(跳出定义)在VIM中。请注意,它可以在多层嵌套中使用,因此这两个操作等于输入和玩堆栈。

自动索引

过去,我需要运行CTAG来生成索引,这每次都需要很多时间。现在有许多工具可以自动生成VIM 8以下的标签。这里最好的是:Vim-Gutentags。该插件主要做两件事:

- 文件文件的工程目录,即文件的当前路径正在递归查找是否存在`git',`.svn`,.project`和其他标志性文件(可以自定义)来确定当前文档的项目目录。

-Athe文件在同一项目下方更改,该文件可以自动增加相应项目的`.tags'文件。无需重新加速每行的几行,并且此增量更新可以确保“ .tags”文件的符号,这对于VIM来说很方便,可以找到带有dastation的快速搜索符号。

安装方法:在.vimrc中添加配置项目插件“ Ludovicchabant/vim-gutentags”,然后在VIM命令行模式下执行命令:Pluginstall可以完成VIM-Gutentags插件的安装。

vim-gutentags必须是简单的配置:

" gutentags 搜索工程目录的标志,碰到这些文件/目录名就停止向上一级目录递归
let g:gutentags_project_root = ['.root', '.svn', '.git', '.hg', '.project']
" 所生成的数据文件的名称
let g:gutentags_ctags_tagfile = '.tags'
" 将自动生成的 tags 文件全部放入 ~/.cache/tags 目录中,避免污染工程目录
let s:vim_tags = expand('~/.cache/tags')
let g:gutentags_cache_dir = s:vim_tags
" 配置 ctags 的参数
let g:gutentags_ctags_extra_args = ['--fields=+niazS', '--extra=+q']
let g:gutentags_ctags_extra_args += ['--c++-kinds=+px']
let g:gutentags_ctags_extra_args += ['--c-kinds=+px']
" 检测 ~/.cache/tags 不存在就新建
if !isdirectory(s:vim_tags)
   silent! call mkdir(s:vim_tags, 'p')
endif

使用上述设置,您通常不会感觉到标签文件的生成过程。只要修改文件,Guteentags就会在后台为您静默播放数据文件。您不需要护理= ...添加到本地标签搜索列表。

将相应标签文件的功率添加到当前文件的情况下,而不会影响其他文件。得益于VIM 8的异步机制,您可以随时使用相关功能,并且数据库是最新的。应当指出,古塔格斯需要依靠上面定义的project_root中的徽标来确定文件所在的项目。如果未在.git/.svn中托管文件,则Gutentags找不到项目目录,也不是野生文件。生成标签也是合理的。如果您想避免使用,则可以在野生文件目录中放置一个带有.root的空白文件,并积极告诉Gutentags。这是项目目录。

最后,使用几个单词,使用ctrl-]直接跳到当前窗口中的定义,使用ctrl-w]打开并查看光标下符号的定义,或使用预览窗口预览符号ctrl-w}定义下的符号。

我还写了很多有关CTAG的Vimscript,例如底部命令行的函数原型的原型而无需跳跃或反复按```alt+aLT+'';在窗口中,您将没有长列表可以选择。如果您有兴趣,可以使用我的VIM互联网。

编译和运行

在VIM 8之前,汇编和运行程序要么让VIM等待结束。不要做其他事情,也不要在新终端下剪切以分别运行编译命令和执行命令,或从TMUX切换。现在,异步模式的新版本可以使此过程更加简化。在这里,我们使用Asyncrun插件来简单地设置它:

Plug 'skywind3000/asyncrun.vim'
" 自动打开 quickfix window ,高度为 6
let g:asyncrun_open = 6
" 任务结束时候响铃提醒
let g:asyncrun_bell = 1
" 设置 F10 打开/关闭 Quickfix 窗口
nnoremap  :call asyncrun#quickfix_toggle(6)

插头-in可以在后台运行shell命令,并将结果输出到QuickFix窗口:

单个文件的最简单汇编类似于Sublime的默认构建系统。我们将F9定义为编译单文件:

nnoremap   :AsyncRun gcc -Wall -O2 "$(VIM_FILEPATH)" -o "$(VIM_FILEDIR)/$(VIM_FILENOEXT)" 

其中,执行时$(...)表格的宏将被实际的文件名或文件目录替换,以便您可以通过按F9来编译当前文件,并同时按F5:

nnoremap   :AsyncRun -raw -cwd=$(VIM_FILEDIR) "$(VIM_FILEDIR)/$(VIM_FILENOEXT)" 

使用双引号避免使用包含空格的文件名,“ -cwd = $(vim_filedir)”,可以在文件所在的目录上运行。完整的路径稍后可以避免Linux Plus“ ././”下方的当前路径,并且Windows不需要交叉平台问题。

参数`-raw`表示输出不需要匹配错误检测模板,并且原始内容已输出到QuickFix窗口。这样,您可以在编辑时编译F9。如果犯了一个错误,则可以在QuickFix窗口中按下汽车直接跳到错误的位置。汇编是正确的,然后执行。

接下来是项目的汇编。无论您是直接使用制造还是直接使用,都需要为一组文件做点事。您需要找到文件项目的目录。 Asyncrun将当前文件的项目目录方法与Gutentags相同。将递归添加到被发现称为“ .git”,“ .svn”,“ .hg”或“ .root”文件或目录。如果找不到递归根目录,则将文件的目录用作项目目录。您重新定义项目徽标:

let g:asyncrun_rootmarks = ['.svn', '.git', '.root', '_darcs', 'build.xml'] 

然后,在Asyncrun命令行中,“”或“ $(vim_root)”用于表示项目的路径,因此我们可以根据F7:F7:

nnoremap   :AsyncRun -cwd= make 

那么,如果您没有在SVN中而不是GIT中的项目呢?这很简单。将一个空的.Root文件放在您的项目目录中。将上一个配置配置并标识名为.root的文件。

继续使用F8配置当前项目:

nnoremap   :AsyncRun -cwd= -raw make run 

当然,您需要定义如何在makefile中运行,然后按F6执行测试:

nnoremap   :AsyncRun -cwd= -raw make test 

如果使用Cmake,也可以使用葫芦绘制勺子来定义F4以更新Makefile文件。

nnoremap   :AsyncRun -cwd= cmake . 

因为C/C ++标准库的实现方法是找到在后台运行直到程序退出时将被缓存的标准输出,您希望实时查看printf输出,您需要是FFLUSH (stdout)或程序开始关闭缓存:“ setbuf(stdout,null,null,null);”然后。

同时,如果使用std :: cout开发C ++程序,请在添加std :: endl之后直接在缓存中添加std :: endl。无需获得其他人。而且,如果您在Windows下使用GVIM,则可以弹出一个新的cmd.exe窗口来运行该程序:

nnoremap   :AsyncRun -cwd=$(VIM_FILEDIR) -mode=4 "$(VIM_FILEDIR)/$(VIM_FILENOEXT)" 
nnoremap   :AsyncRun -cwd= -mode=4 make run 

使用-mode = 4 Windows下的4个选项可以执行新的cmd.exe窗口以将程序或项目作为Visual Studio执行命令行工具,因此我们有以下快捷键:

好吧,汇编和操作几乎与记事本++ / gedit的体验相同。如果使用cmake重量重量,还可以编写一个小脚本,合并F4和F7的功能,检测CMakelists.txt文件的更改以执行CMake以更新Makefile,然后执行Make,否则执行否则执行直接制作,所以像某些人一样。

动态检查

代码检查是一件好事,因此您可以在编辑文本时帮助您标记潜在的错误。您不必等到编译或运行。我在2018年很奇怪。为什么它仍然在互联网上引入旧语法?每个看到此插头的人基本上都不会读它。旧的语法基本上是不可用的,不能实时检查。一旦保存文件,检查设备就会运行并等待很长时间,因此请使用真实的 - 时间刺激工具啤酒:

可能是这样,当您继续编辑新代码时,将有一个实时的位置来实时标记它。该银行将被标记为错误。当光标移动时,原因将在下面显示。在符号下方将被提醒。 ALE支持各种语言的各种代码分析仪。就C/C ++而言,它支持:GCC,Clang,Cppcheck,Clang-Format等。您需要单独安装它并将其放在路径中。自动调用这些Linters以分析最新代码,然后汇总各种衬里的结果并显示Re -Interface。

同样,我们需要进行简单的配置:

let g:ale_linters_explicit = 1
let g:ale_completion_delay = 500
let g:ale_echo_delay = 20
let g:ale_lint_delay = 500
let g:ale_echo_msg_format = '[%linter%] %code: %%s'
let g:ale_lint_on_text_changed = 'normal'
let g:ale_lint_on_insert_leave = 1
let g:airline#extensions#ale#enabled = 1
let g:ale_c_gcc_options = '-Wall -O2 -std=c99'
let g:ale_cpp_gcc_options = '-Wall -O2 -std=c++14'
let g:ale_c_cppcheck_options = ''
let g:ale_cpp_cppcheck_options = ''

基本上,它的定义是定义运行规则,信息显示格式和几个Linter的操作参数。其中,6和7行更重要。它规定,如果文本在正常模式下发生变化并在离开插入模式时运行衬里,那么这是相对保守的实践,如果不是,则会导致YouCompleteme的完成对话框经常刷新。

请记住,设置每个衬里的参数以忽略您认为没有问题的某些规则,否则错误太多了,您看不到它。默认错误和警告的样式太丑陋了。您需要修改它。例如,如果我使用GVIM,我将重新定义警告和错误样式以删除默认的红色背景。

let g:ale_sign_error = "\ue009\ue009"
hi! clear SpellBad
hi! clear SpellCap
hi! clear SpellRare
hi! SpellBad gui=undercurl guisp=red
hi! SpellCap gui=undercurl guisp=blue
hi! SpellRare gui=undercurl guisp=magenta

如果评估标准不同,则可以单独设置衬里的参数。请参阅啤酒以帮助文档。我基本上使用了两位检查员:GCC和CPPCHECK,可以在ALE中详细配置。前者主要检查是否存在语法错误。后者将主要给危险写作提供一些编码建议和警告。

我使用语法在两天前将其完全删除,然后我开始使用啤酒后,我就无法停止。在头两天,我还认为这是一个可选的点缀,但是在第三天帮助我找到两个潜在的错误时,我开始觉得没有白色安装,例如:

即使您使用各种类型的C/C ++ IDE,也只能实时标记一些汇编错误或警告,并使用ALE+ CPPCHECK/GCC,即使上面的潜在错误也可以帮助您自动找到它,以及您的范围内删除范围时,过去移动,以下命令行会提示您发生错误的原因。

一段时间后,让您为C/C ++写下一种安心和安慰的感觉。

调整

这是一个小功能。在侧边栏中显示一个修改状态。与当前文本和GIT/SVN存储库的版本相比,修改情况在侧边栏中显示。过去,VIM无法实时显示修改状态。现在建议使用VIM签名,实时显示修改状态。它比gitgutter强。除Git外,它还支持十几个主流版本管理系统,例如SVN/Mercurial/CVS。

当您没有注意到它时,您可能会觉得它不存在。当您真正看着眼睛时,您会发现此功能非常亲密。最新版本的Signify还具有命令`:signifyDiff',可以在左屏幕和右屏幕比较之前和之后记录,该命令比您的命令行Svn/git diff更直观。我最好同时在颠覆和GIT环境中工作。

表示前栏中的前啤酒将显示一些标签。默认的侧边栏将自动隐藏,并显示内容。有时,当您不喜欢侧边栏时,没有行为。是的 ”。

你可能想看:
« 上一篇
下一篇 »

相关推荐

FreeBasic:强大免费开源的64位basic编译器及应用优势

2025年05月10日

82阅读

脊柱侧弯矫正方法大盘点:运动康复、支具矫正等多种方式

2025年05月09日

85阅读

如何在winForm标题栏去掉标题文字且任务栏图标正常显示

2025年05月09日

85阅读

十一黄金周促销广告词大全,国庆购物狂欢等你来

2025年05月09日

77阅读

关闭快速编辑模式及插入模式,设置控制台指定文字颜色举例

2025年05月09日

63阅读

黄金搭档低糖高钙饮品包装及成分功效全解析,适合人群要知晓

2025年05月09日

91阅读