Ordnen Sie "Home" und "End" dem Anfang und Ende der Zeile neu zu

326

Die meiste Rechenzeit verbringe ich unter Linux (gelegentlich auch unter Windows). Auf diesen Plattformen springen die Tasten Homeund Endallgemein an den Anfang oder das Ende der aktuellen Zeile.

Ich gewöhne mich allmählich an die Verwendung eines Apple-Computers in meinem Leben, aber es ist immer noch frustrierend, dass diese Tasten an den Anfang und das Ende des Dokuments gebunden zu sein scheinen und es für die Zeile überhaupt keine Tasten zu geben scheint basierte Aktionen.

Meine Frage:

  1. Gibt es Tastenkombinationen, die mir für Anfang und Ende der Zeile fehlen? (Ich benutze meistens ein Terminal, Chrome und LibreOffice)
  2. Gibt es eine Möglichkeit, die Funktionen dieser Tasten mit den mir vertrauten Funktionen neu zu verknüpfen? Ich bin bereit, auf die dokumentenbasierten Versionen zu verzichten, die mir wenig nützen.

Auch zwei Vorbehalte:

  1. Ich bin nicht der einzige Benutzer im System. Es wäre schön, wenn meine Benutzereinstellungen die Erfahrung anderer nicht beeinträchtigen würden. Wenn das nicht möglich ist, habe ich wahrscheinlich die stärkste Präferenz!
  2. Ich verwende mehrere Sprachen und wechsle zwischen Tastaturlayouts, sodass erwartet wird, dass alle Lösungen funktionieren, auch wenn ich zwischen mehreren Tastaturlayouts wechsle.
Caleb
quelle
1
Beachten Sie, dass ich zwar eine Lösung gefunden und meine eigene Frage beantwortet habe, aber offen für einfachere oder vielseitigere Lösungen bin. Auch der Prozess, dies zu entdecken, ist nicht klar. Wo finden Sie beispielsweise Schlüsselcodes und Aktionsnamen, wenn ich weitere Schlüssel neu zuordnen möchte? Fühlen Sie sich frei, um Antworten hinzuzufügen, wenn Sie relevantes Wissen haben!
Caleb

Antworten:

304

Die Standardverknüpfungen für das Verschieben zum Anfang oder Ende von (umbrochenen) Zeilen sind und . und oder Aund gehen Ean den Anfang oder das Ende von nicht umbrochenen Zeilen (oder Absätzen). und bewegen Sie sich wortweise vorwärts / rückwärts, und all dies ist kompatibel mit dem Halten Shift, um es während der entsprechenden Bewegungen auszuwählen.

Sie können home neu zuordnen und beenden, indem Sie ~/Library/KeyBindings/eine Eigenschaftsliste wie diese erstellen und speichern DefaultKeyBinding.dict:

{
    "\UF729"  = moveToBeginningOfLine:; // home
    "\UF72B"  = moveToEndOfLine:; // end
    "$\UF729" = moveToBeginningOfLineAndModifySelection:; // shift-home
    "$\UF72B" = moveToEndOfLineAndModifySelection:; // shift-end
}

Die meisten Tastenkombinationen zum Bearbeiten von Text in OS X sind in definiert /System/Library/Frameworks/AppKit.framework/Resources/StandardKeyBinding.dict.

Das Übernehmen von Änderungen erfordert das erneute Öffnen von Anwendungen. DefaultKeyBinding.dict wird von einigen alten Versionen von Xcode (funktioniert mit der neuesten Version 6.3.1), Terminal und vielen plattformübergreifenden Anwendungen ignoriert.

Weitere Informationen zu den anpassbaren Tastenkombinationen finden Sie unter Cocoa Text System und auf meiner Website .

Die Tastaturbelegung des Terminals kann unter Einstellungen> Einstellungen> Tastatur angepasst werden. \033OHbewegt sich zum Anfang einer Zeile und \033OFzum Ende einer Zeile.

In Eclipse sollten die Tastaturbelegungen unter Einstellungen> Allgemein> Schlüssel geändert werden. Sie müssen Standardbindungen für Befehle ändern Zeilenanfang und Zeilenende (ersetzen ⌘ ← von ↖ und ⌘ → von ↘). Damit die Auswahl funktioniert, ändern Sie auch Linienanfang auswählen und Linienende auswählen .

