Spraw, aby system Mac OS X „Strzałka-opcja” działał jak Windows „Ctrl-Arrow”

21

Korzystam z polecenia „ Ctrl- ” w systemie Windows, aby poruszać się po dokumentach tekstowych.

Ta przydatna kombinacja klawiszy szybko doprowadzi mnie do początku następnego słowa. Na przykład poniższa sekwencja ilustruje, co stanie się z lokalizacją kursora po kolejnych naciśnięciach przycisku Ctrl- („^” będzie reprezentować kursor):

^The quick brown fox jumped over the lazy dog
The ^quick brown fox jumped over the lazy dog
The quick ^brown fox jumped over the lazy dog
The quick brown ^fox jumped over the lazy dog
The quick brown fox ^jumped over the lazy dog
...

I jeśli zacznę naciskać zamiast tego, przesunie on kursor do dokładnie tych samych miejsc w dokumencie, po prostu pójdzie w innym kierunku (co jest idealne, ponieważ położenie kursora jest przewidywalne, co prowadzi do tego, że jestem szybszy w tworzeniu mojego zmiany):

The quick brown fox ^jumped over the lazy dog
The quick brown ^fox jumped over the lazy dog
The quick ^brown fox jumped over the lazy dog
The ^quick brown fox jumped over the lazy dog
^The quick brown fox jumped over the lazy dog
...

Mac OS X ma podobny skrót klawiaturowy ( Option- - specjalnie zamapowałem „ Ctrl” na „ Option”, aby uzyskać tę samą funkcjonalność w sposób, do którego się przyzwyczaiłem).

Jednak „ Option- Arrow” prowadzi mnie do końca bieżącego słowa, gdy używasz klawisza strzałki w prawo, jak pokazano tutaj:

^The quick brown fox jumped over the lazy dog
The^ quick brown fox jumped over the lazy dog
The quick^ brown fox jumped over the lazy dog
The quick brown^ fox jumped over the lazy dog
The quick brown fox^ jumped over the lazy dog
...

Co gorsza, pójście w innym kierunku nie prowadzi cię z powrotem do tego samego miejsca, co przejście do przodu, prowadzi do początku ostatniego słowa:

The quick brown fox^ jumped over the lazy dog
The quick brown ^fox jumped over the lazy dog
The quick ^brown fox jumped over the lazy dog
The ^quick brown fox jumped over the lazy dog
^The quick brown fox jumped over the lazy dog
...

Jest to dla mnie niezwykle frustrujące, ponieważ muszę często przełączać się między systemem Windows i komputerem Mac, a bardzo rzadko chcę przejść do końca bieżącego słowa (dlaczego miałbym tego chcieć, chyba że trzymam również „ Shift”? ). I zawsze chce przejść do początku następnego wyrazu.

Jestem gotów dołożyć wszelkich starań, aby wersja dla komputerów Mac działała w ten sam sposób (kup oprogramowanie, napisz niestandardowe polecenie Applescript powiązane z tymi skrótami klawiaturowymi), więc szukam sugestii.

Czy są jakieś istniejące narzędzia, które zmienią to dla mnie?

Jak sugerowałbyś „naprawienie” tego?

Dzięki

EDYTOWAĆ

Udało mi się utworzyć „usługę” w Automatorze i użyłem następującego AppleScript:

on run {input, parameters}

    tell application "System Events" to key code 124 using {option down}
    tell application "System Events" to key code 124

end run

Następnie powiązałem tę usługę z naciśnięciem klawisza „ Command- ” za pomocą ustawień „Klawiatura” w Preferencjach systemowych.

Jednak aby to zadziałało, muszę zdjąć palec z Commandklucza ... co sprawia, że ​​jest to trochę bezcelowe. Jest również powolny i nie działa w aplikacji, w której najbardziej go potrzebuję (Xcode).

Steve
źródło

Odpowiedzi:

22

Oto, w jaki sposób możesz uzyskać ⌃ Control+ klawisze strzałek, aby działały tak, jak opisano. Skopiuj następującą listę właściwości do ~/Library/KeyBindings/DefaultKeyBinding.dict(możesz utworzyć katalog, jeśli jeszcze nie istnieje):

