是否允许在Vim'中包含空格;s';iskeyword';选项

是否允许在Vim'中包含空格;s';iskeyword';选项,vim,Vim,'iskeyword'的文档中没有提到这一点。我认为这是可能的,因为'isfname'允许包含一个空格(尽管不推荐) 但是,在设置iskeyword=@,48-57,32之后,空格仍然不能识别为关键字字符。我错过了什么吗?是的,这是可能的(但您应该暂时这样做,例如,对于同义词表查找,因为这样的设置是意外的,必然会破坏Vim中的许多插件和其他东西) 我可以包括一个空间通过 :set iskeyword+=32 结果是,iskeyword=@,48-57,192-255,32。我得到了正确的hls

'iskeyword'
的文档中没有提到这一点。我认为这是可能的,因为
'isfname'
允许包含一个空格(尽管不推荐)

但是,在
设置iskeyword=@,48-57,32
之后,空格仍然不能识别为关键字字符。我错过了什么吗?

是的,这是可能的(但您应该暂时这样做,例如,对于同义词表查找,因为这样的设置是意外的,必然会破坏Vim中的许多插件和其他东西)

我可以包括一个空间通过

:set iskeyword+=32
结果是,
iskeyword=@,48-57,192-255,32
。我得到了正确的hlsearch突出显示和
matchstr(…,'\k\+')
匹配


请注意,要使同义词库完成(
i\u CTRL-X\u CTRL-T
)生成多个单词仍然相当困难,因为完成基础现在还包括光标前的所有(修改的)关键字,而且现在也可以是多个单词

我不能说这是否可能,但这样做会破坏这么多文本对象和运动的功能,听起来很愚蠢。我同意romainl的观点,你能告诉我们你为什么要这样做吗?我正试图为同义词库文件设置选项“iskeyword”,其中可能包含我希望它成为关键字的短语。否则,我只会在其中包含单词。我认为可以从同义词库文件的“modeline”设置“iskeyword”选项。但更改当前缓冲区的“iskeyword”选项肯定不合适。另外,像
w
/
b
这样的动作从不将空格视为关键字字符。所以我很高兴地放弃了。只有在加载同义词库文件进行正常编辑时才会考虑使用modeline。如果你想用它来完成同义词表,那就通过一个不同的代码路径;它没有作为Vim缓冲区加载,甚至没有隐藏在后台。事实上,我已经实现了多词同义词库补全,但它充满了黑客攻击,我没有考虑发布它。相反,我希望看到这个特性在CoreVim中实现(这在当前的开发环境中是不可能的)。我也希望看到这一功能得到完善。