PS: Möglicherweise müssen Sie sich abmelden und erneut anmelden, damit die ~/Library/KeyBindings/DefaultKeyBinding.dictÄnderung wirksam wird.

Lri
quelle
1
Nützliche Informationen zu den Tastenzuordnungen - Ich habe diese mit dem (kommerziellen) BetterTouchTool verwendet. Siehe diese Antwort .
RichVel
3
Dies funktioniert meiner Erfahrung nach in den meisten Anwendungen nicht. Es ist besser Karabina-Elemente zu verwenden.
Timmmm
3
Dies ist großartig, da es in Terminal, iTerm2, Chrome, Sublime & Outlook funktioniert. Die Alternative (Karabina) ist weniger gut, weil sie Command + LeftArrow "Home" zuordnet, wodurch die Fenster im Terminal tatsächlich gewechselt werden. Sie müssen daran denken, alle Apps nach dem Speichern der .dict-Datei neu zu starten.
Will Sheppard
1
Dies funktioniert nicht mit vim
MohitC
2
Diese Einstellung funktioniert bei mir unter Mac OS Mojave mit angeschlossener externer Tastatur.
JDHAO
106

Ich bin derzeit auf Lion 10.7.4 und aus irgendeinem seltsamen Grund ~/Library/KeyBindings/DefaultKeyBinding.dictfunktionierte die Bearbeitung bei mir nicht.

Ich habe festgestellt, dass das KeyRemap4MacBook- Systemeinstellungs-Addon (das jetzt Karabiner heißt ) sehr gut funktioniert, und Sie können damit auch eine Vielzahl von Schlüsseln neu zuordnen , ohne Textdateien bearbeiten zu müssen. ZB Ändern der Bild-auf / Bild-ab-Tasten, sodass der Cursor auch auf Bild-auf / Bild-ab folgt.

Laden Sie einfach das Addon herunter und navigieren Sie in den Systemeinstellungen zum entsprechenden For PC UsersAbschnitt Use PC Style Home /End.

Beachten Sie, dass ich gewählt habe, (Change Home to Command+Left)anstatt (Change Home to Control+A), als ob ich die erste gewählt hätte, und wenn die Zeile umgebrochen worden wäre, würde mich home zum Anfang der umgebrochenen Zeile führen, mehrere Zeilen darüber, anstatt mich zum Anfang der aktuellen Zeile zu führen.

KeyRemap4MacBook

