我的vim用于在php中自动继续评论。例如:
/* | <- cursor here
然后,按 Enter 给我:
/*
* | <- cursor here
再次,给我:
/*
*
* | <- cursor here
等...
据我了解,这是由comments
和formatoptions
选项控制的。但是,每当我打开php文件时,comments
都会设置为:
s:<!--,m: ,e:-->
我查看了〜/ .vim文件夹,以及$ VIMRUNTIME文件夹,我无法找到更改的位置/原因,以及comments
选项设置错误的原因
这是我的.vimrc
的链接答案 0 :(得分:3)
使用版本7.3的默认设置(补丁集754),我观察到与原始帖子中相同的错误:
/**<ENTER>
预期结果:
/**
* <cursor>
实际结果:
/**
<cursor>
解决方案包括两个步骤:
对我的vimrc的修改,将这两个步骤考虑在内:
au FileType php setlocal comments=s1:/*,mb:*,ex:*/,://,:#
au FileType php setlocal formatoptions+=cro
乌拉!
答案 1 :(得分:3)
请注意,如果文件类型 indent on
和plugin on
位于 .vimrc 中的不同行,则也会出现此问题:
filetype indent on
filetype plugin on
这会导致在$VIMRUNTIME/indent/php.vim
之前处理$VIMRUNTIME/ftplugin/php.vim
。
indent/php.vim
文件会重置'comments'
,但 ftplugin/php.vim
则不会。
indent/php.vim
获取来源且comments
已正确设置:
setlocal comments=s1:/*,mb:*,ex:*/,://,:#
然后 ftplugin/php.vim
获取来源。它再次来源 ftplugin/html.vim
:
runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
导致 ftplugin/html.vim
正在处理并设置:
setlocal commentstring=<!--%s-->
setlocal comments=s:<!--,m:\ \ \ \ ,e:-->
稍后在 ftplugin/php.vim
中,commentstring
重置但不是comments
:
setlocal commentstring=/*%s*/
filetype indent plugin on
" Or
filetype plugin indent on
" Or with correct order:
filetype plugin on
filetype indent on
在任何情况下都应该在缩进之前处理插件。
要查看包含/处理的顺序,请查看:scriptnames
。
答案 2 :(得分:1)
找到它。我有一个时髦的.vim / indent / php.vim文件,不知何故搞砸了。
删除了它,我正在寻找的功能返回。谢谢你!
答案 3 :(得分:0)
php.vim
文件应位于ftplugin
的{{1}}文件夹中。
在vim的7.2版中,注释行是该文件中的第74行。
该文件是否被删除或移动?