Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在vimscript中使用for循环自动执行autocmd调用_Vim - Fatal编程技术网

在vimscript中使用for循环自动执行autocmd调用

在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脚本

.
├── .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
    扩展名,但它们的文件类型是
    Perl
    ,因此您的ftplugin应该称为
    Perl.vim
  • 无论您在
    vimrc default.vim中输入了什么,都应该在
    vimrc

Vim已经有了一个内置的机制来获取特定于文件类型的配置文件,因此以一种不可移植的方式重新实现它是完全没有意义的

以下是目录结构的外观:

.
├── .vim/
│   └── after/
│       └── ftplugin/
│           ├── c.vim
│           ├── cpp.vim
│           ├── lisp.vim
│           ├── perl.vim
│           └── vim.vim
└── .vimrc
唯一的要求是在
vimrc
中有以下行:

filetype plugin indent on
请参阅
:帮助文件类型


请注意:

  • “ftplugins”的文件名与文件类型的名称匹配,而不是扩展名。例如,Perl文件有一个
    .pl
    扩展名,但它们的文件类型是
    Perl
    ,因此您的ftplugin应该称为
    Perl.vim
  • 无论您在
    vimrc default.vim中输入了什么,都应该在
    vimrc