Vim在启动时不执行自动命令,但会读取.vimrc文件。

3
为了在创建新脚本时节省时间,我已经在我的.cshrc文件中添加了以下别名:
alias skript 'touch \!^; chmod +x \!^; vim \!^'

这将创建我作为参数提供的文件,使该文件可执行,然后在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"

5
+1 只是为了让你的声誉值从“666”移动。 - Prince Goulash
你能发布你的 .vimrc 文件中相关部分吗? - Pablo Castellazzi
1
你说的“直接启动vim”是什么意思?是运行“vim new_script.pl”还是“touch new_script.pl; chmod +x new_script.pl; vim new_script.pl”?在autocommand中的BufNewFile表示不存在的文件。 - cutalion
@cutalion 好的,你发现了问题,这很好地说明了仅仅复制粘贴而不真正理解它在做什么是不明智的(就像我在某个网站上找到那些autocmd行时所做的那样)。我所说的“直接启动vim”是“vim new_script.pl”。如果你把你的评论变成答案,我会接受它的(如果你碰巧有一个时间节省器的想法,并且仍然可以打印我的标题,那将更好;))。 - canavanin
1个回答

1

好的,为了结束那个问题,我会把我的评论移到答案里 :)

在autocommand中,BufNewFile表示文件不存在。所以,如果您使用'touch'命令创建一个文件,它不会运行。

我建议看一下tskeleton_vimsnipmate。 我正在使用这些代码片段的snipmate。它有一个非常简单的语法,而且没有添加任何你可能需要的代码片段的问题。

无论如何,您可以保持原样,直接运行vim,不使用别名,“vim test.pl”,并将autocommand添加到 .vimrc 中

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接