Điều hướng thẻ bằng CTRL +] không hoạt động với bàn phím Non English trên Windows


6

Khi sử dụng gVim trên Windows 7, tôi không thể sử dụng ^] ( CTRL+ ]) để chuyển đến các thẻ như được mô tả trong tài liệu Vim :

<C-LeftMouse>                   *<C-LeftMouse>* *CTRL-]*
CTRL-]      Jump to the definition of the keyword under the
            cursor.  Same as ":tag {ident}", where {ident} is the
            keyword under or after cursor.
            When there are several matching tags for {ident}, jump
            to the [count] one.  When no [count] is given the
            first one is jumped to. See |tag-matchlist| for
            jumping to other matching tags.
            {Vi: identifier after the cursor}

Điều này từng làm phiền tôi rất nhiều khi học Vim . Cuối cùng, tôi đã giải quyết nó bằng cách sử dụng ánh xạ hacky này

nnoremap <leader>t :tag <c-r><c-w><cr>

cho phép tôi chuyển sang các thẻ bằng cách sử dụng \t(Tôi đã sử dụng cài đặt mặc định \<leader>).

Đây không còn là vấn đề đối với tôi nữa vì bây giờ tôi chỉ sử dụng gnu / linux để lập trình và tôi đã đọc khá nhiều tất cả các trợ giúp để đọc. Nhưng xem xét rằng điều này đã góp phần làm cho trải nghiệm học tập Vim của tôi trở nên tồi tệ hơn rất nhiều, tôi yêu cầu ở đây để giải quyết vấn đề này cho những người có hoàn cảnh tương tự như tôi.

Tại sao CTRL+ không ]hoạt động với tôi trên Windows 7 và làm cách nào để khắc phục?

Chỉnh sửa : Tiêu đề đã được chỉnh sửa với thông tin rằng sự cố này là do bố cục bàn phím tôi đã sử dụng.


bạn có thể cung cấp thêm thông tin không? Tại sao nó không hoạt động? Bạn đã cài đặt ctags chưa? Thông báo lỗi nào bạn nhận được, nếu có, khi bạn thử sử dụng Ctrl-]một từ?
akshay

1
Tôi chỉ cần tìm ra nó! Vấn đề là do tôi đã sử dụng bố trí bàn phím yêu cầu ^]phải nhập bằng cách sử dụng Ctrl-AltGr-9không hoạt động trong Vim. Tôi đã trả lời câu hỏi của riêng tôi với thông tin này.
wefwefa3

1
FWIW, <C-]>trên bàn phím Mac AZERTY có được bằng cách nhấn <C-$>, $ở cùng vị trí vật lý như ]trên bàn phím QWERTY.
romainl 6/12/2015

Tôi nhớ một giải pháp liên quan đến việc sử dụng Trình tạo bố cục bàn phím MS để "tiêm" tổ hợp phím (tức là HĐH hoàn toàn không tạo mã khóa khi Ctrl-]được nhấn. Hoặc là để làm Ctrl-[gì?)
VanLaser

1
@romainl: cảm ơn vì đã đề cập đến điều này. Nhắc tôi về câu hỏi của riêng tôi, tôi đã hỏi về SO về chủ đề này. Đã được trả lời bởi ... bạn :-)
eckes 6/12/2015

Câu trả lời:


12

Nói xin chào với phân mảnh kiến ​​thức: https://stackoverflow.com/q/6932702/520162 Câu hỏi này đã được hỏi và trả lời trên StackOverflow.

Phím này là bấm CTRLvà phím được đặt ở vị trí ]sống trên bàn phím Hoa Kỳ . Tôi gặp vấn đề với bàn phím tiếng Đức QUERTZ và phải nhấn CTRL-+

So sánh: Bàn phím Mỹ: Bàn phím Mỹ

Bàn phím tiếng Đức: Bàn phím tiếng Đức

Một cách rõ ràng khác là chỉ cần ánh xạ lại chức năng cho một tổ hợp phím khác. Vì bạn muốn g o t o thẻ theo con trỏ, bạn có thể sử dụng oocho việc này:

:map oo <C-]>

2

Tôi chỉ tìm ra lý do tại sao tôi có vấn đề này.

Nguyên nhân của vấn đề

Vấn đề là tôi đã sử dụng bố trí bàn phím không phải tiếng Anh trên máy tính Windows 7 của mình.

Ký tự dấu gạch chéo ngược được nhập bằng Alt Gr+ 9trên bố cục bàn phím không phải tiếng Anh của tôi. Điều này dẫn đến việc ^] sẽ được nhập bằng Ctrl+ Alt Gr+ 9. Điều này chỉ đơn giản là không hoạt động trong Vim .

Tôi không biết tại sao:

  • Vấn đề có thể là ở phần cứng. Có thể vấn đề là do bóng ma bàn phím bị hạn chế (nhưng tôi có cùng một vấn đề với một bàn phím được cho là có thể đăng ký 6 phím cùng một lúc).

  • Vấn đề có thể là ở phần mềm. Vim có lẽ đã không được lập trình với điều này trong tâm trí.

Tôi sẽ đánh giá cao nếu người khác sử dụng bàn phím không phải tiếng Anh có thể nhận xét nếu ^] hoạt động như trên máy của họ.

Giải pháp

Vấn đề được khắc phục bằng cách thay đổi bố cục bàn phím tiếng Anh. Thật không may, tôi đã không tìm thấy giải pháp khác.

Vì vậy, bạn phải sử dụng một bố cục tiếng Anh thay thế. Giao diện người dùng của Vim cũng được thiết kế với bố cục bàn phím tiếng Anh. Sử dụng một bố trí bàn phím tiếng Anh cũng là thuận lợi trong lập trình vì nhân vật thích [, {;đó thường được sử dụng trong việc lập trình trở nên dễ dàng hơn để đạt được (không Alt Grcăng). Vì vậy, chuyển đổi thậm chí có thể làm cho cuộc sống của bạn thoải mái hơn!

Vấn đề sẽ là về việc nhập các ký tự trong ngôn ngữ chính của bạn. Sau đó, bạn phải sử dụng các bản đồ (xem :help digraphs).

Một cách khác để giải quyết vấn đề này là sử dụng bản đồ hacky đã được đề cập trong câu hỏi:

nnoremap <leader>t :tag <c-r><c-w><cr>

Điều này cho phép người dùng nhảy đến một thẻ với \t(nếu <leader>được đặt thành \theo mặc định).


2
Đây không phải là giải pháp, đây là đầu hàng.
eckes 6/12/2015
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.