在vimscript中使用for循环自动执行autocmd调用
对于不同的文件类型,我有不同的vim脚本在vimscript中使用for循环自动执行autocmd调用,vim,Vim,对于不同的文件类型,我有不同的vim脚本 . ├── .vim │ ├── vimrc-c.vim │ ├── vimrc-cpp.vim │ ├── vimrc-default.vim │ ├── vimrc-lisp.vim │ ├── vimrc-pl.vim │ └── vimrc-vim.vim └── .vimrc 我的第一个解决办法是 au BufNewFile,BufRead * source $HOME/.vim/vimrc-default.
.
├── .vim
│ ├── vimrc-c.vim
│ ├── vimrc-cpp.vim
│ ├── vimrc-default.vim
│ ├── vimrc-lisp.vim
│ ├── vimrc-pl.vim
│ └── vimrc-vim.vim
└── .vimrc
我的第一个解决办法是
au BufNewFile,BufRead * source $HOME/.vim/vimrc-default.vim
au BufNewFile,BufRead *.c source $HOME/.vim/vimrc-c.vim
au BufNewFile,BufRead *.cpp source $HOME/.vim/vimrc-cpp.vim
au BufNewFile,BufRead *.lisp source $HOME/.vim/vimrc-lisp.vim
au BufNewFile,BufRead *.pl source $HOME/.vim/vimrc-pl.vim
au BufNewFile,BufRead *.vim source $HOME/.vim/vimrc-vim.vim
但我想用for循环来代替它,因为这是一个简单的重复,就像
au BufNewFile,BufRead * source $HOME/.vim/vimrc-default.vim
let s:extensions =
\[
\c,
\cpp,
\lisp,
\pl,
\vim,
\]
for ext in s:extensions
au BufNewFile,BufRead '*' . ext source $HOME . "/.vim/vimrc-" . ext . '.vim'
endfor
但这不起作用。但是我没有收到任何错误,所以我不知道该怎么办。Vim已经有一个内置的机制来寻找特定于文件类型的配置文件,所以重新实现它,并以一种不可移植的方式引导,是完全没有意义的 以下是目录结构的外观:
.
├── .vim/
│ └── after/
│ └── ftplugin/
│ ├── c.vim
│ ├── cpp.vim
│ ├── lisp.vim
│ ├── perl.vim
│ └── vim.vim
└── .vimrc
唯一的要求是在vimrc
中有以下行:
filetype plugin indent on
请参阅:帮助文件类型
请注意:
- “ftplugins”的文件名与文件类型的名称匹配,而不是扩展名。例如,Perl文件有一个
扩展名,但它们的文件类型是.pl
,因此您的ftplugin应该称为Perl
Perl.vim
- 无论您在
vimrc default.vim中输入了什么,都应该在
中vimrc
.
├── .vim/
│ └── after/
│ └── ftplugin/
│ ├── c.vim
│ ├── cpp.vim
│ ├── lisp.vim
│ ├── perl.vim
│ └── vim.vim
└── .vimrc
唯一的要求是在vimrc
中有以下行:
filetype plugin indent on
请参阅:帮助文件类型
请注意:
- “ftplugins”的文件名与文件类型的名称匹配,而不是扩展名。例如,Perl文件有一个
扩展名,但它们的文件类型是.pl
,因此您的ftplugin应该称为Perl
Perl.vim
- 无论您在
vimrc default.vim中输入了什么,都应该在
中vimrc