Wie richte ich Tags für Ruby, SASS, Slim und Coffescript ein?

7

Ich entwickle Main in Rails mit SASS, Slim und Coffeescript. Ich habe Exuberant Ctags installiert und verwende das Setup von tpope

Es funktioniert so, dass ich mich zumindest in meinem Ruby-Code bewegen kann.

Aber ich möchte in der Lage sein:

SASS
color: $whatever    <- go to that color
@extend %something  <- go to that mixin
+another()          <- go to that include

HTML/SLIM
.nice_class         <- go to that class in .sass file
#id                 <- find JS files using this #id

RUBY
has_many :something <- go to that class
concerns :important <- go to that symbol

Und vielleicht das Wichtigste - ich möchte das oben Gesagte automatisch vervollständigen. So kann ich CSS-Klassen, HTML-IDs und Ruby-Symbole im Projekt wiederverwenden.

Wie richte ich Ctags ein, um CSS-Klassen, HTML-IDs, Sass-Mixins und alles andere abzudecken, was in der modernen Webentwicklung verwendet wird?

Firedev
quelle
Das scheint weit über das Wissen um einfache Tags und mehr als das Niveau von so etwas cscopehinauszugehen, aber ich weiß nicht, ob cscope HTML + JS + CSS unterstützt.
Muru
1
Sie könnten sich diese SO-Frage ansehen .
Romainl

Antworten:

3

Vim ist ein leistungsstarker Texteditor. Die Tags- Funktion basiert auf einer einfachen Grundlage: Vim kann eine oder mehrere Tag-Datenbanken lesen , die zeilenbasierte Datensätze enthalten, die aus einem Tag (im Grunde eine Zeichenfolge), einer entsprechenden Datei und Adresse (Suchmuster) bestehen, um sie zu finden, und optional zusätzliche Information.

Das bekommen Sie: Wenn Sie eine Tag-Datei erstellen, die Ruby, SASS und CoffeeScript abdeckt, können Sie zu definierten Tags springen und die Vervollständigung verwenden. Über diesen einfachen, leicht verständlichen Mechanismus hinaus verfügt Vim jedoch nicht über die Fähigkeit, verschiedene Sprachen und Symbole anhand von Syntax oder Siegeln zu unterscheiden. Während Sie benutzerdefinierte Informationen erstellen könnten, würden Sie sich in die Richtung bewegen, eine IDE zu erstellen, was Vim nicht ist. Akzeptieren Sie besser die Einschränkungen und verwenden Sie Vim dort, wo es sich auszeichnet, und halten Sie sich für den Rest an eine IDE.

TL; DR: Vim ist ein sprachunabhängiger Texteditor mit grundlegenden Navigationsmitteln. Verwenden Sie für alle Funktionen eine IDE für die Navigation.

Ingo Karkat
quelle
1
Ich weiß, dass Vim die Sprache, die es bearbeitet, nicht versteht. Gibt es eine Möglichkeit, Ctags so einzurichten, dass alles gesammelt wird, was mit einem Punkt, einem Hash, einem Prozentzeichen usw. beginnt? PS. Danke für die Kamelkastenbewegung.
Firedev
1
In üppigen ctags sind Regeln für die unterstützten unterstützten Sprachen integriert. Ich glaube nicht, dass Sie diese ändern können. Aber Sie können Ihre eigene, Regexp-basierte Analyse über--langdef=... --langmap=... --regex-...=...
Ingo Karkat
2
"Akzeptieren Sie besser die Einschränkungen und verwenden Sie Vim dort, wo es sich auszeichnet, und halten Sie sich für den Rest an eine IDE." @IngoKarkat Das macht keinen Sinn. Sie sagen, das Hin- und Herwechseln zwischen Vim und einer IDE ist idealer, als Vim so anzupassen, dass es alles tut, was Sie wollen. Es wäre besser, ein angepasstes Vim zu haben, das alles, was Sie wollen, genau so macht, wie Sie es wollen. Du gibst zu leicht auf. Gib nicht auf. Vim + Linux + Shell = textbasierte IDE. Innerhalb des Konzepts einer textbasierten IDE können Sie damit alles tun, was Sie wollen.
still_dreaming_1
@INTPnerd: Zumindest für bestimmte Sprachen sind IDEs in ihrer Funktionalität weit voraus. Kurz gesagt, nur zwei Dinge, bei denen es für Vim schwierig sein wird, Schritt zu halten: ausgefallene GUI-Visualisierungen (von Bram ausgeschlossen) und Asynchronität (schwer zu implementieren). Ich persönlich verwende IntelliJ IDEA und GVIM parallel und bin sehr zufrieden mit dem Setup "Das Beste aus zwei Welten".
Ingo Karkat
@IngoKarkat Das funktioniert nur für bestimmte Dinge. Aber was eine gute Unterstützung für die Code-Suche / -Navigation angeht, sollten diese Dinge in vim wirklich gut funktionieren, wenn Sie sie verwenden. Es wäre nicht sinnvoll, Code in vim zu bearbeiten und dann zu einer IDE zu wechseln, um einen Code zu suchen, damit Sie ihn in Vim bearbeiten können. Bisher war ich noch nie mit einer Vim-Emulation zufrieden, die ich in einer IDE gesehen habe. Am Ende fehlt mir immer Vim mit all den Anpassungen und Plugins, die ich dafür habe. Dies wird immer wahrer, je länger Sie Vim verwenden und somit Vim nach Ihren Wünschen anpassen / erweitern.
still_dreaming_1
1

Probieren Sie vim-gutentags aus: https://github.com/ludovicchabant/vim-gutentags Es werden automatisch Tags für Sie generiert. Ein Wort der Warnung: Dieses Plugin generiert Tags nach jedem Speichern automatisch neu, sodass Sie möglicherweise insgesamt langsamer werden. Außerdem werden Tags für jede Datei generiert, die Sie geöffnet haben, sodass Sie möglicherweise eine Tag-Datei in Ihrem Dotfiles-Ordner haben. Wenn Sie die Generierung von Tags für das Projekt deaktivieren möchten, lesen Sie Folgendes: https://github.com/ludovicchabant/vim-gutentags/commit/7316197a7f884e264e20590cbad90046d8337fbb

Persönlich benutze ich es schon seit einiger Zeit und wenn es richtig konfiguriert ist, kann dieses Plugin eine enorme Zeitersparnis sein, aber YMMV.

dkns
quelle
Gerade deaktiviertes easytagsPlugin, das vim verlangsamte vi.stackexchange.com/a/2897/237 und auf die Verwendung von Git-Hooks umstellte, wie von tpope vorgeschlagen
firedev
^ Was auch nicht so gut funktioniert hat.
Firedev