vimrc
文件拆分为几个子文件吗?为涉及一件事的设置组保留单独的文件?这个东西可能是任何东西,任何种类的用户定义设置。例如,[更新]
保留
vimrc.python-mode
中所有与Python(-模式)相关的设置?保留vim日历实用程序的设置在
vimrc.calendar
中?在单独的文件中保留颜色设置?
在单独的文件中保留映射(也称为快捷方式?)?
#1 楼
是的,这是可能且有用的,甚至被认为是最佳实践。在Vim语音中,它们称为文件类型插件。而且Vim甚至提供了用于多种语言的许多文件类型插件(以及缩进和语法文件)。 br />,然后将特定的文件类型设置放入名为
.vimrc
的文件中(创建不存在的目录)以进行python设置。常见问题解答也对此进行了介绍。更新(13.11.2015)
还有另一种可能性(如果您不想使用特定于文件类型的选项):
如果要将某些选项分组到特定文件中,可以使用
~/.vim/ftplugin/python.vim
或source
命令。例如,我的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小节(折叠),例如map
,map!
,function keys
和visual 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
评论
缺点:基于位置的分组而不是基于文件类型的分组。参见vi.stackexchange.com/q/77/205我寻找的答案可能在vi.stackexchange.com/a/3152/1963中吗?源文件包含我想要的特定我所需的设置吗?
删除了文件类型标签-也许现在呢?它使读者认为问题与特定文件类型有关,而事实并非如此。
鉴于最初的问题,这似乎是适当的。
@muru是的,不用担心。我们也可能会在以后添加。谢谢。