程序员圈子里有这样一个传说,用vim编程的都是大神。工作近七年未见一人是这种操作,本周开始我决定改用vim进行编程,最终实现双手不离键盘不动鼠标的终极目标!
本文讲解vim配置方法,后面还会讲到常用快捷键,使用中的一些心得。已经使用了三天左右进行开发调试,没比clion差太多,右手去触碰鼠标的次数明显降低,就是比较费脑子,因为你的移动,复制粘贴,替换等所有操作都需要思考如何去做。
vim的配置总共分为两个部分:1、添加插件,2、修改vim配置文件。
1、添加插件
我查看博客总结了5个插件,已经打包上传,免积分下载,直接替换使用。其中Trinity-2.2插件在打开vim的时候会报错,错误是windows和linux文本格式问题,上传的插件已经解决,直接使用即可。报的错误是类似 " ^M " 这种错误,如下面截图所示:
我是参照这篇文章解决的点这里,里面有相关操作,如下图所示:
下面讲解一下替换方式:
omnicppcomplete-0.41 解压后包含after, autoload 和 doc 3个文件夹。将 after 文件夹拷贝到 vim 文件所在位置,我的位置是:/usr/share/vim/vim80/ 。拷贝完如下图所示。
将 autoload 文件夹内的 omni 文件夹拷贝到 vim 的 autoload 文件夹下,如下图所示:
将 doc 文件夹下的 omnicppcomplete.txt 文件拷贝到 vim 的 doc 文件夹下,如下图所示:
第一个插件文件拷贝完成,其他插件操作方式类似,下面我大概描述一下。
SrcExpl-6.0 解压后简单很多,只有 doc/srcexpl.txt 和 plugin/srcexpl.txt 这2个文件,doc 文件夹截图有 srcexpl.txt 文件,plugin 截图如下所示:
taglist_46 和 SrcExpl-6.0 解压后操作一致。
Trinity-2.2-fix 解压后有 NERD_tree.vim 和 trinity.vim 这两个文件,都拷贝到 vim 的 plugin 文件夹下,上面的第四个截图细节显示。
vim-autocomplpop 插件解压后除了 doc 和 plugin 外,还存在一个 autoload 文件夹。doc 和 plugin 操作和上面一致,autoload 直接拷贝到 vim 位置,如第一张图片所示。
进行到这里插件拷贝过程已经结束,之所以没有将插件整合后再打包是为了能够让大家熟悉 vim 强大的整个过程,在操作过程中有更深的理解,包括那步报错的转换其实页可以自己操作。后面我会把插件的开源地址贴上,里面有更纯粹的内容,可以更自由的操作。下面讲解配置文件的修改。
2、修改vim配置文件
vim 的配置文件叫 .vimrc,在~/文件夹下,vim ~/.vimrc 即可打开。内容如下所示:
syntax on
set number
set autoindent
set cindent
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set cino=g0,:0
let Tlist_Show_One_File=1
let Tlist_WinWidth=30
let Tlist_Exit_OnlyWindow=1
let Tlist_Use_Left_Window=1
" // The switch of the Source Explorer
nmap <F8> :SrcExplToggle<CR>
" // Set the height of Source Explorer window
let g:SrcExpl_winHeight = 8
" // Set 100 ms for refreshing the Source Explorer
let g:SrcExpl_refreshTime = 100
" // Set "Enter" key to jump into the exact definition context
let g:SrcExpl_jumpKey = "<ENTER>"
" // Set "Space" key for back from the definition context
let g:SrcExpl_gobackKey = "<SPACE>"
" // In order to avoid conflicts, the Source Explorer should know what plugins except
" // itself are using buffers. And you need add their buffer names into below list
" // according to the command ":buffers!"
let g:SrcExpl_pluginList = [
\ "__Tag_List__",
\ "_NERD_tree_",
\ "Source_Explorer"
\ ]
" // The color schemes used by Source Explorer. There are five color schemes
" // supported for now - Red, Cyan, Green, Yellow and Magenta. Source Explorer
" // will pick up one of them randomly when initialization.
let g:SrcExpl_colorSchemeList = [
\ "Red",
\ "Cyan",
\ "Green",
\ "Yellow",
\ "Magenta"
\ ]
" // Enable/Disable the local definition searching, and note that this is not
" // guaranteed to work, the Source Explorer doesn't check the syntax for now.
" // It only searches for a match with the keyword according to command 'gd'
let g:SrcExpl_searchLocalDef = 1
" // Workaround for Vim bug @https://goo.gl/TLPK4K as any plugins using autocmd for
" // BufReadPre might have conflicts with Source Explorer. e.g. YCM, Syntastic etc.
let g:SrcExpl_nestedAutoCmd = 1
" // Do not let the Source Explorer update the tags file when opening
let g:SrcExpl_isUpdateTags = 0
" // Use 'Exuberant Ctags' with '--sort=foldcase -R .' or '-L cscope.files' to
" // create/update the tags file
let g:SrcExpl_updateTagsCmd = "ctags --sort=foldcase -R ."
" // Set "<F12>" key for updating the tags file artificially
let g:SrcExpl_updateTagsKey = "<F12>"
" // Set "<F3>" key for displaying the previous definition in the jump list
let g:SrcExpl_prevDefKey = "<F3>"
" // Set "<F4>" key for displaying the next definition in the jump list
let g:SrcExpl_nextDefKey = "<F4>"
" Open and close all the three plugins on the same time
nmap <F8> :TrinityToggleAll<CR>
" Open and close the Source Explorer separately
nmap <F9> :TrinityToggleSourceExplorer<CR>
" Open and close the Taglist separately
nmap <F10> :TrinityToggleTagList<CR>
" Open and close the NERD Tree separately
nmap <F11> :TrinityToggleNERDTree<CR>
set mouse=a
nmap <F10> :TrinityToggleTagList<CR>
" Open and close the NERD Tree separately
nmap <F11> :TrinityToggleNERDTree<CR>
set nocp
filetype plugin on
" NERDTree.vim
let g:TrinityWinPos="left"
位置完后使用vim打开文件看看效果!用 ffmpeg-4.1 举例。在 ffmpeg 文件夹下输入执行 ctags -R 生成工程结构表。如果没有 ctags 命令,执行 apt-get install ctags 安装一下即可,很小。这个和 vim 无关,是两回事。执行完 ctags -R 后会在当前目录生成一个 tags 的文件夹,有兴趣可以看一下内容,估计一般人也没兴趣。vim fftools/ffplay.c 看一下,如下图所示,是不是和常用编辑器或IDE一样了。到这里你的苦日子马上就要开始了,装逼之路上全是苦逼。让我们装逼装到底!干就完了!奥里给!
项目地址:
omnicppcomplete-0.41:https://www.vim.org/scripts/script.php?script_id=1520
SrcExpl-6.0:https://www.vim.org/scripts/script.php?script_id=2179
taglist_46:https://www.vim.org/scripts/script.php?script_id=273
Trinity-2.2:https://www.vim.org/scripts/script.php?script_id=2347
vim-autocomplpop:https://vim.sourceforge.io/scripts/script.php?script_id=1879
关于 .vimrc 的配置可以参考下面项目:
nerdtree:https://github.com/preservim/nerdtree
SrcExpl:https://github.com/wesleyche/SrcExpl
Trinity:https://github.com/wesleyche/Trinity