Utilisation des raccourcis clavier avec bash sur macOS

51

J'essayais d'apprendre les raccourcis clavier pour le shell sous MacOS, mais lorsque j'ai essayé d'utiliser ALT+ B, cela ne fonctionnait pas.

Comment découvrir, configurer et utiliser les associations de touches dans le shell? Toute aide-mémoire serait utile.

Ouvrir le chemin
la source
duplicate: superuser.com/questions/113103/… ... non spécifique à OSX, mais fournit de nombreuses informations sur les mappages de clavier bash standard, la personnalisation de la lecture et d'autres trucs amusants bash.
Quack Quichote
6
Ce n'est pas une copie de la question ci-dessus. celui-ci explique comment faire en sorte que OSX ne détecte pas les raccourcis clavier destinés au terminal
Arthur Ulfeldt
3
Veuillez décocher ceci en double. Il nécessite une réponse indiquant «utiliser l'option en tant que clé méta» pour le terminal OSX.
Bentford

Réponses:

12

Une façon de traiter les séquences de touches «méta» qui ne fonctionnent pas sur le terminal OS X consiste à affecter des séquences de caractères spécifiques à des pressions de touche particulières. Pour ceux d'entre nous qui possèdent des claviers non américains, il s'agit souvent d'une meilleure solution que le paramètre "Utiliser l'option en tant que méta" mentionné dans les commentaires d'autres réponses. (De nombreux claviers Mac internationaux sont essentiellement inutilisables pour des travaux de développement sans la touche Option / Alt, car certains caractères critiques sont par ailleurs indisponibles. Il n'y a pas #de clavier Mac britannique, par exemple.)

