Pourquoi fn- ⇧- →(ou d'autres) fait un home / end dans Terminal mais un ⌘- →fonctionne partout ailleurs?
Donc, pour être clair, la question est de savoir comment faire pour que Terminal prenne Command+ ←et →pour la maison et la fin?
Aussi pratique que cela puisse être, Terminal ne peut pas facilement fournir les fonctionnalités que vous demandez.
La raison en est que les programmes qui s'exécutent dans Terminal ont des règles différentes pour déplacer le curseur au début / à la fin de la ligne, par exemple:
bash
(et autres obus) utilisent CtrlAetCtrlEvi
utilisations 0et $/Shift4D'autres programmes peuvent utiliser d'autres touches. Il n'y a pas de combinaison de touches universelle pour positionner le curseur au début / à la fin de la ligne.
Bien sûr, Terminal pourrait maintenir 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 bonnes touches pour vous, ou il pourrait fournir un élément de menu comme Déplacer le curseur au début de la ligne à l'intérieur du shell ⌘ ← puis envoyer CtrlADans les coulisses. Mais je suppose que les ingénieurs d'Apple ont pensé que si vous vous aventurez sur le territoire CLI , vous connaissez ses particularités.
En guise de remarque, Terminal fournit Option←et Option→qui se comporte bash
comme vous vous en doutez et déplace le curseur au début du mot précédent / suivant. En effet, ces combinaisons de touches sont mappées vers Escbet Escb(voir la man bash
section "Commandes de déplacement" pour plus d'informations). Dans vi
, par exemple, seul ce dernier (genre de) fonctionne (à la fin de cette réponse, je montrerai comment configurer vi
pour fonctionner avec Option←et Option→).
Mais grâce à Automator, AppleScript et les alias bash, vous pouvez obtenir ⌘←et ⌘→travailler avec bash
(et éventuellement d'autres shells) et vi
.
La première étape consiste à mapper ⌘←et ⌘→à CtrlAet CtrlE. Dans une deuxième étape, je vais vous montrer comment configurer vi
pour honorer CtrlAet CtrlE(qui, par conséquent, sera vi
compatible avec ⌘←et ⌘→).
Carte ⌘←et ⌘→vers CtrlAetCtrlE
Dans Terminal, accédez à Préférences ...> Paramètres> [votre profil actif]> Clavier:
Appuyez sur +, sélectionnez "Cursor Left", "Control-Shift" comme modificateur et action "Send Text:". Appuyez ensuite 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 montre l'onglet Terminal précédent, si vous ne lâchez pas ⌘immédiatement. Utilisation de "Control-Shift" corrige cela.)
Ajoutez maintenant 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, appuyez sur ⌘spacepour faire apparaître Spotlight et tapez Automator ), sélectionnez Fichier> Nouveau et choisissez Service
:
Faites glisser Run AppleScript
vers le volet droit:
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 enregistrez sous 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 enregistrez sous Move Cursor to End of Line
:
Voici à quoi ressemble Terminal> Services:
Configurez vi
pour honorer CtrlAetCtrlE
Ouvrez .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 premières map
commandes indiquent vim
d'interpréter ControlEet ControlAcomme $et 0, ce qui déplace le curseur au début ou à la fin de la ligne, respectivement.
Les deux dernières map
commandes indiquent vim
de déplacer le curseur un mot à la fois comme vous vous y attendriez en appuyant sur option←et Option→.
Avertissements
Vous remarquerez qu'il y a un court délai entre le moment où vous appuyez sur ⌘←ou ⌘→et le moment où le curseur se déplace réellement.
Gardez à l'esprit que cela ne fonctionnera que pour les programmes qui respectent CtrlA/ CtrlE, vous pouvez donc toujours vouloir apprendre les combinaisons de touches spécifiques de chaque programme que vous utilisez dans Terminal.
(Testé sur macOS Sierra 10.12.4)
⌘
raccourcivi
lesquelles est une application complètement différente de celle du terminal.Bien sûr, 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 elles le devraient (début / fin de ligne).
Deuxièmement, pour le terminal en particulier, 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. Terminé!
Idem pour le bouton de fin ..
Si vous n'avez pas de clavier PC, vous pouvez faire de même avec d'autres combinaisons de touches.
la source