Powrót do strony głównej

Naprawa Cmd+, VS Code rosyjski układ klawiatury macOS

Artykuł wyjaśnia przyczynę niesprawnego działania skrótów Cmd+, i innych w VS Code na rosyjskim układzie klawiatury macOS. Proponuje naprawę przez wiązanie według scan code w keybindings.json. Dodatkowo — konfiguracja otwierania portów we zewnętrznym przeglądarce.

Rozwiązanie problemu Cmd+, w VS Code na rosyjskim układzie
Advertisement 728x90

Skróty klawiszowe w VS Code na macOS z rosyjską układem klawiatury: naprawa dla Cmd+, i innych

Na macOS kombinacja Cmd+, otwiera ustawienia we wszystkich aplikacjach: Safari, Finder, Chrome. W VS Code nie działa ona przy aktywnym rosyjskim układzie klawiatury. Powodem jest przetwarzanie na poziomie znaku, a nie fizycznego klawisza. Przy rosyjskim układzie klawisz przecinka generuje znak „B”, więc VS Code szuka kombinacji Cmd+B i nic nie znajduje.

Aplikacje oparte na Electron, w tym VS Code, używają znaków do skrótów klawiszowych — w przeciwieństwie do natywnych aplikacji macOS, które odwołują się do kodu skanowania (scan code).

Diagnostyka: od hipotez do prawdziwej przyczyny

Sprawdzenie aktywności okna, innych skrótów (np. Cmd+Shift+P działa poprawnie), konfliktów systemowych, rozszerzeń oraz procesów tła nie wykazało żadnych problemów. Kluczowym testem jest tryb „Record Keys” w ustawieniach skrótów klawiszowych: VS Code rejestruje „cmd+[Comma]”, ale nie może przypisać do niego żadnej komendy.

Google AdInline article slot

Przełączenie na angielski układ klawiatury potwierdza diagnozę: problem leży w mapowaniu znaków dla klawiszy nieliterowych.

Naprawa w pliku keybindings.json

Utwórz plik ~/Library/Application Support/Code/User/keybindings.json z przypisaniem opartym na kodzie skanowania:

[
  { "key": "cmd+[Comma]", "command": "workbench.action.openSettings" }
]

Nawiasy kwadratowe [Comma] wskazują fizyczny klawisz, a nie jego znak. Działa to niezależnie od wybranego układu klawiatury.

Google AdInline article slot

Kompletny zestaw poprawek dla skrótów z klawiszami nieliterowymi

Problem dotyczy wszystkich kombinacji Cmd+znak przy układach klawiatury innych niż łaciński. Zalecany plik keybindings.json:

[
  { "key": "cmd+[Comma]", "command": "workbench.action.openSettings" },
  { "key": "cmd+[Period]", "command": "editor.action.quickFix", "when": "editorHasCodeActionsProvider && editorTextFocus" },
  { "key": "cmd+[Slash]", "command": "editor.action.commentLine", "when": "editorTextFocus" },
  { "key": "cmd+[BracketLeft]", "command": "editor.action.outdentLines", "when": "editorTextFocus" },
  { "key": "cmd+[BracketRight]", "command": "editor.action.indentLines", "when": "editorTextFocus" },
  { "key": "cmd+[Backslash]", "command": "workbench.action.splitEditor" }
]
  • Cmd+. — szybka poprawka kodu (Quick Fix)
  • Cmd+/ — komentowanie linii
  • Cmd+[+] — zwiększanie wcięć (indent)
  • Cmd+\ — dzielenie edytora

Bonus: otwieranie linków z terminala w zewnętrznym przeglądarce

Ustawienie remote.forwardedPorts.openBrowserKind powoduje, że VS Code otwiera przekazywane porty (w tym lokalne serwery deweloperskie) w zewnętrznej przeglądarce, a nie w wbudowanym prostym przeglądarce (Simple Browser).

W pliku settings.json dodaj:

Google AdInline article slot
"remote.forwardedPorts.openBrowserKind": "external"

Co warto zapamiętać

  • VS Code przypisuje skróty klawiszowe na podstawie znaku, macOS — na podstawie fizycznego klawisza
  • Naprawa przez cmd+[Comma] w keybindings.json rozwiązuje problem we wszystkich układach klawiatury
  • Dotyczy wszystkich aplikacji opartych na Electron oraz klawiszy nieliterowych
  • Tryb „Record Keys” w ustawieniach skrótów pokazuje rzeczywisty kod skanowania
  • Ustawienie portów działa również dla lokalnych serwerów, mimo nazwy „remote"

— Editorial Team

Advertisement 728x90

Czytaj dalej