{
    "^\UF703" = ("moveWordForward:", "moveWordForward:", "moveWordBackward:");
    "^$\UF703" = ("moveWordForwardAndModifySelection:", "moveWordForwardAndModifySelection:", "moveWordBackwardAndModifySelection:");
}

Spowoduje to skonfigurowanie ⌃ Control+ strzałki do przejścia do początku następnego słowa (trzykrotne użycie normalnej nawigacji OS X: do końca bieżącego słowa, do końca następnego słowa, a następnie z powrotem do początku następnego słowa). Dołączyłem również wersję, która działa, ⇧ Shiftdzięki czemu możesz zaznaczać tekst w trakcie podróży.

Zastrzeżenie: działa to tylko w aplikacjach Cocoa, ale myślę, że normalna ⌥ Optionnawigacja + strzałka też. Pamiętaj też o ponownym uruchomieniu aplikacji!

jtbandes
źródło
Whoot! Właśnie na to liczyłem ... dziękuję! Pozwól mi spróbować, a następnie zaznaczę odpowiedź.
Steve,
Dzięki wielkie! Działa jak urok. FYI „Key Bindings” vs. „KeyBindings” ... Użyłem „KeyBindings” i zadziałało. Nie jestem pewien, czy to robi różnicę. Szkoda, że ​​Xcode zastępuje je własnymi, mniej wydajnymi, Key Bindings.
Steve,
Ups, tak, miałem na myśli KeyBindings! Xcode są całkiem fajne, ponieważ można poruszać się pod słowami camelCase.
jtbandes
Lubię nawigację camelCase. Idealnie, chciałbym zachowania Visual Studio w Xcode ... no cóż.
Steve
Możesz przynajmniej dostosować Xcode. W Preferencjach znajduje się zakładka do zmiany przypisań klawiszy.
jtbandes
5

Rzeczy, których możesz spróbować. Nie testowałem ich, aby sprawdzić, czy wykonają one funkcję, której potrzebujesz.

Istnieje bezpłatne narzędzie typu open source do mapowania poleceń klawiszowych dla systemu Mac OS X o nazwie DoubleCommand . Jest to rozszerzenie jądra, więc działa na bardzo niskim poziomie.

Innym darmowym programem polecanym przez osoby korzystające z DoubleCommand jest KeyRemap4MacBook . Musisz użyć jednego lub drugiego; będą konfliktować, jeśli oba zostaną zainstalowane na komputerze Mac.


źródło
1
Używanie KeyRemap4MacBook w systemie OS X 10.11.x, aby Control + [Strzałka] działał jak w systemie Windows, przewiń w dół, aż znajdziesz opcję Użytkownicy komputerów PC, a następnie zaznacz (dla mnie opcja szósta) „Użyj sterowania stylem komputera + Góra / Dół / Lewo / Prawo „. Są tam inne bardzo przydatne opcje. Zdecydowanie podniosłem głosowanie na tę odpowiedź, a ponadto nie kosztowało to dodatkowych stu dolarów!
John
1

Po latach denerwujących domyślnych mapowań OSX zmieniłem klawisze Command i Control i chciałem, aby klawisze Control + Strzałka zapewniały funkcję przesuwania słowa do przodu, przesuwania słowa do tyłu zamiast BOL / EOL. Akceptowana odpowiedź działała dla mnie, z wyjątkiem ^ zmienionego na @, ponieważ teraz używam Control zamiast Command. Zmapowałem również rzadziej używane funkcje BOL / EOL na kombinacje klawiszy Opcja + Strzałka.

{
    "@\UF702" = ("moveWordBackward:");
    "@$\UF702" = ("moveWordBackwardAndModifySelection:");
    "~\UF702" = ("moveToBeginningOfLine:");
    "~$\UF702" = ("moveToBeginningOfLineAndModifySelection:");
    "@\UF703" = ("moveWordForward:", "moveWordForward:", "moveWordBackward:");
    "@$\UF703" = ("moveWordForwardAndModifySelection:", "moveWordForwardAndModifySelection:", "moveWordBackwardAndModifySelection:");    
    "~\UF703" = ("moveToEndOfLine:");
    "~$\UF703" = ("moveToEndOfLineAndModifySelection:");
}
m1k3t
źródło