Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim中不区分大小写的标记搜索_Vim_Ctags - Fatal编程技术网

Vim中不区分大小写的标记搜索

Vim中不区分大小写的标记搜索,vim,ctags,Vim,Ctags,在大多数情况下,我认为区分大小写的标签搜索是合适的。我们使用的大多数语言都区分大小写,因此这是可取的 然而,我的工作场所中有一个DSL,它使用不区分大小写的标识符。我为这个DSL生成标记,甚至可以使用foldcase对其进行排序(并在标记文件中设置适当的标志),但Vim似乎仍然对标识符进行区分大小写的匹配 我希望Vim能够将“折叠大小写”标记文件理解为“这种语言不区分大小写”。有这样的设置吗 我想我可以为这个文件类型打开ignorecase(我关闭了标签文件并更改了一些其他设置),但是当案例不匹

在大多数情况下,我认为区分大小写的标签搜索是合适的。我们使用的大多数语言都区分大小写,因此这是可取的

然而,我的工作场所中有一个DSL,它使用不区分大小写的标识符。我为这个DSL生成标记,甚至可以使用foldcase对其进行排序(并在标记文件中设置适当的标志),但Vim似乎仍然对标识符进行区分大小写的匹配

我希望Vim能够将“折叠大小写”标记文件理解为“这种语言不区分大小写”。有这样的设置吗


我想我可以为这个文件类型打开
ignorecase
(我关闭了标签文件并更改了一些其他设置),但是当案例不匹配时,Vim会对我咆哮。我只想用一种方式对Vim说,“嘿,这不区分大小写,所以没关系,你不需要对我大喊大叫。”一般来说,Vim可以从标记文件的排序方式来解释意图,这对我来说似乎是可取的,但这可能不是一个普遍的愿望…

这不是一个合适的答案,但希望它会成为一个

你能提供更多细节吗?比如,一个小的工作示例

这是我的一个尝试,但我不确定它是否能说明你在说什么。我也会把它放在一个盒子里,以防你想合作,也许我们可以一起找到答案

标签:

a、 txt:

bLah

复制步骤:

  • 运行vim
  • do
    :设置ignorecase
  • do
    :标记废话
  • 获取消息:“使用带有不同大小写的标记标记1个或多个标记中的1个!”

  • 还有,看起来像,但我没有看到任何反应。

    最终我只是做了
    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/
    
    if casefold:
        tags.sort(key=str.upper)  # tag file requires case folding to be folded to upper case
    else:
        tags.sort()
    
    唉,看来情况并非如此


    前几天我遇到了一个问题,这个问题为群众提供了进一步的文件;我搜索的一些标签没有找到,但当我在标签文件中查找时,它们就在那里。然后我注意到,在被跳过的项目上方,有一些行具有相同的前导字符,但有一个下划线;我意识到下划线在字母之前排序,并想知道这是否是一个问题(下划线是出现在大写字母Z和小写字母a之间的六个字符之一,但在兼容C的标识符中唯一有效)

    对于傻笑,我手动使用了冒犯部分,以便在字母后面出现下划线。我甚至设计了一个最小的测试用例,并为它编写了一个大的bug报告bugs@vim然后决定查看标签上的文档以“引用适当的参考”。在那里,它被埋葬在
    :help tagb search
    的末尾,也就是说,对我们这些慢性tl患者没有什么用处;埃尔斯博士

    请注意,必须将大小写折叠为大写才能使用。

    对Python脚本的一行更改修复了我的标记文件:

    !_TAG_FILE_SORTED   2   /0=unsorted, 1=sorted, 2=foldcase/
    
    if casefold:
        tags.sort(key=str.upper)  # tag file requires case folding to be folded to upper case
    else:
        tags.sort()
    

    我对vim比较陌生,但我把它添加到了我的
    .vimrc
    中,到目前为止,它似乎对我很有效

    "Tag jumping
    
    function! TagInsensitiveJump()
      execute ":tj /\\c" . expand("<cword>") 
    endfunction
    
    nnoremap <C-]> :call TagInsensitiveJump()<CR>
    
    “标记跳转
    函数!TagInsensitiveJump()
    执行“:tj/\\c”。展开(“”)
    端功能
    nnoremap:调用TagInsensitiveJump()
    
    是的,虽然我的
    标记
    文件的大小写与其标记的源文件相同,但这已经接近解决方案了。例如,
    标记
    有大写字母L,但我仍然使用
    :标记blah
    并获得“使用不同大小写的标记”“留言。这很烦人您也可以在
    .vimrc
    中设置ignorecase,以实现同样的效果。