在大多数情况下,我发现区分大小写的标记搜索是合适的。我们使用的大多数语言都是区分大小写的,因此这是可取的。
但是,我的工作场所中有一个使用不区分大小写的标识符的DSL。我为此DSL生成了标签,甚至可以用foldcase对其进行排序(并在标签文件中设置适当的标志),但是Vim似乎仍然对标识符进行区分大小写的匹配。
我所希望的是,Vim是否可以将“折叠大小写”标记文件理解为“该语言不区分大小写”。有这样的设置吗?
我想我可以为此文件类型打开ignorecase
(我还是关闭了标签文件并更改了一些其他设置),但是当大小写不匹配时,Vim会吠叫我。我只是想对Vim说一种方式,“嘿,这不区分大小写,所以没关系,您不必对我大喊大叫。”通常,对我来说,Vim可以从标签文件的排序方式来解释意图,但这似乎并不是一个普遍的愿望……
最佳答案
最终,我只是做了ignorecase
解决方案。我的vimrc中有这些:
autocmd BufEnter * setlocal noignorecase
autocmd BufEnter *.{dsl-a,dsl-b*} setlocal ignorecase
烦人但问题解决了;我希望Vim会注意到标记文件中的 header :
!_TAG_FILE_SORTED 2 /0=unsorted, 1=sorted, 2=foldcase/
las,看来事实并非如此。
前几天,我遇到了一个问题,需要为群众做进一步的记录。找不到我要搜索的某些标签,但是当我查看标签文件时,它们在那里。然后我注意到,在要跳过的项目上方有几行,这些行具有相同的前导字符,但下划线。我意识到下划线是在字母前排序,并想知道这是否可能是一个问题(下划线是出现在大写字母Z和小写字母A之间的六个字符之一,但在C兼容标识符中唯一有效)。
对于傻笑,我手动采用了令人反感的部分,以便在字母后出现下划线。我什至编写了一个最小的测试用例,并为bugs @ vim编写了一个大的错误报告,然后决定查看有关标签的文档以“引用适当的引用”。它被埋在
:help tagbsearch
的末尾,即对我们这些长期的tl-ers来说用处不大。请注意,必须将大小写折叠为大写才能起作用。
对我的Python脚本进行的一行更改修复了我的标记文件:
if casefold:
tags.sort(key=str.upper) # tag file requires case folding to be folded to upper case
else:
tags.sort()
关于vim - 在Vim中不区分大小写的标签搜索,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7234072/