FAQ
之前分享了下我的配置然后有些问题我在这里说明一下--我的配置不是项目级别个人折腾级别
1.和 Spacevim,Space-vim,或者其他配置有什么区别?
- 这个配置只是我自己的配置。与 Spacevim Space-vim 不同,它们可以说是个项目了。我的有很多需要你自己改。我只是提供一个模块的小巧以管理的配置。只是取了个名字,然后我的配置没那么多方便的功能,比如简单的管理想添加什么只需要设置 layer 或者其他 easy 的操作,我的要你自己添加插件配置插件改动文件。大家的触发点不一样。但是都是 vim 的爱好者。
- 我的出发点是我觉得 vim 不折腾就没了意义。追求 vim 是把它打造成自己喜欢的工具。包括它的每一寸肌肤。对吗??我相信应该有和我一样不愿意使用别人配置的人你们应该能明白的。
2.我自己的配置就很好,为什么要看你的配置?
- 你的配置你很满意的情况下你完全可以不用看我的配置。如果你想拆分一下变得模块化组件化易于管理摆脱冗长的 init.vim ,你可以参考我的配置或许对你有帮助
摆脱冗长的配置文件
因为 init.vim 或 vimrc 太长导致维护的时候很麻烦,所以看到了一些模块化的配置,就想着模块化一下。
结构

插件管理
最开始使用的 vim-plug,然后发现 dein 提供了更多的功能更好的懒加载,所以切换到了 dein,dein 提供了用 toml 文件来管理插件,很棒。但是 dein 对新手比较不友好。文档齐全但是你也有可能看不懂,google 很多例子 和说明。总算入门了。
dein.vim
- 我将 dein 的配置脚本通过 dein.vim 进行管理。设置一个
$CACHE变量为.cache 文件夹作为插件的安装目录。如果涉及需要文件路径的,我都建议通过添加一个变量来设置,这样切换电脑也很方便。其实 toml 的路径最好的方式也是通过变量来。那时候偷懒了,有空改一下。。
let g:dein#install_progress_type = 'title'
let g:dein#enable_notification = 1
let g:dein#install_log_filename = '~/.tmp/dein.log'
let $CACHE = expand('~/.cache')
let s:path = expand('$CACHE/dein')
if !dein#load_state(s:path)
finish
endif
call dein#begin(s:path, expand('<sfile>'))
call dein#load_toml('~/.config/nvim/rc/dein/dein.toml', {'lazy': 0})
call dein#load_toml('~/.config/nvim/rc/dein/deinlazy.toml', {'lazy' : 1})
call dein#end()
call dein#save_state()
if dein#check_install()
" Installation check.
call dein#install()
endif
(诶诶 V2EX 居然没有高亮???? 我姿势不对?)
dein.toml
- 我通过 dein.toml 配置正常加载的插件一般是 ui 方面的比如 startify 之类的。我想打开 vim 的时候就能看到他们
deinlazy.toml
- 主要是添加需要懒加载的插件。大部分插件我都设置到了这里,这样我的 vim 启动速度不会被拖慢。使用起来也不会因为插件过多导致卡顿。thinkvim 的启动时间在 110ms 左右。插件数量 41.
初始化
我通过 vimrc 这个文件进行文件的加载。外部的 neovim 的入口文件加载这个 vimrc 就可以了。init.vim 来检查 dein 是否已经安装。如果没有安装就进行自动下载 dein。方便更换电脑的时候配置环境,也方便大家使用的时候安装。init.vim 部分代码
let $CONFIG = expand('~/.config')
if !isdirectory(expand($CONFIG))
call mkdir(expand($CONFIG), 'p')
endif
" Load dein.
let s:dein_dir = finddir('dein.vim', '.;')
if s:dein_dir != '' || &runtimepath !~ '/dein.vim'
if s:dein_dir == '' && &runtimepath !~ '/dein.vim'
let s:dein_dir = expand('$CONFIG/nvim')
\. '/repos/github.com/Shougo/dein.vim'
if !isdirectory(s:dein_dir)
execute '!git clone https://github.com/Shougo/dein.vim' s:dein_dir
endif
endif
execute 'set runtimepath^=' . substitute(
\ fnamemodify(s:dein_dir, ':p') , '/$', '', '')
endif
其他文件就很 easy 了,vim 的基础设置,vim 的键位映射,然后在 vimrc 控制加载的顺序。搞定。vimrc 部分代码
if has('vim_starting')
call s:source_rc('init.vim')
endif
call s:source_rc('dein.vim')
call s:source_rc('plugins/allkey.vim')
syntax enable
filetype plugin indent on
call dein#call_hook('source')
call dein#call_hook('post_source')
" Loading configuration modules
call s:source_rc('general.vim')
call s:source_rc('mappings.vim')
call s:source_rc('/themes/theme.vim')
Plugins
插件如果配置项比较多就用单独的 vim 文件来设置,然后在 dein 的 toml 文件里加载。这样就比较清晰明了了。为了更好的管理。把插件的目录都放到 allkey 里面去。这样如果其他人使用也看的清楚。上手快。自己也好维护。 比如这样的 allkey.vim 部分代码
if dein#tap('fzf.vim')
nnoremap <silent> <leader>f :call Fzf_dev()<CR>
nnoremap <silent> <leader>r :Rg<CR>
endif
if dein#tap('nerdtree')
"nerdtree
nnoremap <leader>e :NERDTreeToggle <CR>
endif
主题 colorscheme
主题这个东西就像女朋友,换来换去的。所以我把主题单独抽出来。方便修改。然后对一些配色不满意自己调高亮的组。都放在 theme.vim 里
" Enable 256 color terminal
set t_Co=256
" Enable true color
if has('termguicolors')
set termguicolors
endif
set background=dark
"colorscheme hybrid_reverse
colorscheme space_vim_theme
hi Whitespace ctermfg=96 guifg=#725972 guibg=NONE ctermbg=NONE
这样搞一下是不是你的文件就会很清爽了?你可以试试折腾自己的。坑的话就是 dein。dein 提供的方法你使用不对插件就会没法使用。
ThinkVim
完整的配置在---->>>传送门
SCREENSHOT
