[英]vim does not execute autocommands on startup, but .vimrc is read
为了节省创建新脚本的时间,我在 my.cshrc 文件中添加了以下别名:
alias skript 'touch \!^; chmod +x \!^; vim \!^'
这将创建我作为参数提供给skript
的文件,使该文件可执行,然后在 vim 中打开该文件。
所有这一切都很好,除了一件事:my.vimrc 文件中的autocmd
行没有被执行,即使在.vimrc 中指定的设置都已经到位。 如果我直接启动 vim,即不使用上述别名,一切都会按预期工作。
如果这是相关的, autocmd
行会为具有特定扩展名的文件生成默认 header,在此过程中必须读取模板文本文件。
如果你们中的任何人都可以帮助我在使用我的skript
别名创建的文件中生成 header,那就太好了!
非常感谢您的时间。
编辑
以下是 my.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"
好吧,为了结束这个问题,我将把我的评论移到答案中:)
自动命令中的 BufNewFile 表示文件不存在。 因此,如果您之前使用“touch”命令创建文件,它将不会运行。
我建议看看tskeleton_vim或snipmate 。 我将 snipmate 与这些片段一起使用。 它的语法非常简单,添加您可能需要的任何代码段都没有问题。
无论如何,你可以保持原样,直接运行 vim,不带别名,“vim test.pl”并将自动命令添加到.vimrc
autocmd bufwritepost *.pl silent! !chmod +x %
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.