jklp
quelle
9
Karabiner ist großartig und auch Open Source
Jedidja
2
Mit 10.10.5 scheinen die anderen Vorschläge nicht zu funktionieren, aber Karabiner (der neue Name für KeyRemap4MacBook - funktioniert auf allen Mac-Produkten) funktioniert gut und erfordert keinen Neustart, damit die Änderungen wirksam werden. Sehr hilfreich für diesen Mac noob; hoffentlich können auch andere davon profitieren.
Ralph J
1
"Karabiner läuft derzeit nicht unter macOS Sierra."
james.garriss
2
@ james.garriss Probieren Sie Karabiner-Elements aus - derselbe Autor wurde von Grund auf neu geschrieben, um Sierra zu unterstützen (es befindet sich noch in der Entwicklung, daher gibt es einige
Probleme
5
@jklp Leider ist die Funktionalität, die zum erneuten Zuordnen der Home- und End-Tasten auf der erweiterten Apple-Tastatur erforderlich ist, in Karabiner Elements noch nicht verfügbar. Ich persönlich scheine das Muskelgedächtnis für Strg-A, Strg-E zu haben, wenn ich in der Konsole arbeite, aber wenn ich in einer GUI-App wie Sublime arbeite, ist es sehr schwer, mich daran zu erinnern. Für Sublime (speziell) gibt es jedoch eine Lösung: coderwall.com/p/upolqw/…
Ville
43

Dank dieses Artikels habe ich herausgefunden, wie die Tasten Homeund wieder Endfür jeden Benutzer zeilenbasierte Aktionen zugewiesen werden können, die für alle Tastaturlayouts gelten.

Sie müssen eine Wörterbuchdatei mit den zuzuordnenden Schlüsselcodes und neuen Befehlen erstellen. Stellen Sie jedoch zunächst sicher, dass der Ordner, in dem diese abgelegt werden sollen, vorhanden ist, indem Sie ein Terminal öffnen und Folgendes ausführen:

$ mkdir -p ~/Library/KeyBindings

Dann erstellen oder bearbeiten Sie die Datei unter ~/Library/KeyBindings/DefaultKeyBinding.dict. Wenn es vorher noch nicht existiert hat, fügen Sie den gesamten Abschnitt unten hinzu. Wenn es existiert, fügen Sie einfach die vier neuen Zeilen innerhalb des Blocks hinzu.

{
    "\UF729"  = "moveToBeginningOfLine:";
    "\UF72B"  = "moveToEndOfLine:";
    "$\UF729" = "moveToBeginningOfLineAndModifySelection:";
    "$\UF72B" = "moveToEndOfLineAndModifySelection:";
}

Um die Einstellungen zu aktivieren, müssen Sie sich von Ihrem Benutzer abmelden und erneut anmelden.

Beachten Sie, dass dies sowohl die normale Aktion des Bewegens des Cursors als auch die Shift+ Home/ End-Kombination zur Auswahl der Bewegung des Durring-Cursors umfasst.

Caleb
quelle
12

Ich verwende OS X Sierra, und die ~/Library/KeyBindings/DefaultKeyBinding.dictvon anderen Benutzern vorgeschlagene Lösung hat teilweise funktioniert: Einige Apps wie TextEdit haben jetzt das gewünschte Verhalten, andere Apps jedoch nicht. Google Chrome und Slack sind zwei, die die DefaultKeyBinding.dictDatei nicht zu respektieren scheinen .

Um die restlichen Anwendungen zu beheben, habe ich Better app-spezifische Tastenkombinationen erstellen Bindung Homeund Endauf OS X native Verknüpfungen Ctrl+Aund Ctrl+E. BetterTouchTool ist nicht kostenlos, es gibt jedoch eine 45-tägige Testversion.

Um dies zu tun:

  1. Installieren und starten Sie BetterTouchTool
  2. Gehen Sie zur Registerkarte Gesten> Tastatur
  3. Klicken +Sie unter "Anwendung auswählen " auf und wählen Sie die App aus, die Sie reparieren möchten.
  4. Klicken Sie auf "Add New Shortcut" (Neue Verknüpfung hinzufügen), weisen Sie die HomeTaste im Feld "Record Shortcut" (Datensatzverknüpfung) zu und setzen Sie "Trigger other keyboard shortcut" (Anderes Tastenkürzel auslösen) auf Strg + A. Wiederholen Sie dies für Endund Strg + E.
  5. Wenn Sie fertig sind, sollte das Panel folgendermaßen aussehen:BetterTouchTool-Bedienfeld
  6. Erlauben Sie BetterTouchTools unter Erweiterte Einstellungen, dass es beim Start ausgeführt wird.

Hinweis: Beenden Sie die BetterTouchTool-App nicht. Andernfalls werden keine Tastendrücke mehr abgefangen. Schließen Sie einfach das Fenster und es sollte im Hintergrund weiterarbeiten.

mamacdon
quelle
Danke - habe dies gerade auf El Capitan verwendet, da ich bereits für BetterTouchTool bezahlt habe und es funktioniert gut mit Chrome, Slack und anderen Apps.
RichVel
9

Ich verwende das großartige KeyRemap4MacBook mit den unten angegebenen benutzerdefinierten Einstellungen.

Es behebt Home / End in den meisten Anwendungen und bringt iTerm2 nicht durcheinander.

Von https://gist.github.com/lhotari/6134223181439b9ed0a1

<?xml version="1.0"?>
<!-- ~/Library/Application Support/KeyRemap4MacBook/private.xml -->
<!-- Custom keyboard mappings for MBP using https://pqrs.org/macosx/keyremap4macbook/ -->
<root>
    <item>
        <name>Lari's PC Style Home/End</name>
        <appendix>(Change Home to Command+Left)</appendix>
        <appendix>(Change End to Command+Right)</appendix>
        <appendix></appendix>
        <appendix>{{ PC_STYLE_BINDINGS_IGNORE_APPS_DESCRIPTION }}</appendix>
        <identifier>lari.remap.pclikehomeend</identifier>
        <block>
            <only>DREAMWEAVER</only>
            <autogen>__KeyToKey__ FROMKEYCODE_HOME, KeyCode::HOME, ModifierFlag::SHIFT_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_END,  KeyCode::END,  ModifierFlag::SHIFT_L</autogen>
        </block>
        <block>
            <only>BLUEFISH,WORD,EXCEL,POWERPOINT</only>
            <autogen>__KeyToKey__ FROMKEYCODE_HOME, KeyCode::HOME</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_END,  KeyCode::END</autogen>
        </block>
        <!--
        <block>
            <only>EMACS, TERMINAL, X11, ECLIPSE</only>
            <autogen>__KeyToKey__ FROMKEYCODE_HOME, KeyCode::A, ModifierFlag::CONTROL_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_END,  KeyCode::E, ModifierFlag::CONTROL_L</autogen>
        </block>
         -->
        <block>
            <not>{{ PC_STYLE_BINDINGS_IGNORE_APPS }}</not>
            <autogen>__KeyToKey__ FROMKEYCODE_HOME, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_COMMAND, KeyCode::CURSOR_UP,    ModifierFlag::COMMAND_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_HOME, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_CONTROL, KeyCode::CURSOR_UP,    ModifierFlag::COMMAND_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_END,  MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_COMMAND, KeyCode::CURSOR_DOWN,  ModifierFlag::COMMAND_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_END,  MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_CONTROL, KeyCode::CURSOR_DOWN,  ModifierFlag::COMMAND_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_HOME,             KeyCode::CURSOR_LEFT,  ModifierFlag::COMMAND_L</autogen>
            <autogen>__KeyToKey__ FROMKEYCODE_END,              KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L</autogen>
        </block>
    </item>
</root>
Lari Hotari
quelle
Wurde nicht aktualisiert, um mit Sierra zusammenzuarbeiten, siehe obigen Link.
james.garriss
Dieses Tool wurde in Karabiner umbenannt und funktioniert anscheinend mit OS X El Capitan 10.11, Sierra 10.12 und High Sierra 10.13.
RichVel
7

Ich fand das Folgende nützlich für iterm2und zshmit Zitaten von hier :

Öffnen iTerm > Preference. Gehe zu profiles tab > Keys. Klicken Sie dann auf die +Schaltfläche unten in der Tastenliste, drücken Sie Home(oder Fn+left arrowauf der Apple-Schnurlostastatur) unter ActionAuswählen Send Escape Sequenceund geben Sie dann ein[1~

Wiederholen Sie diesen Vorgang für die EndTaste mit der [~4Escape-Taste.

Wenn Sie zsh verwenden, gehen Sie wie folgt vor:

1) Fügen Sie Folgendes in Ihre ~/.zshrcDatei ein

bindkey "^[[1~" beginning-of-line
bindkey "^[[4~" end-of-line

2) Führen Sie source ~/.zshrcalle offenen Terminals ein.

RationalDev
quelle
iTerm2 hat auch eine Voreinstellung für die Tastaturbelegung "Natürliche Textbearbeitung", die dieses Verhalten enthält.
Matt M.
Muss geändert werden in bindkey "^[[~4" end-of-line. Notieren Sie die Position des 4.
Ty.
@ Ty Danke, aber kannst du erklären warum? Die Originalquelle sowie github.com/reenhanced/zsh-config/blob/master/lib/… und github.com/ThiefMaster/zsh-config/blob/master/zshrc.d/… verwenden "^ [[4 ~ "
RationalDev
Ich bin nicht gut mit diesen Escape-Sequenzen vertraut, aber für mich ist es ein ^[[4~Echo, 4während ^[[~4der Cursor an das Ende der Zeile bewegt wird.
Ty.
@ Ty Interessant. Ich habe nach dem Grund gesucht, aber ich konnte nur Beispiele dafür finden ^[[4~. Welche Art von Tastatur und Zeichenkodierung verwenden Sie, vielleicht macht das einen Unterschied?
RationalDev
5

Dies habe ich mit Karabiner Elements erreicht .

Sie müssen den Abschnitt rules von ~/.config/karabiner/karabiner.jsonmit dem JSON-Array aus dem folgenden Code aktualisieren . Wenn Sie dies tun, werden die Home- und Endtasten neu zugeordnet, damit sie auf PC / Windows funktionieren.

{
  "rules": [
    {
      "description": "change home key to command + left_arrow",
      "manipulators": [
        {
          "from": {
            "key_code": "home"
          },
          "to": [
            {
              "key_code": "left_arrow",
              "modifiers": [
                "left_command"
              ]
            }
          ],
          "type": "basic"
        }
      ]
    },
    {
      "description": "change home key to command + left_arrow while presing shift (selection)",
      "manipulators": [
        {
          "from": {
            "key_code": "home",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          },
          "to": [
            {
              "key_code": "left_arrow",
              "modifiers": [
                "left_command",
                "left_shift"
              ]
            }
          ],
          "type": "basic"
        }
      ]
    },
    {
      "description": "change end key to command + right_arrow",
      "manipulators": [
        {
          "from": {
            "key_code": "end"
          },
          "to": [
            {
              "key_code": "right_arrow",
              "modifiers": [
                "left_command"
              ]
            }
          ],
          "type": "basic"
        }
      ]
    },
    {
      "description": "change end key to command + right_arrow while presing shift (selection)",
      "manipulators": [
        {
          "from": {
            "key_code": "end",
            "modifiers": {
              "mandatory": [
                "left_shift"
              ]
            }
          },
          "to": [
            {
              "key_code": "right_arrow",
              "modifiers": [
                "left_command",
                "left_shift"
              ]
            }
          ],
          "type": "basic"
        }
      ]
    }
  ]
}

Siehe auch: Github Gist

Bildbeschreibung hier eingeben

Jason Waters
quelle
1

@Lris Antwort ist großartig ( vielen Dank; das hat mich verrückt gemacht ), aber ich habe es ein wenig modifiziert.

(In dieser Antwort verwende ich die Nicht-Appley-Namen für die Schlüssel, also command = super und option = alt.)

Super-Links und Super-Rechts wurden früher tatsächlich auf moveToLeftEndOfLineund abgebildet moveToRightEndOfLine. Die Verwendung von moveToBeginningOfLineund moveToEndOfLinekann wie @Lri zu inkonsistentem Verhalten führen.

Es gibt eine ganze Reihe weiterer Unterschiede zwischen den Appley-Verknüpfungen und den von mir hinzugefügten Verknüpfungen aller anderen. Zum Beispiel sollen sich Strg-Links und Strg-Rechts zwischen Wörtern bewegen. nicht Alt-Links und Alt-Rechts. Ich halte das nicht für erschöpfend, aber es funktioniert momentan ziemlich gut für mich. Ich ging davon aus, dass der Benutzer das Steuerelement und die Supertasten bereits ausgetauscht hat, um das Ausschneiden, Kopieren und Einfügen zu korrigieren.

~/Library/KeyBindings/DefaultKeyBinding.dict:
{
    "\UF729"   = moveToLeftEndOfLine:; // home
    "\UF72B"   = moveToRightEndOfLine:; // end
    "$\UF729"  = moveToBeginningOfLineAndModifySelection:; // shift-home
    "$\UF72B"  = moveToEndOfLineAndModifySelection:; // shift-end

    "@\UF700"  = moveUp:;  //super-up
    "@\UF701"  = moveDown:;  //super-down
    "@\UF702"  = moveWordLeft:;  //super-left
    "@\UF703"  = moveWordRight:;  //super-right

    "@$\UF700" = moveUpAndModifySelection:;  // super-shift-up
    "@$\UF701" = moveDownAndModifySelection:;  // super-shift-down
    "@$\UF702" = moveWordLeftAndModifySelection:;  // super-shift-left
    "@$\UF703" = moveWordRightAndModifySelection:;  // super-shift-right

    "@\UF728"  = deleteWordForward:;  // super-delete
    "@\U7F"    = deleteWordBackward:;  // super-backspace
}
Eric Toombs
quelle
-3

Mit dem kostenlosen BetterTouchTool, das unter http://blog.boastr.net/ verfügbar ist, können Sie auch Tastaturtasten neu zuordnen sowie Maus und Trackpad auf vielfältige Weise anpassen . Eine hervorragende Lösung für die Anpassung der Funktionen Ihrer Eingabegeräte!

Gary Coker
quelle
2
Könnten Sie Ihre Antwort mit Anweisungen erweitern , wie die angegebenen Software zu verwenden , das ursprüngliche Problem zu lösen?
grg
Nicht frei im Sinne von "Freibier" oder "Freiheit". 45-Tage-Testversion, kostenpflichtige Closed-Source-Software.
Wyatt8740