繁体   English   中英

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

[英]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_vimsnipmate 我将 snipmate 与这些片段一起使用。 它的语法非常简单,添加您可能需要的任何代码段都没有问题。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM