按照标题,可以将vimrc文件拆分为几个子文件吗?为涉及一件事的设置组保留单独的文件?这个东西可能是任何东西,任何种类的用户定义设置。例如,

[更新]


保留vimrc.python-mode中所有与Python(-模式)相关的设置?
保留vim日历实用程序的设置在vimrc.calendar中?
在单独的文件中保留颜色设置?
在单独的文件中保留映射(也称为快捷方式?)?


评论

缺点:基于位置的分组而不是基于文件类型的分组。参见vi.stackexchange.com/q/77/205

我寻找的答案可能在vi.stackexchange.com/a/3152/1963中吗?源文件包含我想要的特定我所需的设置吗?

删除了文件类型标签-也许现在呢?它使读者认为问题与特定文件类型有关,而事实并非如此。

鉴于最初的问题,这似乎是适当的。

@muru是的,不用担心。我们也可能会在以后添加。谢谢。

#1 楼

是的,这是可能且有用的,甚至被认为是最佳实践。在Vim语音中,它们称为文件类型插件。而且Vim甚至提供了用于多种语言的许多文件类型插件(以及缩进和语法文件)。 br />
,然后将特定的文件类型设置放入名为.vimrc的文件中(创建不存在的目录)以进行python设置。常见问题解答也对此进行了介绍。

更新(13.11.2015)
还有另一种可能性(如果您不想使用特定于文件类型的选项):
如果要将某些选项分组到特定文件中,可以使用~/.vim/ftplugin/python.vimsource命令。例如,我的runtime包含以下行:

filetype plugin on


评论


很好,我已经有这个!但是从来没有真正仔细看过。所以,我打起了vimrc。但是与特定文件类型无关的设置又如何呢?

– Nikos Alexandris
2015年11月11日9:37



您可能需要:he自动加载和:he源?还要检查此答案stackoverflow.com/a/805242/1821490

– Alex Kroll
2015年11月11日在22:33

@AlexKroll不适用于文件类型插件。

–克里斯蒂安·布拉班特(Christian Brabandt)
2015年11月12日在7:01

@ChristianBrabandt提供您想要的一切。您可以在.vimrc中获取任何脚本。只需将源代码my-funy-useful-script.vim行放入.vimrc中,Vim在重启后加载它(或:so $ MYVIMRC命令)。另外:他的写作图书馆脚本可能会对您有所帮助。

– Alex Kroll
15年11月12日在7:20

@AlexKroll我认为这更接近我正在寻找的答案。您介意编辑当前答案并将其扩展吗?还是单独回答?我不仅在寻找特定的文件类型。我希望我的问题很清楚。

– Nikos Alexandris
15年11月12日在10:19

#2 楼

完全可以做您想做的事。其他一些人则谈到了适用于此的文件类型插件。

但是您可以在vimrc中获取源文件和.vim文件,以便将.vimrc拆分为任意数量的文件。只是源文件,它将起作用。作为一个例子,这里是我的(可能不是很有用)点文件。 https://github.com/dspecht/dotfiles/

评论


您能否举一个例子,说明您在回答中做了什么以及为什么起作用?

–EvergreenTree
2015年11月14日23:33

#3 楼

Ftplugin
如前所述,将与某种文件类型相关的设置放在ftplugin中。例如,在我的vimrc文件所在的位置,有一个子init/目录,其中包含我希望在启动时加载的其他文件。要加载它们,我使用以下代码。 <sfile>撤消到当前文件(在这种情况下为init.vim.vimrc),而:h表示文件的头(位于其中的目录)。在这里,我正在加载文件env.vim,然后是git.vim等等。 ?)速度较慢,但​​主要的问题是安装程序变得非常分散,在配置时必须不断切换缓冲区。我转而使用褶皱。有关折叠的帮助,请参阅:help usr_28。尤其要搜索*28.6* Folding with markers
部分,如下所示,我将初始化文件分开。它显示了1倍的KEYMAPPINGS折叠倍数。主level1部分中有许多level2小节(折叠),例如mapmap!function keysvisual mode。在图像中,展开了2级折叠(Popup Menu键盘映射`)。

首先启用{{{和样式折叠,请设置以下选项:折叠的Level1和Level2部分标题。 _FoldLevel1_FoldLevel2是接下来定义的突出显示组。
source <sfile>:h/init/env.vim
source <sfile>:h/init/git.vim
source <sfile>:h/init/myplugins.vim
source <sfile>:h/init/visual.vim

我用以下方式设置折叠样式:
set foldmethod=marker
set foldcolumn=1

现在放置{{{1来创建第1层,{{{2来创建第2层。 :(我将文件修剪成一个骨架,通常每个部分大约一个屏幕长)。
augroup match_folds
    autocmd!
    " VimEnter handles at start up, WinNew for each window created AFTER startup.
    " Regex matches { { { with an empty group in the middle so that vim does
    " not create a fold in this code, then either a 1 or 2 then a space. Then
    " zs is the start of the match which is the rest of the line then ze is
    " the end of the match. Refer to :help pattern-overview
    autocmd VimEnter,WinNew * let w:_foldlevel1_id = matchadd('_FoldLevel1', '{{\(\){1\ \zs.\+\ze', -1)
    autocmd VimEnter,WinNew * let w:_foldlevel2_id = matchadd('_FoldLevel2', '{{\(\){2\ \zs.\+\ze', -1)
augroup END


#4 楼

Vim 8+的更现代(2020)答案
因为已经有好几年了,我认为对于Vim 8+可能有一个更好的解决方案,所以我在这里问:
在Vim 8+中自动加载多个rc样式的文件。
结果是! “最佳”方法,但它确实有效,并且需要接近零的vim专有技术(就像我喜欢它一样):

~/.vim/pack/plugins/start/vimrc上创建一个“ vimrc”插件

将其添加到~/.vim/pack/plugins/start/vimrc/plugin/{foo,bar,baz}.vim


示例
创建“ vimrc”插件目录:
mkdir -p ~/.vim/pack/plugins/start/vimrc/plugin/

根据需要添加所需的各种块wish:
cat <<EOF > ~/.vim/pack/plugins/start/vimrc/plugin/go.vim
let g:syntastic_go_checkers = ['go', 'golint', 'errcheck']
let g:go_fmt_command = "goimports"
EOF

注意:总是加载是很好的,因为它只是设置变量,而syntastic只会加载所有使用基于文件类型的变量的东西。
对于高级语言特定的东西(简单)
如果设置仅高度特定于特定的语言(例如我的示例) ve),您还可以使用“之后”插件:
mkdir -p ~/.vim/after/ftplugin/<filetype>.vim
vim ~/.vim/after/ftplugin/go.vim

另请参见:https://vim.fandom.com/wiki/Keep_your_vimrc_file_clean