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 ?
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 ?
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
Dans Terminal, allez dans Préférences...>Paramètres>[votre profil actif]>Clavier :
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 :
(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).
Maintenant, ajoutez une combinaison de touches pour "Curseur droit", mais appuyez sur CtrlE ( \005
apparaîtra dans le champ de texte). Confirmez avec OK .
Ouvrez Automator (par exemple, tapez space pour faire apparaître Spotlight et tapez Automator ), sélectionnez Fichier>Nouveau et choisissez Service
:
Traînée Run AppleScript
dans le volet de droite :
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
:
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
:
Voici à quoi ressemble maintenant Terminal>Services :
Configurer vi
pour honorer CtrlA y CtrlE
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)
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 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.