vim在启动时不执行自动命令,但会读取.vimrc

时间:2011-07-08 07:52:03

标签: unix shell vim

为了节省创建新脚本的时间,我在.cshrc文件中添加了以下别名:

alias skript 'touch \!^; chmod +x \!^; vim \!^'

这将创建我作为skript的参数提供的文件,使该文件可执行,然后在vim中打开该文件。

所有这些都很有效,除了一件事:我的.vimrc文件中的autocmd行不会被执行,即使.vimrc中指定的设置都已到位。如果我直接启动vim,即不使用上面的别名,则所有事情都会按预期工作。

如果这是相关的,autocmd行会为具有特定扩展名的文件生成默认标头,在此过程中必须读取模板文本文件。

如果您有任何人可以帮助我在使用我的skript别名创建的文件中生成标题,那将非常棒!

非常感谢你的时间。

修改

以下是我的.vimrc文件中的autocmd行:

autocmd bufnewfile *.pl so /home/my_home/Templates/perl_template.txt
autocmd bufnewfile *.pl exe "1," . 10 . "g/creation date:.*/s//creation date: " .strftime("%d-%m-%Y")
autocmd Bufwritepre,filewritepre *.pl execute "normal ma"
autocmd Bufwritepre,filewritepre *.pl exe "1," . 10 . "g/last modified:.*/s/last modified:.*/last modified: " .strftime("%c")
autocmd bufwritepost,filewritepost *.pl execute "normal `a"

1 个答案:

答案 0 :(得分:1)

好吧,关闭这个问题,我会将我的评论移到答案中:)

自动命令中的BufNewFile表示不存在的文件。因此,如果您在使用'touch'命令之前创建文件,它将无法运行。

我建议您查看tskeleton_vimsnipmate。 我正在使用these snippets的snipmate。它的语法非常简单,添加您可能需要的任何代码段都没有问题。

无论如何,您可以保持原样,只需直接运行vim,不带别名“vim test.pl”并将该自动命令添加到.vimrc

autocmd bufwritepost *.pl silent! !chmod +x %