在大多数情况下,我发现区分大小写的标签搜索是合适的。我们使用的大多数语言都区分大小写,因此这是可取的。
但是,我的工作场所中有一个 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/
唉,看来事实并非如此。
<小时/>前几天我遇到了一个问题,它为大众提供了进一步的文档;找不到我要搜索的一些标签,但当我查看标签文件时,它们就在那里。然后我注意到被跳过的项目上方有一些行具有相同的前导字符,但有一个下划线;我意识到下划线在字母之前排序,并想知道这是否可能是一个问题(下划线是大写 Z 和小写 A 之间出现的六个字符之一,但在 C 兼容标识符中是唯一有效的字符)。
为了咯咯地笑,我手动重新排列了有问题的部分,以便在字母后面出现下划线。我什至编写了一个最小的测试用例,并为 bugs@vim 编写了一份大错误报告,然后决定查看标签文档以“引用适当的引用”。它被埋在 :help tagbsearch
的末尾,即对我们这些长期看书的人来说没什么用处。
请注意,必须将大小写折叠为大写才能正常工作。
对我的 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/