Pour faire fonctionner bas-mot et mot-droit pour bash, j'ai utilisé la section "Clavier" des Paramètres du terminal. Vous pouvez lui indiquer de générer des séquences de code particulières lors de l’application de touches. J'ai le mien configuré pour que alt+ génère \033b(ce sont en fait deux caractères: Esc, puis un b minuscule) et alt+ génère \033f(c'est-à-dire Esc f). Cela vous permet d'utiliser les touches de direction avec la touche d'option enfoncée pour obtenir le mot comportement à gauche et à droite.

Ce que je n’ai pas encore expliqué, c’est comment obtenir la Escclé du travail. En théorie, vous devriez pouvoir l’utiliser pour les séquences «méta», mais cela ne semble pas fonctionner. (Il suffit donc de taper Esc+ bpour revenir en arrière d'un mot.)

Si vous avez une configuration de clavier américaine ou un autre clavier dans lequel Apple a jugé bon de fournir toutes les touches dont vous avez réellement besoin, alors, comme d'autres l'ont suggéré, "Utilisez l'option comme clé méta" (également dans la section Clavier des paramètres du terminal). est probablement un meilleur choix car vous pourrez obtenir n'importe quelle combinaison de méta-clés. Avec cette option activée, Alt+ bfonctionne comme prévu.

Ian Griffiths
la source
80

Le terminal de Mac OS X est BASH, voici quelques raccourcis BASH:

Ctrl + A    Go to the beginning of the line you are currently typing on
Ctrl + E    Go to the end of the line you are currently typing on
Ctrl + L    Clears the Screen, similar to the clear command
Ctrl + U    Clears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl + H    Same as backspace
Ctrl + R    Lets you search through previously used commands
Ctrl + C    Kill whatever you are running
Ctrl + D    Exit the current shell
Ctrl + Z    Puts whatever you are running into a suspended background process. fg restores it.
Ctrl + W    Delete the word before the cursor
Ctrl + K    Clear the line after the cursor
Ctrl + T    Swap the last two characters before the cursor
Esc + T  Swap the last two words before the cursor
Alt + F  Move cursor forward one word on the current line
Alt + B  Move cursor backward one word on the current line
Tab      Auto-complete files and folder names

Celui que vous recherchez est Ctrl+ H. (Cela revient à appuyer sur la touche Retour arrière)

Si vous recherchez un personnage d'évasion pour remonter d'un personnage, vous recherchez \b. Un péché:

$ echo -e "one two\b\b\b\b three" # Will echo "one three"
Arko
la source
25
Pour que les liaisons «Alt» fonctionnent, l'utilisateur doit activer «Utiliser l'option en méta» dans Terminal . Cela remplacera les caractères étendus et les clés mortes habituels basés sur des options.
Chris Johnsen
6
Note: L'utilisation de alt comme touche méta rend inaccessibles de nombreux caractères indispensables, tels que @ [] | {}, sur de nombreux modèles de claviers internationaux tels que l'allemand ou l'autrichien. Vous pouvez avancer ou reculer d'un mot en appuyant sur ESC-f et ESC-b respectivement. Pour les caractères simples, vous pouvez utiliser les touches de direction dans la plupart des cas. Dans Terminal.app: Préférences> Paramètres [Avancé], cochez la case "Supprimer envoie Ctrl-H" pour que votre clé de suppression se comporte correctement dans des applications comme vim.
MacLemon
2
-1 Cela ne répond pas à la question. Chris Johnsen a répondu correctement, mais dans un commentaire.
Bentford
1
Les commandes alt ne fonctionnent pas pour moi, Alt + F, et Alt + B ne fonctionne pas. Je cours bash
Shervin Asgari
@MacLemon, il est intéressant que les touches Esc + f et Esc + b fonctionnent pour moi, mais je ne peux pas maintenir Esc enfoncé et appuyer plusieurs fois sur f ou b ; 'f' ou 'b' sont insérés lors de pressions ultérieures.
Kenny Evitt
10

Sur mon mac britannique, ALT + curseur gauche / droite avance / retour d’un mot. Absolument essentiel.

jmoz
la source
6

Essayez SS64 . Ce site Web est tout simplement idéal pour les références en ligne de commande.

Raccourcis clavier OS X CLI tels qu'ils sont extraits de cette page SS64 .

Bash Keyboard Shortcuts

Moving the cursor:
  Ctrl + a   Go to the beginning of the line (Home)
  Ctrl + e   Go to the End of the line (End)
  Ctrl + p   Previous command (Up arrow)
  Ctrl + n   Next command (Down arrow)
   Alt + b   Back (left) one word
   Alt + f   Forward (right) one word
  Ctrl + f   Forward one character
  Ctrl + b   Backward one character
  Ctrl + xx  Toggle between the start of line and current cursor position

Editing:
 Ctrl + L   Clear the Screen, similar to the clear command
 Ctrl + u   Cut/delete the line before the cursor position.
  Alt + Del Delete the Word before the cursor.
  Alt + d   Delete the Word after the cursor.
 Ctrl + d   Delete character under the cursor
 Ctrl + h   Delete character before the cursor (backspace)
 Ctrl + w   Cut the Word before the cursor to the clipboard.
 Ctrl + k   Cut the Line after the cursor to the clipboard.
  Alt + t   Swap current word with previous
 Ctrl + t   Swap the last two characters before the cursor (typo).
 Esc  + t   Swap the last two words before the cursor.
 Ctrl + y   Paste the last thing to be cut (yank)
  Alt + u   UPPER capitalize every character from the cursor to the end of the current word.
  Alt + l   Lower the case of every character from the cursor to the end of the current word.
  Alt + c   Capitalize the character under the cursor and move to the end of the word.
  Alt + r   Cancel the changes and put back the line as it was in the history (revert).
 Ctrl + _   Undo

 TAB        Tab completion for file/directory names
For example, to move to a directory 'sample1'; Type cd sam ; then press TAB and ENTER. 
type just enough characters to uniquely identify the directory you wish to open.

History:
  Ctrl + r   Recall the last command including the specified character(s)
             searches the command history as you type.
             Equivalent to : vim ~/.bash_history. 
  Ctrl + p   Previous command in history (i.e. walk back through the command history)
  Ctrl + n   Next command in history (i.e. walk forward through the command history)
   Alt + .   Use the last word of the previous command
  Ctrl + s   Go back to the next most recent command.
            (beware to not execute it from a terminal because this will also launch its XOFF).
  Ctrl + o   Execute the command found via Ctrl+r or Ctrl+s
  Ctrl + g   Escape from history searching mode

Process control:
 Ctrl + C   Interrupt/Kill whatever you are running (SIGINT)
 Ctrl + l   Clear the screen
 Ctrl + s   Stop output to the screen (for long running verbose commands)
 Ctrl + q   Allow output to the screen (if previously stopped using command above)
 Ctrl + D   Send an EOF marker, unless disabled by an option, this will close the current shell (EXIT)
 Ctrl + Z   Send the signal SIGTSTP to the current task, which suspends it.
            To return to it later enter fg 'process name' (foreground).

Emacs mode vs Vi Mode    
All the above assume that bash is running in the default Emacs setting, if you prefer this can be switched to Vi shortcuts instead.

Set Vi Mode in bash:
$ set -o vi

Set Emacs Mode in bash:    
$ set -o emacs

Remarque: Pour utiliser les raccourcis clavier Alt Key >> Ouvrir les préférences du terminal >> onglet Paramètres >> Clavier >> Cochez "Utiliser l'option comme clé méta".

Préférences du terminal

Rahul Thakur
la source
1
L'option "Utiliser comme clé méta" l'a fait fonctionner pour moi.
cyber-moine
2

Vous voulez la section READLINE de la bash(1)page de manuel:

man 1 bash
/^READLINE
Ignacio Vazquez-Abrams
la source
1

Il n'est vraiment pas nécessaire de mapper la optionclé sur la méta, dans un terminal OS X, option+ left-arrow, option+ right-arrowremplace respectivement Alt+ Fet Alt+ B. Les autres raccourcis couramment utilisés fonctionnent tous de la même manière que sur les autres plates-formes. escpeut émuler la fonctionnalité originale de la Altclé, mais il peut être un peu mal à l' aise en utilisant esccomme modificateur, plus vous ne pouvez pas tenir escet appuyez plusieurs fois sur Bou F, vous devez le laisser et le repousser à chaque fois.

TL; DR

option+ left-arrow= un mot en arrière

option+ right-arrow= transférer un mot

Dan Robson
la source
Les accords d' option ne fonctionnent pas dans mon terminal OS X.
Kenny Evitt
0

Mon profil pourrait vous intéresser: https://github.com/lingtalfi/mac-terminal-shortcuts

Il fournit les raccourcis suivants (intuitifs):

ALT-left: move one word backward
ALT-right: move one word forward
CTRL-left: move to the beginning of the line
CTRL-right: move to the end of the line
ALT-backspace: kill one word backward
ALT-del: kill one word forward
ALT-up: set word after cursor to uppercase
ALT-down: set word after cursor to lowercase
CTRL-backspace: Same as ALT-backspace
CTRL-del: Same as ALT-del
home: move to the beginning of the line
end: move to the end of the line
lingue
la source