2011-08-29 62 views
6

大部分情況下,我發現大小寫敏感的標籤搜索是合適的。我們使用的大多數語言都區分大小寫,所以這是可取的。在Vim中區分大小寫的標籤搜索

但是,我在我的工作場所使用不區分大小寫的標識符的DSL。我爲這個DSL生成標籤,我甚至可以用摺疊箱對它進行排序(並在標籤文件中設置適當的標誌),但是Vim仍然對標識符進行區分大小寫匹配。

我會喜歡的是,如果Vim可以理解'摺疊大小寫'標記文件爲「此語言不區分大小寫」。有這樣的設置嗎?

我想我可以打開ignorecase這個文件類型(我換出了標籤文件並改變了一些其他設置),但是當病例不匹配時,Vim就會咆哮着我。我只是喜歡對Vim說的一種方式,「嘿,這不區分大小寫,所以沒關係,你不需要對我大吼一聲。」一般來說,我認爲Vim可以從標籤文件排序的方式來解釋意圖,但也許這不是廣泛持有的願望...

回答

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/ 

唉,看起來它沒有。


我前幾天遇到一個問題,它爲大衆提供了進一步的文檔;我找到的一些標籤沒有找到,但當我查看標籤文件時,他們在那裏。然後,我注意到,該項目上方有幾行有跳過的行,它們具有相同的前導字符,但後面是下劃線;我意識到,下劃線在信件前排序,並想知道這是否可能是一個問題(下劃線是在captial Z和小寫字母A之間出現的六個字符之一,但唯一一個在C兼容標識符中有效的字符)。

對於咯咯我手動訴諸違規部分,以便在字母后面出現下劃線。我甚至編寫了一個最小的測試用例,併爲bugs @ vim寫了一個大bug報告,然後決定查看關於標籤的文檔以「引用適當的參考」。在那裏它被埋在了: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

這不是一個合適的答案,但希望它將成爲一個!

你會提供更多的細節?就像一個小例子?

這是我的一個嘗試,但我不確定它是否說明你在說什麼。如果您想進行協作,我還會將其保存在gist中,也許我們可以一起找到答案。

標籤:

blah a.txt 1 

A.TXT:

bLah 

Gist of same

重現步驟:

  1. 運行VIM
  2. :set ignorecase
  3. :tag blah
  4. GET消息: 「1個或多個使用標記不同的情況下,標籤1」

另外,看起來像someone asked this question recently on the Vim user mailing list,但我沒有看到任何答覆。

+0

是的,儘管我的'tags'文件與它被標記的源文件具有相同的大小寫,即'tags'有一個大寫字母L,但我仍然會執行':'''''''''''''並獲得「使用不同大小寫的標籤」消息。這很煩人。 :) –

2

我是比較新的VIM,但我將此添加到我的.vimrc,它似乎也爲我工作至今。

"Tag jumping 

function! TagInsensitiveJump() 
    execute ":tj /\\c" . expand("<cword>") 
endfunction 

nnoremap <C-]> :call TagInsensitiveJump()<CR> 
+1

您也可以在'.vimrc'中設置ignorecase來實現同樣的功能。 –