Jak wyłączyć funkcję automatycznej zmiany nazwy znacznika / dublowania kodu VS Code?

18

Chciałem móc z łatwością edytować razem tagi HTML. Wydawało mi się, że jest to obecnie taka łatwa rzecz do zainstalowania, więc zainstalowałem to rozszerzenie automatycznej zmiany nazwy i okazało się, że nie jest dla mnie przydatne: zamiast pomagać mi w edytowaniu kodu HTML / JSX, wszystko psuje i muszę cofnąć to, co robi, i spróbować go edytować, aby uniknąć jego uruchomienia.

Logiczną rzeczą byłoby oczywiście usunięcie tego rozszerzenia z mojego systemu. Jedynym problemem tutaj jest jednak to, że nie mogę tego zrobić - odinstalowałem go, nawet ponownie zainstalowałem VS Code, wypróbowałem VS Code Insiders, ale tutaj jest nadal włączone:

w akcji

Czy jest teraz wbudowany? Jak mogę to wyłączyć?

Wersja VSCode: 1.41.0, zatwierdzenie 9579eda04fdb3a9bba2750f15193e5fafe16b959

dmitryguzeev
źródło
Tagi HTML Rename to inna funkcja niż kursor lustrzany, patrz stackoverflow.com/questions/36628833/…
Mark
Tak, zmiana nazwy HTML to inna funkcja. Jednak kursor HTML Mirror jest podobny do funkcji zapewnianej przez rozszerzenie Auto Rename Tag , które edytuje zarówno początkowy, jak i końcowy znacznik HTML, jeśli umieścisz na nich kursor.
Gino Mempin

Odpowiedzi:

29

Oryginalna odpowiedź na 1.41

Jest to teraz wbudowana funkcja od wersji 1.41.

Kursor lustrzany HTML
https://code.visualstudio.com/updates/v1_41#_html-mirror-cursor

Kod VS dodaje teraz „kursor lustrzany” podczas edycji znaczników HTML. To zachowanie jest kontrolowane przez ustawienie html.mirrorCursorOnMatchingTag, które jest domyślnie włączone.

Ta funkcja polega na dodaniu wielu kursorów do pasującego znacznika, gdy kursor porusza się w zakresie nazw znaczników HTML. Podobnie jak w trybie wielu kursorów, możesz używać usuwania słów lub wyboru słów. Odbity kursor jest usuwany, gdy przesuniesz kursor poza zakres nazw znaczników.

Zasadniczo wybranie albo początku znacznika, albo końca znacznika nakłada 2 kursory na każdy, więc edycja jednego powoduje również edycję drugiego. Jest domyślnie włączony.

Możesz jawnie wyłączyć to w ustawieniach.

Poprzez interfejs użytkownika:

wprowadź opis zdjęcia tutaj

Via settings.json:

"html.mirrorCursorOnMatchingTag": false,

Aktualizacja do wersji 1.42

html.mirrorCursorOnMatchingTagJest teraz domyślnie wyłączone począwszy od 1.42 .
Zobacz inną odpowiedź na cytat z informacji o wersji.


Aktualizacja do wersji 1.44

Zmienili funkcję kursora lustrzanego i teraz nazywają ją regionami synchronicznymi .

wprowadź opis zdjęcia tutaj
(skopiowane z informacji o wersji VS Code 1.44)

Po aktywowaniu w tagach HTML, zarówno tagi początkowe, jak i końcowe zostają „zsynchronizowane”, zmiana jednego powoduje również zmianę drugiego. Ta funkcja jest jednak domyślnie wyłączona i albo jawnie wykonujesz polecenie On Type Rename Symbol, albo ustawiasz wartość editor.renameOnTypetrue.

Dzięki tej zmianie html.mirrorCursorOnMatchingTagbędą teraz wyświetlane jako przestarzałe (lub wyszarzone).

wprowadź opis zdjęcia tutaj

Gino Mempin
źródło
13
Odkryłem, że ta funkcja jest bardzo błędna i powoduje uszkodzenie kodu HTML podczas operacji kopiowania / wklejania. Zostawiam ten komentarz tutaj, ponieważ programiści kodu zapobiegają tworzeniu problemów na swojej stronie :( PS Wygląda na to, że html.mirrorCursorOnMatchingTag = false pomaga
KoViMa
7
Ta funkcja jest niesamowicie błędna, dowolnie zmienia treść w innych tagach i usuwa duże fragmenty treści podczas edycji atrybutów tagów. W tym stanie nie powinno być nigdy. Takie rzeczy grożą zepsuciem dobrego edytora, gdy zaczną go nadęty niedopracowanymi i źle przetestowanymi funkcjami, kiedy wcześniej działał dobrze.
Garret Wilson
5
Zgadzam się z KoViMa i @ Garret Wilson, że wdrożenie tej funkcji domyślnie podważa osąd zespołu programistów Code. Wypowiedz się na ten temat w tym wątku monitorowanym przez MS: github.com/microsoft/vscode/issues/87737
VanAlbert
1
@ VanAlbert, dzięki; I skomentował w tej sprawie.
Garret Wilson,
1

Zobacz https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_42.md#html-mirror-cursor-off-by-default z wersją 1.42, która pojawi się na początku lutego 2020 roku.

HTML Mirror Cursor jest domyślnie wyłączony

Zrobiliśmy Mirror Cursor funkcją opt-in. W nadchodzącej iteracji będziemy nadal ulepszać jego implementację, aby ta funkcja była łatwiejsza do zrozumienia i dostępna dla większej liczby języków. Możesz nadal korzystać z tej funkcji, włączając ją html.mirrorCursorOnMatchingTag.

----- Aktualizacja marzec 2020 r. ----------

Twórcy vscode słyszeli cię. Funkcja kursora lustrzanego jest znacznie modyfikowana. Możesz to teraz przetestować w Kompilacji Wtajemniczonych, więc być może wejdzie do wersji 1.44 lub wkrótce potem.

Zwłaszcza wklejenie znacznika zostało znacznie ulepszone. I nie ma podwójnych kursorów. Zobacz https://github.com/microsoft/vscode/issues/88424#issuecomment-600840619

I informacje o wersji: https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_44.md#synced-regions Jest w wersji 1.44.

znak
źródło