Dieser Artikel ist ein Beitrag zu Juan Stoppas Blogbeitrag Code Smarter, Not Harder: Developing with Cursor und Claude Die Übersetzung von Sonnet. Der Grund, warum ich es eine Übersetzung nenne, ist, dass der größte Teil des Inhalts dieses Artikels auf meinen eigenen Erfahrungen beruht, aber weil der Rahmen des Artikels auf seiner Artikelstruktur basiert, wird er als Übersetzung bezeichnet.
In diesem Lernprogramm werden die grundlegenden Funktionen des Cursors vorgestellt.
Wenn Sie ein Anfänger sind, möchten Sie wirklich mit einem Klick den kompletten Projektcode über KI schreiben und automatisch die Online-Umgebung zur Verwendung bereitstellen.
Eine kurze Einführung in Cursor
Cursor ist ein Code-Editor, der in den Anysphere-Labors entwickelt wurde und auf einem modifizierten Derivat von VSCode basiert, so dass alle Ihre VSCode-Konfigurationen importiert und in Cursor verwendet werden können, was den Umstieg erleichtert, wenn Sie normalerweise mit VSCode entwickeln.
Der größte Unterschied zwischen Cursor und VSCode ist die eingebaute KI für die Zusammenarbeit am Code, für die es eine Reihe von Änderungen an VSCode vornimmt, die es zu einer besseren Erfahrung machen, als wenn man etwas wie Github auf VSCode verwendet. Kopilot Eine Klasse von Plugins ist komfortabler. Es mag eintönig sein, das zu sagen, also werde ich den Vergleich mit Github Copilot illustrieren.
Github Copilot wird als Plugin in VSCode importiert:
In Bezug auf die Nutzung konzentriert sich die Hilfe von Copilot auf folgende Punkte: Code-Vervollständigung, dasselbe Dialogfenster wie bei GPT mit Umschreiben der Code-Generierung.
Die Code-Vervollständigung ist eine Kernfunktion von Copilot, die ich sehr schätze. Während Sie den Code schreiben, werden automatisch Vorschläge gemacht, und Sie müssen nur die Tabulatortaste drücken, um die Vorschläge zu erhalten:
Das Beste daran ist die immersive Erfahrung: Ich kann problemlos Beispielcode umschreiben, ohne meinen Editor zu verlassen und ohne den ursprünglichen Code zu kopieren und einzufügen - das heißt nicht, dass er Ergebnisse erzeugt, aber er erzeugt in den meisten Fällen tatsächlich den gewünschten Code.
Und dann gibt es noch das gleiche Dialogfenster wie bei GPT, das den Vorteil hat, dass der Kontext des Codes, den Sie gerade bearbeiten, gleichzeitig an das große Modell übermittelt wird, um bessere Generierungsergebnisse zu erzielen:
Schließlich gibt es noch die mittelmäßige Codegenerierung im Editor, die Sie über die kleine Glühbirne von VSCode auslösen können (offiziell Code Action genannt, die dazu dient, etwas mit dem Code zu machen):
Wenn Sie sich dafür entscheiden, Copilot zu verwenden, um Änderungen vorzunehmen, erscheint ein Eingabefeld, in das Sie Befehle wie `/doc` eingeben können, um Copilot zu helfen, entweder Dokumentation zu erstellen oder Ihren Code besser zu ändern/umzuschreiben:
Obwohl es toll aussieht, ist meine persönliche praktische Erfahrung, dass es nicht funktioniert. :( Weil es die meiste Zeit eine neue Kopie des Codes erzeugt, und dann muss ich den ursprünglichen Code wieder löschen ...... Sagen wir einfach, dass ich Copilot vor allem deshalb benutze, weil ich die Code-Vervollständigungsfunktion liebe.
Und die Cursor-Erfahrung ist besonders erstaunlich - was Copilot gut macht, macht er besser; was Copilot nicht gut macht, macht er perfekt.
Meiner persönlichen Erfahrung nach ist die Code-Vervollständigung viel genauer. Copilot schafft es oft nicht, geschlossene Code-Blöcke korrekt zu generieren (z.B. werden Paare von `()` `{}` nicht korrekt generiert), aber das tut es selten.
Das Dialogfenster, meine Güte, Copilot ist wirklich ein Stück Scheiße im Vergleich dazu, denn der Cursor-Dialog generiert Code, der direkt auf Ihren Code angewendet werden kann:
Der Grund, warum Cursor Änderungen direkt auf Ihren Code anwendet, ist, dass es sein eigenes Modell so abgestimmt hat, dass LLM ein Diff-Format[3] wie Git ausgibt. Mit dem Diff-Format ist es möglich, genau den richtigen Abschnitt des Codes zu ändern.
Und um die Sache noch komfortabler zu machen, macht es Cusor einfach, mehrere Quelldateien in einer Konversation zu übergeben oder das gesamte Codesilo Ihres Projekts zu scannen (durch Drücken der Tastenkombination "Strg" + "Enter"), um relevante Inhalte zu extrahieren, die als Kontext für die Befragung des großen Modells für genauere Antworten dienen:
Generation Geschwindigkeit und Indizierung Geschwindigkeit ist sehr glatt, denn es wird ähnlich wie JetBrains, so dass die Indizierung des Codes Lager, aber seine Indizierung ist zu tun, vektorisiert (Einbettungen, die übliche Übersetzung ist Vektor-Inlays, aber ich mag es vektorisiert nennen), so dass bei der Indizierung kann bequem sein, eine Ähnlichkeitssuche für eine bessere Generation zu tun.
Darüber hinaus hat Cursor seine eigenen eingebauten Tastenkombinationen, auf die ich später noch eingehen werde.
Kurz gesagt: Cursor tötet Copilot wirklich.
Obwohl aus meiner bisherigen Erfahrung des Schreibens VSCode-Plug-Ins, der Grund, warum einige Dinge Copilot verwenden Erfahrung im Allgemeinen, vor allem, weil als VSCode-Plug-Ins zu begrenzen, aber Cursor ist ein magischer Editor, so dass eine Menge von eingeschränkten Funktionen können fett und frei zu tun, kein Wunder, Cursor kann so gut tun.
Grundlegende Verwendung des Cursors
Montage
Cursor muss von seiner offiziellen Website heruntergeladen werden: https://www.cursor.com/. Nach dem Herunterladen müssen Sie sich registrieren, um das Programm zu nutzen, und es unterstützt die Anmeldung bei Google- und Github-Konten.
Cursor ist auf Abonnementbasis erhältlich. Neue Benutzer können das Pro-Abonnement vierzehn Tage lang ausprobieren. Für ein Pro-Abonnement müssen Sie $20 pro Monat bezahlen (das sind etwa hundertvierzig Dollar). Es funktioniert zwar, ist aber ein bisschen teuer.
Nach der Installation wird Cursor Sie beim ersten Start auffordern, Ihre VSCode-Konfiguration zu importieren, und sobald das geschehen ist, haben Sie im Grunde eine KI-erweiterte Version von VSCode.
Tastenkombinationen und zugehörige Funktionen
Der Cursor verfügt über die folgenden Tastenkombinationen, um die entsprechenden AI-Funktionen zu verwenden.
1. die Tastenkombination "STRG/CMD + L", um das Dialogfeld zu öffnen
Benutzen Sie die Tasten `CTRL/CMD + L`, um das Dialogfeld auf der rechten Seite des Editors zu öffnen (dieses `L` ist rechts unter den vim-Tasten, und die Pfeiltasten unter den vim-Tasten sind `h,j,k,l` auf der Tastatur als eine Reihe von Tastenanschlägen, mit `h` auf der linken Seite also links, `l` auf der rechten Seite rechts und rechts, `j` unten und `k` oben. (Ich mag das wirklich).
2. die Tastenkombination "STRG/CMD + K" öffnet das Erzeugungsfenster
Benutzen Sie die Tasten `CTRL/CMD + K` oberhalb des Cursors (denn `k` steht für up! 💕), um das Fenster Erzeugen zu öffnen:
Nebenbei bemerkt: Wenn Sie einen Inhalt auswählen, öffnet sich durch Drücken der Tastenkombination "STRG/CMD + K" auch das entsprechende Fenster, das den Inhalt auf der Grundlage des Kontextes Ihrer Auswahl generiert:
3) "CTRL/CMD + I" öffnet den Composer.
Mit der Tastenkombination `CTRL/CMD + I` können Sie eine spezielle Funktion von Cursor aufrufen: Composer, eine spezielle Funktion von Cursor, die es Ihnen ermöglicht, Änderungen an mehreren Dateien gleichzeitig in einem Dialogfenster vorzunehmen.
Um den Composer zu verwenden, müssen Sie ihn zunächst in den Cursor-Einstellungen aktivieren und die Einstellungsseite in dieser Reihenfolge aufrufen: "Datei > Voreinstellungen > Cursor-Einstellungen > Funktionen > Composer aktivieren".
Der "Composer", der mit der Tastenkombination "STRG + I" geöffnet wird, ist eine kleine Drag-and-Drop-Oberfläche:
Sie können eine schrittweise, komplexe Änderung eingeben, die mehrere Dateien betrifft, und Composer wird alle Änderungen für die beteiligten Dateien gleichzeitig generieren. Im Allgemeinen sollte der Composer jedoch in seiner Gesamtheit über die Schaltfläche in der oberen rechten Ecke der kleinen Benutzeroberfläche verwendet werden:
Auf der linken Seite wird deutlich aufgelistet, wo in Ihrem kumulativen Dialog Sie diese Dateien ändern möchten, und Sie können die entsprechenden Änderungen direkt übernehmen.
Das ist bei weitem die beste Art und Weise, wie ich **KI-gestützte Programmierung** erlebt habe: Man kann seine Bedürfnisse in natürlicher Sprache in einem einzigen Fenster beschreiben, ohne zwischen mehreren Fenstern und Dateien wechseln zu müssen. Meiner Meinung nach ist Cursor die beste Form der Interaktion, die bisher erforscht wurde.
`@"-Notation für praktische Kontextinformationen
Um die Bereitstellung von Kontextinformationen für ein umfangreiches Sprachmodell zu erleichtern, hat Cursor verschiedene `@`-Annotationen eingebaut, die es einfach machen, verschiedene Arten von Kontextinformationen in Ihren Dialog einzubringen.
Einige der "@"-Hinweise sind allgemeiner Art und können in allen Dialogfenstern verwendet werden; andere sind spezifisch und werden von mir nach und nach ergänzt.
Hinweis: Github Copilot hat eine ähnliche Funktion, die aber nicht so vollständig ist wie Cursor.
1. die Notiz "@Files", die den Kontext der angegebenen Codedateien übergibt
Wenn Sie den Vermerk `@Files` in das Dialogfeld eingeben, öffnet Cursor automatisch eine Suchliste Ihrer Code-Repositories. Sie können die Namen der Dateien eingeben, die Sie in den Kontext importieren möchten, und auf die Schaltfläche "Bestätigen" klicken, und der Inhalt der entsprechenden Dateien wird zu diesem Zeitpunkt automatisch in den Kontext eingefügt:
2. die Notiz "@Code", die den Kontext des angegebenen Codeblocks übergibt
Code"-Hinweise liefern präzisere Codeschnipsel, "@"-Hinweise werden in ähnlicher Weise verwendet, es erscheint das entsprechende Suchfeld, Sie geben das Schlüsselwort in die Indexliste ein, um den entsprechenden Codeblock auszuwählen.
Die Identifizierung von Codeblöcken wird durch den LSP Ihrer Entwicklungsumgebung bestimmt, was in den meisten Fällen korrekt ist:
3. den Hinweis "@Docs", um den Kontext aus der offiziellen Dokumentation der Funktion oder Bibliothek zu erhalten
Der `@Docs`-Hinweis kann den Kontext aus der offiziellen Dokumentation einer Funktion oder Bibliothek beziehen. Gegenwärtig kann sie den Kontext nur aus der zugänglichen Online-Dokumentation beziehen. Ihre eigene JSDoc-ähnliche Dokumentation ist also nutzlos, es sei denn, Sie können eine Online-Adresse dafür bekommen ~ ich persönlich glaube nicht, dass diese Funktion sehr universell einsetzbar ist.
4. die Notation "@Web", um den Kontext aus den Suchinhalten der Suchmaschinen zu erhalten
`@Web` Hinweis ist ähnlich wie eine Methode, wird es standardmäßig auf Ihre Frage zunächst an die Suchmaschine zu suchen, und dann aus den Suchergebnissen der Kontext der Extraktion an die LLM zugeführt. aber weil der Cursor offiziellen nicht öffentlich Transparenz der spezifischen Umsetzung der Methode, hat es nicht angepasst worden, in der Tat, die Ergebnisse der Nutzung der Fluktuation von gut und schlecht.
Wenn Sie ein Problem haben und faul sein wollen und die Seite nicht öffnen wollen, um nach Fehlern zu suchen, oder wenn die Antwort des großen Modells das Problem nicht löst, können Sie einfach diesen Hinweis verwenden.
5. die Notiz "@Folders", Kontext für die Übergabe von Dateiverzeichnisinformationen
Der Hinweis `@Folders` kann Informationen über Dateiverzeichnisse liefern. Wenn Sie also auf ein Pfadproblem stoßen, sollten Sie diesen Hinweis verwenden, um im großen Modell nach einer Lösung zu suchen.
6. die Notation "@Chat", eine Notation, die nur im Codegenerierungsfenster innerhalb einer Datei verwendet werden kann.
Die Notiz `@Chat`, die nur im Codegenerierungsfenster innerhalb einer Datei verwendet werden kann (dasjenige, das mit `CTRL + K` geöffnet wird), übergibt den Inhalt des Dialogs in dem rechts von Ihnen geöffneten Dialogfenster als Kontext an das größere Modell.
7. die Notiz "@Definitions", eine Notiz, die nur im Codegenerierungsfenster innerhalb einer Datei verwendet werden kann.
Wie die Notiz `@Chat` kann die Notiz `@Definitions` nur im Codegenerierungsfenster innerhalb einer Datei verwendet werden. Sie übergibt die Definitionen der Variablen und Typen, die an der Codezeile beteiligt sind, die Sie mit dem Cursor überfahren, als Kontext an das größere Modell, ähnlich wie die Notiz "@Code".
8. "@Git"-Notiz, kann nur in Dialogfenstern verwendet werden
Das Dialogfenster ist dasjenige, das mit `CTRL + L` und `CTRL + I` geöffnet wird. Der `@Git`-Hinweis kann den Commit-Verlauf Ihres aktuellen Git-Repositorys als Kontext an das große Modell übergeben.
Sie eignet sich besser für die Überprüfung der Unbedenklichkeit von Kriegsverbrechern bei der Zusammenarbeit im Rahmen des Codes.
8. die Notiz "@Codebase", die nur im Dialogfenster verwendet werden kann, um die entsprechenden Dateien für die Übergabe der Codebase zu suchen
Die `Codebase`-Notiz ist nicht wirklich nützlich; anstatt die Codebase zu durchsuchen, ist es eher ein kontextbezogener Durchlauf der Codebase, um die gewünschte Datei zu finden, d.h. `CodebaseFilter`.
Ich habe das Gefühl, dass es in der normalen Entwicklung nicht verwendet werden wird, weil es Filterbedingungen passieren muss, um Filterparameter zu setzen:
Der Unterschied zur Tastenkombination "STRG + Enter" besteht vermutlich darin, dass Sie die Filterregeln für die Abfrage anpassen können. Aber ich glaube nicht, dass das sehr nützlich ist.
ultimativ
Wenn Sie es sich leisten können, versuchen Sie es mit Cursor, es ist eine wirklich gute Erfahrung (auch wenn Sie es nicht haben). Schauen Sie nicht auf meine Abschrift, als ob ich nicht viel gesagt habe, verwenden Sie es einfach und Sie werden eine tolle Erfahrung haben. Die Entwicklungserfahrung ist wirklich gut.
Dieser Artikel soll eine Neuübersetzung sein, aber es scheint so, als ob ich im Wesentlichen meine eigenen Erfahrungen damit niederschreibe ~ wenn Sie sich also den Originalartikel ansehen, werden Sie wahrscheinlich feststellen, dass der Inhalt hier nicht dazu passt.
Ich bin ein bisschen hin- und hergerissen, ob ich diesen Artikel neu kategorisieren soll oder nicht. Vor allem, weil ich nach der Lektüre des Originalartikels dazu inspiriert wurde, meine eigene einfache Anleitung zu schreiben, aber die Struktur dieses Artikels ist wirklich von dem Originalartikel beeinflusst. Leider bin ich hin- und hergerissen.