VIM关键字-使用破折号(-)作为分隔符,但不要在PHP属性标识符/函数调用中使用(->;)

VIM关键字-使用破折号(-)作为分隔符,但不要在PHP属性标识符/函数调用中使用(->;),vim,Vim,我同时使用CSS和PHP,约定是在CSS中用破折号分隔(例如,“this-is-a-class-name”)。我补充说 set iskeyword+=- 我的vimrc可以加快导航和替换,这在CSS中非常有效,但是现在'cw'/'dw'将在PHP中的任何属性/函数调用中扼杀破折号 例如,如果我在下面的“对象”上键入cw: $object->property; 当我希望它只删除“object”时,它将删除“object-”。显然,从VIM的角度来看,这是按预期进行的,因此问题是: 是否有

我同时使用CSS和PHP,约定是在CSS中用破折号分隔(例如,“this-is-a-class-name”)。我补充说

set iskeyword+=-
我的vimrc可以加快导航和替换,这在CSS中非常有效,但是现在'cw'/'dw'将在PHP中的任何属性/函数调用中扼杀破折号

例如,如果我在下面的“对象”上键入cw:

$object->property;
当我希望它只删除“object”时,它将删除“object-”。显然,从VIM的角度来看,这是按预期进行的,因此问题是:


是否有一个正则表达式会导致iskeyword包含破折号,除非它们后跟大于号(>)?

您可以仅为CSS文件设置关键字,而不全局设置

autocmd FileType css,less,scss setlocal iskeyword+=-
在上面的示例中,它将添加破折号作为.css、.less和.scss文件的关键字。您可以根据需要添加和删除文件。请注意,您必须使用
setlocal
而不是
set


如果您想将特定设置应用于.php文件,请使用以下命令

autocmd FileType php setlocal [YOUR SETTING]

只是
set iskeyword-=-
for php filetype.php文件通常是包含CSS标识符的模板文件,因此这不起作用。php文件通常是包含CSS标识符的模板文件,因此很遗憾,这无法解决问题。“iskeyword”接受正则表达式吗?在这种情况下,我认为答案是某种形式的正则表达式。