Die Tag-Navigation mit STRG +] funktioniert unter Windows nicht mit nicht englischer Tastatur

6

Bei Verwendung von gVim unter Windows 7 kann ich nicht mit ^] ( CTRL+ ]) zu Tags springen, wie in der Vim- Dokumentation beschrieben:

<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}

Das hat mich beim Lernen von Vim sehr gestört . Am Ende habe ich es geschafft, es mit diesem hackigen Mapping zu lösen

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

Dadurch konnte ich mit zu Tags springen \t(ich habe die Standardeinstellung von \as verwendet <leader>).

Dies ist für mich kein Problem mehr, da ich jetzt nur noch gnu / linux zum Programmieren benutze und bereits so ziemlich alle Hilfe gelesen habe, die es zu lesen gibt. Aber wenn man bedenkt, dass dies dazu beigetragen hat, meine Erfahrung mit dem Erlernen von Vim so viel schlechter zu machen, bitte ich hier, dies für Menschen zu lösen, die sich in der gleichen Situation befinden, in der ich mich befand.

Warum funktioniert CTRL+ ]unter Windows 7 nicht für mich und wie kann es behoben werden?

Bearbeiten : Der Titel wurde mit der Information bearbeitet, dass dieses Problem durch das von mir verwendete Tastaturlayout verursacht wird.

wefwefa3
quelle
Können Sie weitere Informationen bereitstellen? Warum funktioniert es nicht? Haben Sie ctags installiert? Welche Fehlermeldung erhalten Sie gegebenenfalls, wenn Sie versuchen, Ctrl-]ein Wort zu verwenden?
Akshay
1
Ich habe es gerade geschafft, es herauszufinden! Das Problem war, dass ich ein Tastaturlayout verwendet habe ^], das eingegeben werden Ctrl-AltGr-9muss und das in Vim nicht funktioniert. Ich habe meine eigene Frage mit diesen Informationen beantwortet.
Wefwefa3
1
FWIW wird <C-]>auf einer AZERTY Mac-Tastatur durch Drücken erhalten <C-$>und befindet $sich an derselben physischen Position wie ]auf QWERTY-Tastaturen.
Romainl
Ich erinnere mich an eine Lösung, bei der die Tastenkombination mit MS Keyboard Layout Creator "eingefügt" wurde (dh das Betriebssystem hat beim Ctrl-]Drücken überhaupt keinen Ctrl-[
Tastencode
1
@romainl: danke, dass du das erwähnt hast. Erinnerte mich an meine eigene Frage, die ich zu diesem Thema auf SO gestellt hatte. Beantwortet von ... dir :-)
eckes

Antworten:

12

Begrüßen Sie die Wissensfragmentierung: https://stackoverflow.com/q/6932702/520162 Diese Frage wurde bereits auf StackOverflow gestellt und beantwortet.

Die Taste ist zu drücken CTRLund die Taste, die sich dort befindet, wo sich das ]auf der US-Tastatur befindet . Ich hatte das Problem mit einer deutschen QUERTZ-Tastatur und muss drücken CTRL-+

Vergleichen Sie: US-Tastatur: US-Tastatur

Deutsche Tastatur: Deutsche Tastatur

Eine andere naheliegende Möglichkeit wäre, die Funktionalität einfach einem anderen Tastendruck zuzuordnen. Da Sie wollen g o t o der Tag unter dem Cursor, könnten Sie oofür diese:

:map oo <C-]>
eckes
quelle
2

Ich habe gerade herausgefunden, warum ich dieses Problem hatte.

Die Ursache des Problems

Das Problem ist, dass ich auf meinem Windows 7-Computer ein nicht englisches Tastaturlayout verwendet habe.

Das Backslash-Zeichen wird mit Alt Gr+ 9in meinem nicht-englischen Tastaturlayout eingegeben. Dies führt dazu, dass ^] mit Ctrl+ Alt Gr+ eingegeben wird 9. Dies funktioniert in Vim einfach nicht .

Ich weiß nicht warum das so ist:

  • Das Problem könnte in der Hardware liegen. Möglicherweise wird das Problem durch begrenzte Tastatur-Ghosting verursacht (aber ich habe das gleiche Problem mit einer Tastatur, die 6 Tasten gleichzeitig registrieren soll).

  • Das Problem könnte in der Software liegen. Vim war vielleicht nicht dafür programmiert.

Ich würde mich freuen, wenn jemand anderes, der eine nicht-englische Tastatur verwendet, kommentieren könnte, ob ^] auf seinem Computer ordnungsgemäß funktioniert.

Die Lösung

Das Problem wird durch einfaches Wechseln zu einem englischen Tastaturlayout behoben. Leider habe ich keine andere Lösung gefunden.

Sie müssen stattdessen ein englisches Layout verwenden. Die Benutzeroberfläche von Vim wurde auch mit Blick auf das englische Tastaturlayout entwickelt. Eine englische Tastaturlayout verwendet , ist auch von Vorteil bei der Programmierung , da Zeichen wie [, {und ;das sind in der Programmierung werden leichter zu erreichen (keine häufig verwendete Alt GrStretch). So kann das Umschalten sogar Ihr Leben angenehmer machen!

Das Problem besteht darin, Zeichen in Ihrer Hauptsprache einzugeben. Dann müssen Sie auf Digraphen zurückgreifen (siehe :help digraphs).

Eine andere Möglichkeit, dieses Problem zu lösen, besteht darin, dieses in der Frage erwähnte Hacky-Mapping zu verwenden:

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

Welche ermöglicht es dem Benutzer zu einem Tag springen mit \t(falls <leader>eingestellt ist , \wie es standardmäßig ist).

wefwefa3
quelle
2
Dies ist keine Lösung, dies ist Kapitulation.
eckes