Wie man mit Cursor Code schreibt
(arguingwithalgorithms.com)Was ist Cursor
- Cursor ist ein Fork von Visual Studio Code (VS Code), bei dem auf Large Language Models (LLMs) basierende Funktionen in die Kern-UI integriert sind
- Es ist ein proprietäres Produkt mit einer kostenlosen Stufe und Abonnementoptionen
- Hauptfunktionen:
- Tab-Autovervollständigung: Ein proprietäres feinabgestimmtes Modell für Code-Autovervollständigung und das Springen zur nächsten empfohlenen Aktion, nur für Abonnenten verfügbar
- Inline-Bearbeitung: Eine chatbasierte Oberfläche für kostenlose und zahlende Nutzer, mit der sich ausgewählter Code in einer Diff-Ansicht bearbeiten lässt
- Chat-Seitenleiste: Eine chatbasierte Oberfläche für kostenlose und zahlende Nutzer, die mehr Raum für längere Diskussionen bietet
- Composer: Eine chatbasierte Oberfläche für umfangreiches Refactoring über mehrere Dateien hinweg, verfügbar für kostenlose und zahlende Nutzer
Tab-Autovervollständigung
- Die natürlichste Funktion beim Schreiben von Code und diejenige, die am meisten Zeit sparen kann
- Sie schlägt nicht nur Vervollständigungen für eine Zeile, mehrere Zeilen oder ganze Funktionen vor, sondern auch die nächste Zeile, zu der man für die nächste Bearbeitung springen sollte
- Durch wiederholtes Drücken der Tab-Taste lassen sich zusammenhängende Änderungen in der gesamten Datei automatisch vervollständigen
- Kann als Werkzeug zum Refactoring von Code verwendet werden
- Findet manchmal eigenständig Bugs und schlägt Korrekturen vor
- Wenn Zeichenketten in Anführungszeichen gesetzt werden, werden Inhalte passend escaped
- Kann mit nur einer Funktionssignatur und optionalem Docstring eine komplette Funktion schreiben
- Vervollständigungsvorschläge sind sehr schnell
- Nachteile:
- Wenn man den Vorschlag nicht rechtzeitig bemerkt und weitertippt, verschwindet er
- Es kommt vor, dass eine zuvor bewusst abgelehnte falsche Vervollständigung später stillschweigend angewendet wird, wenn man eine andere Vervollständigung akzeptiert
Inline-Bearbeitung, Chat-Seitenleiste, Composer
- Die Interaktion mit dem zugrunde liegenden Modell (meist Claude 3.5 Sonnet) ist sehr ähnlich; Unterschiede gibt es vor allem in der Benutzeroberfläche
- Die Inline-Bearbeitung wird mit Ctrl-K/Cmd-K aufgerufen; danach gibt man die gewünschte Änderung ein und erhält ein Diff, das man akzeptieren oder ablehnen kann
- Die Chat-Seitenleiste wird mit Ctrl+L/Cmd+L geöffnet und bietet mehr Platz für mehrfache Unterhaltungen
- Composer ist für Refactorings über mehrere Dateien hinweg konzipiert und bietet eine bessere Nutzererfahrung, da sich Diffs mehrerer Dateien nacheinander prüfen lassen
Die Datei .cursorrules
- Der Inhalt der Datei
.cursorrulesim Root des Arbeitsbereichs wird immer in verschiedene Chat-Formen eingebunden, um zusätzlichen Kontext bereitzustellen - Sie wird verwendet, um das LLM über Coding-Standards des Repositories, gängige Pakete und andere Dokumentation zu informieren
- Sie kann helfen, eines der großen Hindernisse von Cursor zu lösen: dass Coding-Stil und Muster nicht befolgt werden, sofern sie nicht bereits in der gerade bearbeiteten Datei vorhanden sind
- Derzeit gibt es nur eine Datei pro Arbeitsbereich; deshalb sind Monorepos mit Code in mehreren Sprachen schwieriger einzurichten als kleine Repositories mit kleinen, einheitlich formatierten Codebasen
- Die Datei
.cursorruleswird nur in den Chat-Oberflächen verwendet, nicht für die Tab-Autovervollständigung
Veränderungen im Workflow
- Dass man Code schneller schreiben kann, ist nicht das Interessanteste daran
- Tatsächlich ist das eigentliche Schreiben von Code nicht der Engpass
- Der wahre Wert liegt darin, wie sich die Art des Codens verändert
- Was sich verändert hat:
- Die Wahrscheinlichkeit, nach neuen Bibliotheken oder Frameworks zu suchen, ist deutlich gesunken
- Bei kleinen Utilities ist es einfacher, das LLM etwas für die eigenen Anforderungen schreiben zu lassen, als eine allgemeine Bibliothek einzubinden
- Viele Bibliotheken existieren nur, um Boilerplate zu reduzieren; wenn das LLM das stattdessen übernehmen kann, scheint der Aufwand oft nicht mehr lohnend
- Man macht sich weniger Sorgen darum, im eigenen Code strikt dem DRY-Prinzip (Don't Repeat Yourself) zu folgen
- Früh definierte Abstraktionen können später viel technische Schuld verursachen
- Es ist flexibler geworden, viel Code unter Bezug auf anderen Code zu erzeugen, statt ihn unbedingt in Funktionen oder Klassen zu pressen
- Die Bereitschaft, weniger vertraute Sprachen oder Frameworks zu nutzen, ist deutlich gestiegen
- Zum Beispiel war die Nutzung von R früher schwierig, aber jetzt reicht es, die gewünschte Visualisierung zu beschreiben, um die passende Datenmanipulation und ggplot-Visualisierung zu erhalten
- Kleine Komponenten werden schnell iteriert, bevor sie in größere Codebasen integriert werden
- Das ist auch eine Reaktion auf die Grenzen von LLMs, eröffnet aber zugleich interessante Arbeitsweisen, die zuvor nicht in Betracht gezogen wurden
- Die Wahrscheinlichkeit, nach neuen Bibliotheken oder Frameworks zu suchen, ist deutlich gesunken
Zusammenfassung
- Derzeit ist Cursor das beste Beispiel dafür, welches Potenzial LLM-Coding-Assistenten haben
- Wer erkunden möchte, wie wertvoll Werkzeuge dieser Art sein können, sollte Cursor ausprobieren
Meinung von GN⁺
- Cursor scheint ein gutes Beispiel für das Potenzial von LLM-basierten Coding-Tools zu sein
- Besonders die Tab-Autovervollständigung wirkt attraktiv, weil sie sich beim Schreiben von Code natürlich einsetzen lässt und viel Zeit sparen kann
- Auch die chatbasierten Funktionen scheinen für Refactoring oder Code-Transformation nützlich zu sein
- Allerdings scheint es, wie bei einem noch frühen Stadium zu erwarten, weiterhin Einschränkungen zu geben
- Die Anwendung eines konsistenten Coding-Stils ist schwierig
- Es gibt Nutzbarkeitsprobleme bei komplexen Projektstrukturen wie Monorepos
- Außerdem ist die Funktionsabgrenzung zwischen kostenlosen und zahlenden Nutzern nicht ganz klar
- Andere Tools mit ähnlichen Funktionen sind unter anderem GitHub Copilot, Tabnine und Kite
- Da jedes Tool eigene Vor- und Nachteile hat, sollte die Wahl nach Projektcharakteristik oder persönlicher Präferenz getroffen werden
- Bei der Einführung LLM-basierter Coding-Tools können folgende Punkte berücksichtigt werden
- Akzeptanz im Entwicklungsteam: Gibt es Widerstände gegen die Einführung neuer Tools?
- Lernaufwand: Wie viel Zeit wird benötigt, um die Nutzung des Tools zu erlernen?
- Wartbarkeit: Ist der mit dem Tool erzeugte Code leicht zu verstehen und zu warten?
- Codequalität: Hilft das Tool tatsächlich dabei, die Codequalität zu verbessern?
- Kosten-Nutzen-Verhältnis: Reicht der Produktivitätsgewinn aus, um Einführungs- und Betriebskosten auszugleichen?
6 Kommentare
Der Cursor-Chat ist der Schlüssel. Es ist echt praktisch, damit Docstrings zu erstellen.
Wenn man
cursorbenutzt, fühlt sich die Autovervollständigung von Copilot irgendwie viel zu langsam an. seufzIst die Tab-Autovervollständigung nur für zahlende Nutzer verfügbar?
Das stimmt, es ist nur für Abonnenten verfügbar, aber es gibt ein kostenloses Abo, das 2000 Autovervollständigungen pro Monat bietet. Ich nutze es jetzt seit 3 Monaten so.
https://www.cursor.com/pricing
Ja
Steht im Artikel, haha