23 votes

Comment faire pour que les ⌘← et ⌘→ fonctionnent pour le combo maison/fin pour le Terminal ?

Pourquoi est-ce que fn - - (ou d'autres) font un home/end dans Terminal mais un - fonctionne partout ailleurs ?

Donc, pour être clair, la question est de savoir comment faire en sorte que le terminal prenne Command + y pour la maison et la fin ?

22voto

jaume Points 13186

Aussi pratique que cela puisse être, le terminal ne peut pas facilement fournir la fonctionnalité que vous demandez.

La raison en est que les programmes qui s'exécutent dans le Terminal ont des règles différentes pour déplacer le curseur au début/à la fin de la ligne, par exemple :

  • bash (et d'autres coquilles) utilisent CtrlA y CtrlE
  • vi utilise 0 y $ / Shift4

D'autres programmes peuvent utiliser d'autres touches. Il n'existe pas de combinaison de touches universelle pour positionner le curseur au début/à la fin de la ligne.

Bien sûr, Terminal pourrait tenir à jour une liste de combinaisons de touches pour un certain nombre de programmes courants, vérifier ce qui est en cours d'exécution et envoyer les touches correctes pour vous, ou bien il pourrait fournir un élément de menu tel que Déplacer le curseur au début de la ligne dans le shell et ensuite envoyer CtrlA dans les coulisses. Mais je suppose que les ingénieurs d'Apple ont pensé que si vous vous aventurez dans CLI territoire dont vous connaissez les particularités.

À titre d'information, le terminal fournit Option y Option qui se comporte en bash comme vous vous y attendez et déplace le curseur au début du mot précédent/suivant. Cela s'explique par le fait que ces combinaisons de touches sont affectées à la fonction Escb y Escb (voir man bash la section "Commandes de déplacement" pour plus d'informations). Dans vi par exemple, seule cette dernière fonctionne (en quelque sorte) (à la fin de cette réponse je montrerai comment configurer vi pour travailler avec Option y Option ).

Mais grâce à Automator, AppleScript et les alias bash, vous pouvez obtenir y pour travailler avec bash (et éventuellement d'autres coquilles) et vi .

La première étape consiste à cartographier y a CtrlA y CtrlE . Dans un second temps, je vais vous montrer comment configurer vi pour honorer CtrlA y CtrlE (ce qui, par conséquent, rendra vi compatible avec y ).

Carte y a CtrlA y CtrlE

  1. Dans Terminal, allez dans Préférences...>Paramètres>[votre profil actif]>Clavier : enter image description here

  2. Appuyez sur + Sélectionnez "Cursor Left", "Control-Shift" comme modificateur et action "Send Text :". Ensuite, appuyez sur CtrlA ( \001 apparaîtra dans le champ de texte) et confirmez avec OK : enter image description here

    (Dans une version précédente de cette réponse, j'ai utilisé "Shift" comme modificateur. J'ai remarqué que ce paramètre est en conflit avec shift qui affiche l'onglet précédent du terminal, si vous ne relâchez pas la touche immédiatement. L'utilisation de "Control-Shift" règle ce problème).

  3. Maintenant, ajoutez une combinaison de touches pour "Curseur droit", mais appuyez sur CtrlE ( \005 apparaîtra dans le champ de texte). Confirmez avec OK .

  4. Ouvrez Automator (par exemple, tapez space pour faire apparaître Spotlight et tapez Automator ), sélectionnez Fichier>Nouveau et choisissez Service :

    enter image description here

  5. Traînée Run AppleScript dans le volet de droite : enter image description here

  6. Tapez le script suivant :

    on run {input, parameters}
        tell application "System Events"
            tell application process "Terminal"
                key code 123 using {shift down, control down}
            end tell
        end tell
    end run

    et enregistrer comme Move Cursor to Beginning of Line :

    enter image description here

  7. Répétez les étapes 4. à 6. avec ce script :

    on run {input, parameters}
        tell application "System Events"
            tell application process "Terminal"
                key code 124 using {shift down, control down}
            end tell
        end tell
    end run

    et enregistrer comme Move Cursor to End of Line :

    enter image description here

  8. Voici à quoi ressemble maintenant Terminal>Services :

    enter image description here

Configurer vi pour honorer CtrlA y CtrlE

  1. Abrir .bashrc avec votre éditeur préféré et ajoutez cette ligne :

    alias vi='vim -c "map <C-A> 0" -c "map <C-E> $" -c "map <Esc>b B" -c "map <Esc>f E"'

    Les deux premiers map Les commandes disent vim d'interpréter ControlE y ControlA comme $ y 0 qui déplacent le curseur au début ou à la fin de la ligne, respectivement.

    Les deux derniers map Les commandes disent vim pour déplacer le curseur un mot à la fois, comme vous le feriez en appuyant sur option y Option .

Avertissements

Vous remarquerez qu'il y a un court délai entre le moment où vous appuyez sur la touche o et le moment où le curseur se déplace réellement.

Gardez à l'esprit que cela ne fonctionnera que pour les programmes qui honorent CtrlA / CtrlE Il est donc préférable d'apprendre les combinaisons de touches spécifiques de chaque programme que vous utilisez dans le terminal.

(Testé sur MacOS Sierra 10.12.4)

2voto

George Katsanos Points 261

Bien sûr que c'est possible.

Tout d'abord, vous pouvez utiliser l'outil gratuit "DoubleCommand" si vous avez un clavier Windows avec des touches HOME/END pour les faire se comporter comme ils le devraient (début/fin de ligne).

Deuxièmement, pour le terminal spécifiquement, allez dans les préférences, Clavier, modifiez l'icône/la touche qui ressemble à une flèche pointant vers le haut-gauche, sélectionnez "envoyer du texte" et tapez ctrl+a. C'est fait !

Même chose pour le bouton de fin..

Si vous ne disposez pas d'un clavier de PC, vous pouvez faire de même avec d'autres combinaisons de touches.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X