3

我的 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 会更快地启动。但我不知道该怎么做。

我们可以将它们分组吗?如何?还要别的吗?

4

4 回答 4

5

就放

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 才会读取这个文件。

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

于 2012-08-27T09:31:58.293 回答
4

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

我将所有自定义映射和命令~/.vim/plugin/my{mappings,commands}.vim移到. 任何不是简单的单行并委托给函数的映射/命令然后使用自动加载机制。这使启动时读取的内容量很小。:set.vimrc

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

于 2012-08-27T10:02:49.580 回答
2

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

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目录中。

于 2012-08-27T10:12:04.217 回答
1

至少您可以将前两行与第 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 命令需要很长时间才能执行。

于 2012-08-27T09:23:32.177 回答