Gehen Sie zu Zeilen, die mit dem Befehl [I]: übereinstimmen, um Zeilen mit einem Wort unter dem Cursor anzuzeigen.

0

Beim Drücken [I VIM zeigt eine Liste von Zeilen, die dem Wort unter dem Cursor entsprechen. Zum Beispiel, wenn sich der Cursor auf dem Wort befindet Table und man drückt [I Folgendes wird gezeigt:

  1:   49 class Table(object):
  2:  220         new_table = Table(t, records)
  3:  241         tables.append(Table(row[0], row[1],))
  4:  392         tables.append(Table(t, records))
Press ENTER or type command to continue

Wie kann man leicht eine Option aus der Liste auswählen, d. H. Zu einer der Zeilen springen? Ich habe versucht Tab. Ctrl-N. Ctrl-P. j, die Pfeiltasten und die Eingabe 1. 2, und so weiter. Nichts davon funktioniert. Ich weiß, ich könnte einfach die Zeilennummer eingeben und dann gg Ich möchte gerne wissen, ob VIM einen weiteren Trick im Ärmel hat.

dotancohen
quelle

Antworten:

2

Das folgende vim-Mapping sollte das tun, was Sie möchten (Mapping basiert auf meinem Speicherwort für dieses Mapping: fast-search ):

nmap <leader>fs [I:let nr = input("Which one: ")<Bar>exe "normal " . nr ."[\t"<CR>

Der obige Befehl listet zuerst die Zeilen auf, die mit dem Wort unter dem Cursor vom Anfang der Datei übereinstimmen, und fragt Sie dann, zu welcher Übereinstimmung Sie springen möchten, und springt schließlich zu dieser Übereinstimmung.

Wenn Sie Zeilen vor dem Wort unter dem Cursor lieber als den Anfang der Datei auflisten möchten, können Sie Folgendes verwenden:

nmap <leader>fs ]I:let nr = input("Which one: ")<Bar>exe "normal " . nr ."]\t"<CR>

Beachten Sie, dass Die eckigen Klammern werden im späteren Befehl invertiert.

Stoic
quelle
1

Diese Liste ist nicht interaktiv, Sie sollten folgendes tun, um zum zweiten Spiel zu springen:

:220<CR>
romainl
quelle
nicht unbedingt. vim magisch hat immer einen Weg zu tun, was Sie wollen.
Stoic
Was ist "nicht unbedingt"?
romainl