2011-08-29 31 views
6

Đối với hầu hết các phần, tôi tìm thấy thẻ nhạy cảm chữ hoa chữ thường đang tìm kiếm cho phù hợp. Hầu hết các ngôn ngữ mà chúng tôi sử dụng đều phân biệt chữ hoa chữ thường, vì vậy đây là điều mong muốn.Tìm kiếm thẻ không phân biệt chữ hoa chữ thường trong Vim

Tuy nhiên, tôi có một DSL tại nơi làm việc của tôi sử dụng số nhận dạng không phân biệt chữ hoa chữ thường. Tôi tạo ra các thẻ cho DSL này, và tôi thậm chí có thể sắp xếp nó với cặp (và đặt cờ thích hợp trong tệp thẻ), nhưng Vim vẫn xuất hiện để làm khớp chữ hoa chữ thường trên các mã định danh.

Điều tôi thích là nếu Vim có thể hiểu được thẻ hình chữ 'gấp lại' là "ngôn ngữ này không phân biệt chữ hoa chữ thường". Có một cài đặt như vậy không?

Tôi cho rằng tôi có thể bật ignorecase cho loại tệp này (tôi cũng chuyển tệp thẻ và thay đổi một vài cài đặt khác), nhưng Vim bark vào tôi khi trường hợp không khớp. Tôi chỉ yêu một cách để nói với Vim, "này, đây không phải là trường hợp nhạy cảm vì vậy nó ok, bạn không cần phải hét lên với tôi về nó." Nói chung có vẻ như mong muốn với tôi rằng Vim chỉ có thể giải thích ý định từ cách tập tin thẻ được sắp xếp, nhưng có lẽ đó không phải là một mong muốn được tổ chức rộng rãi ...

Trả lời

1

Cuối cùng, tôi đã thực hiện giải pháp ignorecase. Tôi có những thứ này trong vimrc của tôi:

autocmd BufEnter *     setlocal noignorecase 
autocmd BufEnter *.{dsl-a,dsl-b*} setlocal ignorecase 

Khó chịu nhưng giải quyết được vấn đề; Tôi hy vọng rằng Vim sẽ chú ý tiêu đề trong tệp thẻ:

!_TAG_FILE_SORTED 2 /0=unsorted, 1=sorted, 2=foldcase/ 

Có vẻ như nó không có.


Tôi đã gặp phải sự cố vào ngày khác mang thêm tài liệu cho công chúng; một số thẻ tôi tìm kiếm không được tìm thấy nhưng khi tôi xem các tệp thẻ họ đã có.Sau đó, tôi nhận thấy rằng có những dòng trên mặt hàng đã bị bỏ qua có cùng các ký tự hàng đầu nhưng sau đó là dấu gạch dưới; Tôi nhận ra rằng dấu gạch dưới đang phân loại trước các chữ cái và tự hỏi liệu đó có phải là một vấn đề hay không (gạch dưới là một trong sáu ký tự xuất hiện giữa Z bị giam giữ và chữ thường A nhưng chỉ có một ký tự hợp lệ trong mã định danh tương thích C).

Đối với tiếng cười khúc khích, tôi đã sử dụng thủ công phần vi phạm để dấu gạch dưới xuất hiện sau các chữ cái. Tôi thậm chí đã làm việc lên một trường hợp thử nghiệm tối thiểu và đã viết một báo cáo lỗi lớn cho lỗi @ vim và sau đó quyết định tìm trong tài liệu trên thẻ để "trích dẫn tài liệu tham khảo thích hợp". Ở đó, nó được chôn cất vào cuối :help tagbsearch, tức là ít sử dụng cho những người trong chúng ta là những người tl, dr-ers mãn tính.

Lưu ý rằng trường hợp phải được gấp thành chữ hoa để làm việc này.

Một sự thay đổi một dòng vào kịch bản Python của tôi cố định tập tin thẻ của tôi:

if casefold: 
    tags.sort(key=str.upper) # tag file requires case folding to be folded to upper case 
else: 
    tags.sort() 
1

Đây không phải là câu trả lời phù hợp, nhưng hy vọng nó sẽ trở thành một!

Bạn sẽ cung cấp thêm chi tiết? Giống như, một ví dụ làm việc nhỏ?

Đây là nỗ lực của tôi tại một, nhưng tôi không chắc chắn nếu nó minh họa những gì bạn đang nói về. Tôi cũng sẽ giữ nó trong một gist trong trường hợp bạn muốn cộng tác, và có thể sau đó chúng ta có thể tìm thấy câu trả lời cùng nhau.

tags:

blah a.txt 1 

a.txt:

bLah 

Gist of same.

bước để tái sản xuất:

  1. chạy vim
  2. làm :set ignorecase
  3. làm :tag blah
  4. nhắn get: "tag 1 trong tổng số 1 trở lên Sử dụng thẻ với trường hợp khác nhau"

Ngoài ra, trông giống như someone asked this question recently on the Vim user mailing list, nhưng tôi không thấy bất kỳ câu trả lời nào.

+0

Điều này gần giống như tôi đã giải quyết, mặc dù tệp 'thẻ' của tôi có cùng trường hợp với tệp nguồn được gắn thẻ. I E. 'thẻ' có một vốn L, nhưng tôi vẫn làm': tag blah' và nhận được thông báo "using tag with different case". Điều đó thật phiền phức. :) –

2

Tôi tương đối mới để vim, nhưng tôi thêm này để .vimrc của tôi và nó dường như làm việc tốt cho tôi cho đến nay .

"Tag jumping 

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

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

Bạn cũng có thể chỉ cần ': đặt ignorecase' trong' .vimrc' của bạn để đạt được điều tương tự. –

Các vấn đề liên quan