【问题标题】:How do I tidy up my vimrc file?如何整理我的 vimrc 文件?
【发布时间】:2012-08-27 09:15:58
【问题描述】:

我的 Vim 配置文件越来越大(15KB+)。而且我尽量不通过在启动时采购更多 (更大) 文件来降低我的 vim 启动速度。出于同样的目的,我只使用必要的插件,并尽量减少插件的数量。

所以,在我的 .vimrc 文件的某处,我有以下几行:

autocmd FileType python setlocal expandtab shiftwidth=4 tabstop=4 softtabstop=4
autocmd FileType python setlocal textwidth=78
autocmd FileType python match ErrorMsg '\%>80v.\+'
autocmd FileType python inoremap <F5> <esc>:upd\|!python %<cr>
autocmd FileType python nnoremap <F5> :upd\|!python %<cr>
autocmd FileType python nnoremap <leader>8 :w\|call Flake8()<cr>
autocmd FileType python setlocal formatoptions-=t
autocmd BufWritePost *.py call Flake8()

现在我看到前 7 行,所有行都有 autocmd FileType python 共同点。所以我的想法是,如果我们设法用更少的东西替换所有这些词,那么 Vim 会更快启动。但我不知道该怎么做。

我们可以将它们分组吗?如何?还有什么?

【问题讨论】:

  • 强制巨魔::%d 最好地清理你的 vimrc。或者,:new|saveas! $MYVIMRC 非常有效
  • 另外,稍微少一点拖钓,:help autocmd-groups

标签: vim autocmd


【解决方案1】:

随便放

setlocal expandtab shiftwidth=4 tabstop=4 softtabstop=4 textwidth=78 formatoptions-=t
match ErrorMsg '\%>80v.\+'
inoremap <F5> <esc>:upd\|!python %<cr>
nnoremap <F5> :upd\|!python %<cr>
nnoremap <leader>8 :w\|call Flake8()<cr>

~/.vim/after/ftplugin/python.vim.

只有当你打开一个 Python 文件时,Vim 才会读取这个文件。

实际上,我一直想这样做一段时间。出于同样的原因。

【讨论】:

  • 这会遮蔽默认的ftplugin/python.vim,并且它只会起作用(即不会阻止默认设置),因为它不会:let b:did_ftplugin = 1。我发现将其放入~/.vim/after/ftplugin/python.vim 会更清楚;这就是 after 目录的用途。
  • @IngoKarkat,你是对的。我已经用/after 更新了我的答案。谢谢。
【解决方案2】:

正如 romainl 已经指出的那样,应将特定文件类型的内容移至 ~/.vim/after/ftplugin/{filetype}.vim

我将我所有的自定义映射和命令都移到了~/.vim/plugin/my{mappings,commands}.vim,并且大多数情况下只将真实设置(:set 命令)和插件自定义设置到了.vimrc。任何不是简单的单行并委托给函数的映射/命令然后使用自动加载机制。这样可以减少启动时读取的内容量。

TL,DR:自动加载很棒;所有插件都应该使用它。

【讨论】:

    【解决方案3】:

    我正在使用一种方案,其中一组选项设置在由自动命令调用的函数中。

    function! s:C_options()
        setlocal cinoptions={0,:1s,g1s,t0,(0,=.5s
        setlocal noautoindent
        setlocal nosmartindent
        setlocal cindent
        call s:PROG_options()
    endfunction
    
    autocmd BufRead,BufNewFile *.c call s:C_options()
    

    这与使用文件类型非常相似,但您可以使用嵌套调用,例如在 s:PROG_options() 中具有通用编程选项,因此您应该能够进一步减小 .vimrc 的大小。

    after\filetype 解决方案在初始加载时间方面可能更有效,但我宁愿将大部分自定义设置在单个 .vimrc 中,而不是分散在 .vim 目录中。

    【讨论】:

      【解决方案4】:

      至少你可以将前两行与第 7 行合并

      autocmd FileType python setlocal expandtab shiftwidth=4 tabstop=4 softtabstop=4 textwidth=78 formatoptions-=t
      autocmd FileType python match ErrorMsg '\%>80v.\+'
      autocmd FileType python inoremap <F5> <esc>:upd\|!python %<cr>
      autocmd FileType python nnoremap <F5> :upd\|!python %<cr>
      autocmd FileType python nnoremap <leader>8 :w\|call Flake8()<cr>
      autocmd BufWritePost *.py call Flake8()
      

      但我无法想象你如何摆脱其他人。另一方面,我认为这些 autocmd 命令不会花费这么长时间来执行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-30
        • 2012-06-10
        • 1970-01-01
        • 1970-01-01
        • 2011-11-20
        • 2020-08-10
        • 1970-01-01
        相关资源
        最近更新 更多