在大多数情况下,我发现区分大小写的标签搜索是合适的。我们使用的大多数语言都区分大小写,因此这是可取的。
但是,我的工作场所中有一个DSL,它使用不区分大小写的标识符。我为这个DSL生成标签,我甚至可以用foldcase对它进行排序(并在标签文件中设置相应的标志),但Vim似乎仍然对标识符进行区分大小写匹配。
我喜欢的是,如果Vim能够将“折叠案例”标记文件理解为“此语言不区分大小写”。有这样的设置吗?
我想我可以打开ignorecase
这个文件类型(我切换标签文件并改变其他一些设置),但是当案例不匹配时,Vim会对我咆哮。我只是想对Vim说一句话,“嘿,这不是区分大小写,所以没关系,你不需要对我大喊大叫。”一般来说,似乎我觉得Vim只能从标签文件的排序方式来解释意图,但也许这不是广泛持有的愿望...
答案 0 :(得分:2)
最终我只是做了ignorecase
解决方案。我在我的vimrc中有这些:
autocmd BufEnter * setlocal noignorecase
autocmd BufEnter *.{dsl-a,dsl-b*} setlocal ignorecase
烦人但问题解决了;我希望Vim会注意到标签文件中的标题:
!_TAG_FILE_SORTED 2 /0=unsorted, 1=sorted, 2=foldcase/
唉,似乎没有。
前几天我遇到了一个问题,为群众提供了进一步的文件;我找不到的一些标签找不到,但是当我查看标签文件时,它们就在那里。然后我注意到项目上方有一些被跳过的行,它们具有相同的前导字符但后来是下划线;我意识到下划线在字母之前排序并且想知道这是否是一个问题(下划线是出现在资本Z和小写A之间的六个字符之一,但是唯一一个在C兼容标识符中有效的字符)。 p>
对于咯咯笑声,我手动使用违规部分,以便在字母后面出现下划线。我甚至编写了一个最小的测试用例并编写了一个关于bug @ 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()
答案 1 :(得分:2)
我对vim相对较新,但我将其添加到我的.vimrc
中,到目前为止似乎对我有用。
"Tag jumping
function! TagInsensitiveJump()
execute ":tj /\\c" . expand("<cword>")
endfunction
nnoremap <C-]> :call TagInsensitiveJump()<CR>
答案 2 :(得分:1)
这不是一个合适的答案,但希望它会成为一个答案!
您会提供更多详情吗?比如,一个小工作的例子?
这是我的尝试,但我不确定它是否说明了你在说什么。如果你想要合作,我也会把它保留在gist中,然后我们可以一起找到答案。
标记:
blah a.txt 1
A.TXT:
bLah
重现的步骤:
:set ignorecase
:tag blah
此外,看起来像someone asked this question recently on the Vim user mailing list,但我没有看到任何回复。