Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么文件类型可以工作而BufRead、BufNewFile不能';t-VIM?_Vim - Fatal编程技术网

为什么文件类型可以工作而BufRead、BufNewFile不能';t-VIM?

为什么文件类型可以工作而BufRead、BufNewFile不能';t-VIM?,vim,Vim,当我将带有FileType的autocmd放入我的.vimrc时,它确实起作用 autocmd FileType ctp setlocal commentstring=#test\ %s 当我调用cc时,它确实起作用,并将#test作为注释。但是我必须首先通过set ft=ctp来更改文件类型,但这会弄乱我的语法突出显示,这就是为什么我希望能够通过文件扩展名来设置它 但是当我尝试使用BufRead时,BufNewFile不起作用 autocmd BufRead,BufNewFile *.ctp

当我将带有
FileType
autocmd
放入我的
.vimrc
时,它确实起作用

autocmd FileType ctp setlocal commentstring=#test\ %s
当我调用
cc
时,它确实起作用,并将
#test
作为注释。但是我必须首先通过
set ft=ctp
来更改文件类型,但这会弄乱我的语法突出显示,这就是为什么我希望能够通过文件扩展名来设置它

但是当我尝试使用BufRead时,BufNewFile不起作用

autocmd BufRead,BufNewFile *.ctp setlocal commentstring=#test\ %s

如何按文件扩展名而不是类型设置
setlocal commentsting

。ctp
属于php文件类型组。所以如果你想

在您的
.vimrc
中。要更改为其他注释样式,请使用
ca


其他方法的问题是NERD Commenter

@work.bin谢谢你的评论,我尝试了
BufEnter
-得到了相同的结果。对不起,还有一个问题^^^它只能用于.ctp文件吗?像
autocmd BufRead,BufNewFile*.ctp let g:NERDCustomDelimiters={'php':{'left':'/','leftAlt':'''}}
不幸的是,似乎不可能在该阶段将
g:NERDCustomDelimiters
autocmd
用于
g:NERDCustomDelimiters
。也许可以让b:nerdcommenterims={'left':'/','leftAlt':'}直接用于
*.ctp
,但我不知道要使用的右触发器事件。例如,
au CursorMoved*.ctp让b:nerdcommenterims={'left':'/','leftAlt':''}
起作用,但它确实不好:-)谢谢你的帮助。我从你身上学到了很多。非常感谢。
let g:NERDCustomDelimiters = {
   \ 'php': { 'left': '//', 'leftAlt': '#test ' }
   \ }