让vim为CSS类和ID名称提供选项卡完成

让vim为CSS类和ID名称提供选项卡完成,vim,Vim,我经常错过的一个IDE特性是tab完成,它总是插入到vim中 我非常喜欢,但有一件事我不能忍受,那就是它将CSS类名和ID中带有破折号的部分视为单独的单词 我已经找到了camelCase和underline_补全的几种可能的解决方案,但我似乎找不到任何支持普通破折号的解决方案。这不是CSS特有的问题:Vim使用iskeyword的值来执行补全 键入:设置iskeyword?以查看哪些字符被视为关键字的一部分。Mac上的默认值应该是@,48-57,u192-255 可以使用以下命令将破折号添加到列

我经常错过的一个IDE特性是tab完成,它总是插入到vim中

我非常喜欢,但有一件事我不能忍受,那就是它将CSS类名和ID中带有破折号的部分视为单独的单词


我已经找到了camelCase和underline_补全的几种可能的解决方案,但我似乎找不到任何支持普通破折号的解决方案。

这不是CSS特有的问题:Vim使用
iskeyword
的值来执行补全

键入
:设置iskeyword?
以查看哪些字符被视为关键字的一部分。Mac上的默认值应该是
@,48-57,u192-255

可以使用以下命令将破折号添加到列表中:

:set iskeyword+=-
将此行添加到
~/.vimrc
以使此设置保持不变:

set iskeyword+=-

这似乎对我有用:

autocmd FileType css,scss set iskeyword=@,48-57,_,-,?,!,192-255

摘自此处:

供将来的读者阅读:如果您想要在编辑/移动命令中使用破折号,但想要完整的属性自动完成,请尝试将其添加到您的
。vimrc

augroup css_dash_autocompletion
    autocmd FileType scss,css autocmd! css_dash_autocompletion InsertEnter <buffer> set isk+=-
    autocmd FileType scss,css autocmd css_dash_autocompletion InsertLeave <buffer> set isk-=-
augroup END
augroup css\u dash\u自动完成
autocmd文件类型scss,css autocmd!css\u破折号\u自动完成插入器集isk+=-
autocmd文件类型scss,css autocmd css\u dash\u自动完成插入离开设置isk-=-
螺旋端

第一个
防止重复事件触发。感谢您对结构的支持。如果你是
source
你的
.vimrc
,你将需要
:e
任何你打开的CSS文件来获取更改。

我已经尝试过这种方法,但它的副作用是运动命令然后将破折号作为单独的单词处理。因此,在文件中移动时,我的类名被视为5个单词。你的意思是
eewbb
?关键是要在Vim认为的单词中包含
-
。使用默认值,您必须点击
5e
才能从
转到
中的最后一个字符。社交网络按钮
,但使用
:设置iskeyword+=-
只需点击
e
一次。对不起,我不清楚我想说的是,我喜欢将破折号视为分词的默认运动,但我想我可以改变我的肌肉记忆来使用f-因为我更希望完全完成而不是运动。