Wie kann ich vim veranlassen, die aktuelle Klasse und Methode anzuzeigen, die ich bearbeite?

15

Weiß jemand, ob es möglich ist (oder ob es ein vorhandenes VIM-Skript oder Plugin gibt), das eine "Statusleiste" erstellt, die den Namen der aktuellen Klasse und Methode (oder Funktion) anzeigt, die ich bearbeite?

Ich stelle mir vor, dass es sich in den Syntaxparser für den Dateityp des aktuellen Puffers einfügt und einen Breadcrumb-Trail anzeigt, der Ihnen anzeigt, was Sie gerade bearbeiten. Ich kenne Vimscript nicht gut genug, um mehr als das vorzuschlagen, aber wenn es noch keine guten Lösungen gibt, kann ich anfangen, eine zu hacken, also sind Vorschläge, wo ich anfangen soll, auch willkommen!

dcrosta
quelle

Antworten:

7

Dieses Skript fügt den Namen der aktuellen Funktion in die Titelleiste und / oder die Statuszeile ein. Mit ctags wird eine Liste von Tags für die aktuelle Datei generiert. Dabei wird davon ausgegangen, dass das Tag vor der Cursorposition der Name der aktuellen Funktion ist. Da es ctags verwendet, kann es angepasst werden, um mit verschiedenen Sprachen zu arbeiten, sogar mit strukturierten Textdateien. Es funktioniert gut in der Praxis, hat aber einige Einschränkungen. Wenn nichts anderes, könnte es Ihnen einen Ausgangspunkt für das Hacken geben.

garyjohn
quelle
6

Dies funktioniert, wenn Sie sowohl das Airline- als auch das Tagbar- Plugin installieren . Diese beiden Plugins werden automatisch integriert und Sie erhalten die aktuelle Funktion in der Statusleiste angezeigt. Wenn Sie die vollständige Objekthierarchie haben möchten (z. B. Klasse + Methode), müssen Sie dies in Ihrer .vimrc konfigurieren:

let g:airline#extensions#tagbar#flags = 'f'  " show full tag hierarchy

Möglicherweise müssen Sie die Tags-Datei für die Tag-Leiste einrichten, um die aktuelle Code-Position zu ermitteln, wenn Sie ctags noch nicht verwenden. Wenn Sie noch nichts darüber wissen, finden Sie hier eine kurze Einführung in ctags .

Karl Bartel
quelle