除此之外,我在.vimrc
文件中还有以下内容:
function! BashHeader()
source ~/.vim/bash_header.txt
endfunction
autocmd BufNewFile *.bash,*.sh :call BashHeader()
文件bash_header.txt
在我的bash脚本文件的顶部只有一个我想要的样板标题。
乍一看,这很有用 - vim somefile
没有标题,而vim somescript.bash
会自动插入标题。当我使用启动模式快捷方式view
时出现问题。 view
,this Vim documentation describes,是以只读模式启动Vim的快捷方式,如vim -R somefile
。但是当我以这种方式启动Vim时,打开一个已经存在的文件,我得到以下消息:
$> view somefile
"somefile" "somefile" [readonly] 6L, 359C
Error detected while processing ~/.vim/bash_header.txt:
line 2:W10: Warning: Changing a readonly file
Press ENTER or type command to continue
请注意,我已使用~
替换了.vim目录的实际路径;我不认为这是一个重要的遗漏。
显然,尽管存在事实
,Vim正试图在此文件中添加标题 somefile
已经存在(并且不应该触发我的autocmd
所需的BufNewFile事件)和
somefile
甚至没有以.bash
或.sh
结尾,因此不应触发autocmd
所需的模式。
事实上,一旦按下回车键,我的bash标头就已插入到这个只读缓冲区中。
为了使问题更加复杂,明确地以只读模式调用Vim,如vim -R somefile
not 显示相同的错误行为。这与预期一样有效。
我错过了什么?
编辑:以下是bash_header.txt
的内容:
:insert
#! /bin/bash
#==============================================================================
# $Author$
# $Date$
# $HeadURL$
# $Revision$
#==============================================================================
.
此外,运行view -u NONE somefile
不会出现错误。我有一个想法 - 也许我的.vimrc
在使用view
别名时没有被评估,但仅在使用vim
时。作为一个简单的测试,我添加了
echo ".vimrc was run."
到我的.vimrc
文件。 A-HA!当我运行vim somefile
时,我会看到打印的消息,但是当我运行view somefile
时却没有。所以现在我的问题变成了,vim
使用.vimrc
会导致view
使用view
而不是?那么,bash_header.txt
如何抓住我的.vimrc
,即使它似乎没有评估我的{{1}}?
答案 0 :(得分:0)
请分享~/.vim/bash_header.txt
。
如果该文件实际上只包含样板文件,则不应使用:source
,因为Vim将执行其内容,就像它是Vimscript一样。对于快速和肮脏的模板,您应该向我们:0r ~/.vim/bash_header.txt
。
另外,我无法在此处复制您的问题:autocmd
执行view
时未运行~/.vim/bash_header.txt
。您应该将配置减少到其基本组件以优化您的问题:
~/.vimrc
的内容是什么?