V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Taigacute
V2EX  ›  Vim

分享一些我折腾 vim 到现在的 thinkvim 配置的过程希望能帮助到你

  •  3
     
  •   Taigacute · 2019-02-23 14:41:03 +08:00 · 5195 次点击
    这是一个创建于 2087 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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

    4 条回复
    chemzqm
        1
    chemzqm  
       2019-02-23 17:25:44 +08:00
    dein 这个插件我用了不到两天就放弃了,主要是修改插件调试太麻烦,另外需要 lazyload 只能说明有些插件实现比较差,vim 的 autoload 和异步没使用到位。
    Taigacute
        2
    Taigacute  
    OP
       2019-02-23 17:56:56 +08:00
    @chemzqm 装多了难免需要 lazyload 这个。相比 vim-plug 确实费劲不少。但是功能上确实好一丢丢。。还没那么深入了解大概知道 vim 的几个文件夹的作用。。。以后有空好好研究一下
    iwishwp
        3
    iwishwp  
       2019-02-23 18:53:19 +08:00
    我在 B 站也看到视频了,本人?
    Taigacute
        4
    Taigacute  
    OP
       2019-02-23 18:58:18 +08:00
    @iwishwp 本人啊。。。方便想用的人就出了一些视频。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2431 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:55 · PVG 23:55 · LAX 07:55 · JFK 10:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.