Strategie Edycji Inline: Wskazówki 46-60
Zaznaczasz funkcję, naciskasz Cmd+K, wpisujesz “zrób to lepiej” i otrzymujesz coś marginalnie innego, co może, ale nie musi być poprawą. Edycja inline wydaje się rzutem monetą. Problem nie tkwi w funkcji — tkwi w tym, że edycja inline reaguje na precyzję. Daj jej niejasną instrukcję, a otrzymasz niejasny rezultat. Daj jej konkretną transformację, a otrzymasz dokładnie to, o co prosiłeś, często w mniej niż dwie sekundy. Te 15 wskazówek nauczy cię być precyzyjnym.
Co wynieiesz z tej sekcji
Dział zatytułowany „Co wynieiesz z tej sekcji”- Strategię selekcji, która określa 80% jakości edycji inline, zanim wpiszesz choćby jedno słowo
- Gotowe wzorce promptów dla najczęstszych transformacji (obsługa błędów, migracja TypeScript, generowanie testów)
- Technikę łańcuchową, która dzieli złożone refaktoryzacje na małe, weryfikowalne kroki
- Jasne zasady, kiedy Cmd+K przewyższa tryb agenta i kiedy należy przełączyć się na niego
Selekcja to wszystko
Dział zatytułowany „Selekcja to wszystko”Wskazówka 46: Dopasuj zakres selekcji do swojego zamiaru
Dział zatytułowany „Wskazówka 46: Dopasuj zakres selekcji do swojego zamiaru”Kod, który zaznaczasz przed naciśnięciem Cmd+K, definiuje granicę transformacji. Edycja inline nie dotknie kodu poza twoją selekcją. To zarówno jej siła, jak i ograniczenie.
Brak selekcji (kursor na pustej linii): Cmd+K generuje nowy kod w pozycji kursora. Użyj tego do wstawienia funkcji, bloku lub deklaracji z opisu.
Zaznaczona pojedyncza linia: Cmd+K przepisuje tę jedną linię. Użyj tego do zmiany nazwy zmiennej, dostosowania warunku lub zastąpienia wartości zwracanej.
Zaznaczona cała funkcja: Cmd+K przepisuje całą funkcję, zachowując jej sygnaturę i rolę w pliku. Użyj tego do dodania obsługi błędów, konwersji wzorców lub restrukturyzacji logiki.
Zaznaczone wiele funkcji: Cmd+K traktuje całą selekcję jako jedną jednostkę transformacji. Użyj tego do spójnych zmian w powiązanych funkcjach (np. “dodaj logowanie do wszystkich trzech handlerów”).
Wskazówka 47: Uwzględnij kontekst w swojej selekcji
Dział zatytułowany „Wskazówka 47: Uwzględnij kontekst w swojej selekcji”Jeśli twoja funkcja zależy od typów, stałych lub importów zdefiniowanych powyżej, uwzględnij je w selekcji. Bez tego kontekstu Cmd+K może wygenerować kod, który używa złych typów lub ponownie deklaruje stałe.
// ŹLE: Zaznacz tylko ciało funkcji// Cmd+K nie widzi typu UserRole
// DOBRZE: Zaznacz typ I funkcję razemtype UserRole = "admin" | "editor" | "viewer";
function getPermissions(role: UserRole) { // ... Cmd+K może teraz poprawnie odwoływać się do UserRole}Gdy kontekst jest zbyt daleko, aby uwzględnić go w selekcji (np. zaimportowany typ z innego pliku), wymień go wyraźnie w swojej instrukcji: “Typ User ma pola id, email, name i role.”
Wskazówka 48: Użyj Cmd+K na pustej linii do generowania kodu
Dział zatytułowany „Wskazówka 48: Użyj Cmd+K na pustej linii do generowania kodu”Gdy kursor znajduje się na pustej linii bez selekcji, Cmd+K staje się generatorem kodu. Jest to szybsze niż otwieranie panelu agenta dla małych, zwartych bloków kodu:
Kluczowa różnica względem trybu agenta: Cmd+K wstawia kod w pozycji kursora w bieżącym pliku. Nie tworzy nowych plików, nie modyfikuje importów w innych plikach ani nie uruchamia poleceń terminala. To ograniczenie czyni go szybszym i bardziej przewidywalnym.
Prompt Engineering dla edycji inline
Dział zatytułowany „Prompt Engineering dla edycji inline”Wskazówka 49: Bądź konkretny co do transformacji, nie co do kodu
Dział zatytułowany „Wskazówka 49: Bądź konkretny co do transformacji, nie co do kodu”Najlepsze prompty Cmd+K opisują co zmienić, nie jak powinien wyglądać końcowy kod. Powiedz mu transformację i pozwól mu znaleźć implementację.
Niejasne: “Zrób to lepiej” Konkretne: “Dodaj walidację wejścia dla null, undefined i pustego stringa. Rzuć TypeError z opisową wiadomością dla każdego przypadku.”
Niejasne: “Zoptymalizuj” Konkretne: “Zastąp zagnieżdżone pętle for podejściem opartym na Set, aby zredukować złożoność czasową z O(n^2) do O(n).”
Niejasne: “Napraw typy” Konkretne: “Dodaj typy TypeScript do wszystkich parametrów i wartości zwracanej. Użyj ścisłych typów — bez ‘any’. Wywnioskuj typ zwracany z implementacji.”
Wskazówka 50: Odwołaj się do istniejących wzorców w tym samym pliku
Dział zatytułowany „Wskazówka 50: Odwołaj się do istniejących wzorców w tym samym pliku”Gdy twój plik już ma ustalony wzorzec, odwołaj się do niego wyraźnie:
Edycja inline widzi cały plik, więc znajdzie handleUserCreation, przeanalizuje jej wzorzec obsługi błędów i zreplikuje go w twojej selekcji. Daje to znacznie bardziej spójny kod niż opisywanie wzorca od podstaw.
Wskazówka 51: Użyj “Konwertuj X na Y” dla transformacji strukturalnych
Dział zatytułowany „Wskazówka 51: Użyj “Konwertuj X na Y” dla transformacji strukturalnych”Wzorzec “konwertuj” to jeden z najbardziej niezawodnych promptów Cmd+K, ponieważ daje jasny stan przed i po:
- “Konwertuj tę funkcję opartą na callback na async/await”
- “Konwertuj ten komponent klasowy na komponent funkcyjny z hookami”
- “Konwertuj tę instrukcję switch na wyszukiwanie obiektowe”
- “Konwertuj tę imperatywną pętlę na łańcuch funkcyjny (map, filter, reduce)”
- “Konwertuj ten JavaScript na TypeScript ze ścisłymi typami”
// Zaznacz komponent klasowy, Cmd+K:// "Konwertuj na komponent funkcyjny z hookami, zachowując całe zachowanie cyklu życia"
// Zaznacz handler endpointu REST, Cmd+K:// "Konwertuj, aby używać walidacji zod dla ciała żądania"
// Zaznacz model Mongoose, Cmd+K:// "Konwertuj na definicję schematu Drizzle ORM"Łańcuchowe edycje dla złożonych refaktoryzacji
Dział zatytułowany „Łańcuchowe edycje dla złożonych refaktoryzacji”Wskazówka 52: Rozłóż złożone zmiany na sekwencyjne kroki Cmd+K
Dział zatytułowany „Wskazówka 52: Rozłóż złożone zmiany na sekwencyjne kroki Cmd+K”Zamiast jednego masywnego promptu, użyj sekwencji małych, weryfikowalnych edycji. Każdy krok bazuje na poprzednim i możesz weryfikować poprawność między krokami:
- Pierwsza edycja: “Dodaj typy TypeScript do wszystkich parametrów i wartości zwracanej”
- Weryfikacja: Sprawdź, czy typy są poprawne
- Druga edycja: “Dodaj walidację wejścia dla każdego parametru używając typów zdefiniowanych powyżej”
- Weryfikacja: Sprawdź, czy walidacja pasuje do ograniczeń typów
- Trzecia edycja: “Dodaj obsługę błędów z try-catch. Loguj błędy z nazwą funkcji i parametrami.”
- Weryfikacja: Sprawdź logikę obsługi błędów
- Czwarta edycja: “Dodaj dokumentację JSDoc opartą na typach i walidacji”
- Weryfikacja: Końcowy przegląd kompletnej funkcji
Ten łańcuch daje lepsze rezultaty niż pojedynczy prompt mówiący “dodaj typy, walidację, obsługę błędów i dokumentację”, ponieważ każdy krok ma pełny kontekst z poprzednich kroków.
Wskazówka 53: Użyj Cmd+K do iteracji nad wynikiem agenta
Dział zatytułowany „Wskazówka 53: Użyj Cmd+K do iteracji nad wynikiem agenta”Tryb agenta generuje kod szybko, ale czasami pomija twoje specyficzne konwencje. Użyj Cmd+K jako przejście udoskonalające:
- Agent generuje nowy moduł z wieloma funkcjami
- Zaznacz pierwszą funkcję, Cmd+K: “Zmień nazwy parametrów, aby pasowały do naszej konwencji nazewnictwa: użyj camelCase, poprzedź wartości boolean ‘is’ lub ‘has’”
- Zaznacz obsługę błędów, Cmd+K: “Zastąp generyczne rzuty Error naszą klasą AppError z @lib/errors”
- Zaznacz typ zwracany, Cmd+K: “Owiń wartość zwracaną w nasz standardowy typ ApiResponse”
Ten przepływ pracy “najpierw agent, potem udoskonalenie Cmd+K” jest szybszy niż doprowadzanie trybu agenta do idealnego wyniku za pierwszym razem.
Wzorce transformacji o wysokiej wartości
Dział zatytułowany „Wzorce transformacji o wysokiej wartości”Wskazówka 54: Dodaj obsługę błędów do kodu happy-path
Dział zatytułowany „Wskazówka 54: Dodaj obsługę błędów do kodu happy-path”Najczęstszy wzorzec edycji inline. Zaznacz funkcję, która obsługuje tylko przypadek sukcesu i przekształć ją:
Wskazówka 55: Konwertuj JavaScript na ścisły TypeScript
Dział zatytułowany „Wskazówka 55: Konwertuj JavaScript na ścisły TypeScript”Zaznacz funkcję lub moduł JavaScript, następnie:
Wskazówka 56: Wyodrębnij magiczne liczby i stringi
Dział zatytułowany „Wskazówka 56: Wyodrębnij magiczne liczby i stringi”Zaznacz funkcję pełną zakodowanych na twardo wartości:
Wskazówka 57: Dodaj wzorce programowania defensywnego
Dział zatytułowany „Wskazówka 57: Dodaj wzorce programowania defensywnego”Zaznacz kod, który zakłada, że wejścia są zawsze prawidłowe:
Wskazówka 58: Generuj przypadki testowe z implementacji
Dział zatytułowany „Wskazówka 58: Generuj przypadki testowe z implementacji”Zaznacz funkcję i wygeneruj jej testy w miejscu (przydatne, gdy chcesz testy w tym samym pliku lub chcesz je skopiować do pliku testowego):
Przegląd różnic i akceptacja
Dział zatytułowany „Przegląd różnic i akceptacja”Wskazówka 59: Zawsze przeglądaj diff przed zaakceptowaniem
Dział zatytułowany „Wskazówka 59: Zawsze przeglądaj diff przed zaakceptowaniem”Po tym, jak Cmd+K wygeneruje transformację, Cursor pokazuje widok różnic. Nie akceptuj na ślepo. Skanuj w poszukiwaniu:
- Zmienionej logiki, która modyfikuje zachowanie w sposób, którego nie zamierzałeś
- Usuniętego kodu, który był ważny, ale wyglądał na redundantny dla AI
- Dodanych zależności, których nie chcesz (nowe importy, nowe pakiety)
- Niespójności stylu, które nie pasują do konwencji twojego projektu
Możesz zaakceptować lub odrzucić całą różnicę lub w niektórych przypadkach wprowadzić ręczne edycje do różnicy przed zaakceptowaniem.
Wskazówka 60: Wiedz, kiedy przełączyć się z Cmd+K na tryb agenta
Dział zatytułowany „Wskazówka 60: Wiedz, kiedy przełączyć się z Cmd+K na tryb agenta”Cmd+K jest właściwym wyborem, gdy:
- Zmiana ogranicza się do pojedynczego pliku
- Możesz zaznaczyć odpowiedni kod
- Transformacja jest dobrze zdefiniowana
- Chcesz szybkiej odpowiedzi (1-3 sekundy)
Przełącz się na tryb agenta, gdy:
- Zmiana obejmuje wiele plików
- Potrzebujesz poleceń terminala do weryfikacji zmiany (testy, buildy)
- Zmiana wymaga zrozumienia kodu, którego nie możesz zaznaczyć (zależności w innych plikach)
- Chcesz, aby AI iterowało autonomicznie (cykl pisz, testuj, napraw)
Zasada praktyczna: jeśli twój prompt Cmd+K jest dłuższy niż 3 zdania, prawdopodobnie potrzebujesz trybu agenta.
Kiedy to nie działa
Dział zatytułowany „Kiedy to nie działa”Cmd+K przepisuje więcej niż oczekiwałeś: Twoja selekcja była zbyt szeroka. Powtórz z węższą selekcją. Zaznacz tylko linie, które wymagają zmiany, nie całą funkcję.
Cmd+K nie rozumie typu z innego pliku: Edycja inline widzi bieżący plik, ale nie sprawdza zależności międzyplikowych. Albo uwzględnij definicję typu w tekście promptu, albo przełącz się na tryb agenta, który może czytać inne pliki.
Diff wygląda dobrze, ale psuje zachowanie w runtime: Cmd+K może wprowadzić subtelne błędy podczas transformacji kodu stanowego (hooki React, domknięcia z przechwyconymi zmiennymi). Po zaakceptowaniu edycji Cmd+K na kodzie stanowym zawsze uruchom testy przed przejściem dalej.
Łańcuchowe edycje dają niespójne rezultaty: Jeśli każda edycja w łańcuchu zaprzecza poprzedniej (np. “dodaj logowanie”, a potem “usuń wszystkie efekty uboczne”), kod staje się niespójny. Zaplanuj swój łańcuch tak, aby każdy krok budował na poprzednim bez cofania go.
Co dalej
Dział zatytułowany „Co dalej”Gdy opanujesz edycję inline, przejdź do Optymalizacji agenta i chatu (Wskazówki 61-75), aby poznać operacje na wielu plikach, promptowanie oparte na testach i autonomiczne przepływy pracy, które obsługują wszystko, czego Cmd+K nie może.