Terminal Mac OS X: option de carte + supprimer pour «supprimer le mot en arrière»

232

J'ai essayé de le mapper à partir des Préférences -> Paramètres -> Clavier, mais la zone de liste déroulante "clé" n'a que "supprimer en avant" mais pas de "supprimer". Mon clavier par contre n'a que "supprimer" et pas de "supprimer en avant"!

Y a-t-il une autre façon de le faire, sauf dans les préférences?

ibz
la source
Par «mot de suppression vers l'arrière», voulez-vous dire la touche de retour arrière? Je ne connais aucun clavier Apple récent doté d'une touche de suppression.
Sören Kuklau
Par «mot de suppression vers l'arrière», je veux dire exactement cela - pour supprimer le mot entier à partir du curseur vers l'arrière. :) Le dernier Macbook a une clé intitulée "supprimer", mais il agit comme un retour arrière.
ibz
je suis confronté au même problème. le clavier a une suppression en arrière mais ne peut pas être utilisé comme liaison dans Terminal.app.
knoopx
Pour moi, votre question mérite des millions de votes positifs. Cela m'a beaucoup aidé. Plus tôt, j'étais Ubuntu. Maintenant, cela m'a aussi facilité la vie sous Mac OS. Merci.
doptimusprime

Réponses:

424

Activer la touche d'option en tant que clé méta

  1. Aller à Terminal> Preferences> Profiles>Keyboard
  2. Vérifiez Use option key as meta key.

Image

Sur macOS High Sierra 10.13.6, capturé le 23 octobre 2018.

Illustration de la fenêtre permettant de basculer la touche d'option en tant que clé méta

Remarques

De nombreuses applications (y compris bash et tcsh) traitent Meta-Delete comme «mot de suppression en arrière».

Andru Luvisi
la source
32
C'est sous Préférences du terminal> paramètres> clavier, tout en bas.
Jon
16
Pourquoi n'est-ce pas par défaut?!
Ross Hambrick
8
Sur Yosemite, ce paramètre est maintenant sous Préférences -> Profils -> Clavier. Il semble que vous devez le modifier / le définir pour chaque profil.
palimpsesteur
6
Sur les claviers non américains, une touche d'option est souvent nécessaire pour obtenir certains caractères (par exemple, le canal '|' est assez important au niveau du shell). Dans ce cas, <Esc> b et <Esc> f mentionnés dans d'autres réponses sont probablement la meilleure solution?
Touko
8
Malheureusement, cela est contre-productif pour les programmeurs avec des claviers étrangers qui doivent utiliser la touche option pour obtenir des symboles spéciaux comme {, car cela ne fonctionnera pas lorsque la touche option est utilisée comme méta-clé.
Magne
74

Le terminal d'OS X exécute bash, qui inclut la prise en charge de readline. Suivez les conseils de Glomek et dites au terminal d'utiliser l'option comme méta-clé (ou bien utilisez Esc) et vous avez alors un tas d'options pratiques: Ctrl+ wsupprime le mot précédent (comme Meta + supprime comme mentionné), mais vous pouvez également utiliser Meta + f et Meta + b pour avancer et reculer à travers les mots, Ctrl+ aet Ctrl+ eau début et à la fin de la ligne, Ctrl+ ksupprimer (tuer) du curseur à la fin de la ligne, et bien plus encore.

Voir http://www.bigsmoke.us/readline/shortcuts pour un joli petit tableau de référence.

nadafigment
la source
3
Comment est-ce "pratique"? Le reste du système utilise deletedes qualificatifs pour supprimer les mots.
idrougge
Est-il également possible d'avoir "supprimer la ligne"?
wenbert
1
Readline est génial, mais cela n'aide pas OP. Ctrl + w supprime un MOT (séparé par un espace), pas un mot (séparé par une ponctuation + un espace). Avec le curseur à la fin de cat .git/refs/heads, Ctrl-w se traduit par cat. Meta + supprimer les résultats danscat .git/refs/
idbrii
@nadafigment, 'a' et 'e' signifie?
Pacerier
63

Supprimer un mot en arrière:

Ctr-w.

Shai
la source
2
bien après avoir lu ceci, j'ai découvert que "supprimer le mot en avant" est ctrl + k (par essais et erreurs). maintenant je me demande pourquoi il y a si peu de documentation sur tout cela.
victor n.
8
Ctr-k supprime tout devant, pas seulement un mot, non?
Shai
cela fonctionne sur mon mac. ça marche aussi sur Ubuntu Linux?
user391339
1
Ctrl + w supprime un MOT (séparé par un espace), pas un mot (séparé par une ponctuation + un espace). Avec le curseur à la fin de cat .git/refs/heads, Ctrl-w se traduit par cat. Meta + supprimer les résultats danscat .git/refs/
idbrii
24

Par défaut, le méta retour arrière fait un mot en arrière dans la plupart des shells. Si vous appuyez sur Échap, puis sur Retour arrière, cela fonctionne à peu près partout.

Dustin
la source
3
Fantastique, cela ne nécessite aucune configuration supplémentaire. Je remarque <Esc> bet <Esc> ftravaille également pour sauter ou avancer un mot.
joeytwiddle
1
J'aime plus <ALT> + FLÈCHE. ESC ne permet pas de clics continus sur b ou f.
Vitali Pom
1
J'utilise <ALT> + FLÈCHE pour me déplacer, mais je trouve qu'il n'y a aucun moyen de supprimer de la même manière. L'approche CTRL + W mentionnée ci-dessus ne s'arrête pas aux caractères non-mots de la même manière que <ALT> + FLÈCHE, donc elle supprime tout jusqu'à l'espace. Tout moyen de supprimer en utilisant une détection de limite similaire à <ALT> + FLÈCHE serait apprécié
Rene Wooller
18

⌃W(control + W) n'est pas la même chose que meta + delete (ESC + delete si vous n'avez pas coché l'option use as meta key) meta + delete traitera / _comme délimiteur de mot où ^Wconsidérera l'espace comme délimiteur.

par exemple en utilisant ESC + Bakcspace sur (curseur à la fin)

rm /dira/dirb/file1

donne

rm /dira/dirb/

tandis que ^ W sur le même donnera

rm

Il est donc préférable d'utiliser \ 033 \ 177 plutôt que ^ W lors de la définition de la modification du profil du terminal. De cette façon, vous mappez vraiment ⌥⌫ sur ce que fait esc⌫ et vous continuez d'avoir ^ W pour effacer le mot en fonction du délimiteur d'espace.

J'aimerais pouvoir poster une image sur la façon de faire mais en tant que débutant, je ne peux pas.

reportez-vous au commentaire de bouke pour voir comment modifier le profil du terminal.

Stéphane Gasparini
la source
5
Pour ceux qui souhaitent le faire iterm2, vous pouvez aller dans Préférences> Clés> ajouter le mappage de clés ⌥⌫pour envoyer des codes hexadécimaux 0x1B 0x7F. 🍻
qix
Comment avez-vous découvert que \033\177c'était ce que vous vouliez pour "supprimer une partie d'un mot"?
adiabatique
en effet, il vous suffit d'appuyer sur la séquence de touches souhaitée dans la boîte de dialogue Préférences de terminal. Préférences → Profils → onglet Clavier → bouton + puis choisissez le modificateur "option" et la touche "⌫ supprimer" puis sélectionnez le champ de texte et appuyez sur la touche d'échappement puis appuyez sur la touche and et vous avez terminé. Esc + ⌫ fait la même chose que ⌥⌫
Stephane Gasparini
14

Dans le profil de votre terminal, vous pouvez lier ⌥⌫ (option + supprimer) à ⌃W (contrôle + W), afin qu'il fonctionne de manière similaire à d'autres applications.

Paramètres du clavier de profil du terminal

Bouke
la source
stty doit avoir ^ w mappé sur werase (comportement par défaut) pour que cela fonctionne. Utilisez stty -a sur la ligne de commande pour voir comment les mappages sont définis.
natersoz
4

Raccourcis d'édition des commandes

Ctrl + a - aller au début de la ligne de commande

Ctrl + e - aller à la fin de la ligne de commande

Ctrl + k - supprimer du curseur jusqu'à la fin de la ligne de commande

Ctrl + u - supprimer du curseur au début de la ligne de commande

Ctrl + w - supprimer du curseur au début du mot (c'est-à-dire supprimer un mot en arrière)

Ctrl + y - collez le mot ou le texte qui a été coupé à l'aide de l'un des raccourcis de suppression (comme celui ci-dessus) après le curseur

Ctrl + xx - se déplace entre le début de la ligne de commande et la position actuelle du curseur (et vice-versa)

Alt + b - reculer d'un mot (ou aller au début du mot sur lequel le curseur est actuellement)

Alt + f - avancer d'un mot (ou aller à la fin du mot, le curseur est actuellement sur)

Alt + d - supprimer jusqu'à la fin du mot commençant au curseur (mot entier si le curseur est au début du mot)

Alt + c - met en majuscule à la fin du mot commençant au curseur (mot entier si le curseur est au début du mot)

Alt + u - met en majuscule du curseur à la fin du mot

Alt + l - faire des minuscules du curseur à la fin du mot

Alt + t - échange le mot actuel avec le précédent

Ctrl + f - avancer d'un caractère

Ctrl + b - reculer d'un caractère

Ctrl + d - supprimer le caractère sous le curseur

Ctrl + h - supprimer le caractère avant le curseur

Ctrl + t - permuter le caractère sous le curseur avec le précédent

Raccourcis de rappel de commande

Ctrl + r - recherche l'historique en arrière

Ctrl + g - sortir du mode de recherche historique

Ctrl + p - commande précédente dans l'historique (c'est-à-dire revenir en arrière dans l'historique des commandes)

Ctrl + n - commande suivante dans l'historique (c.-à-d. Avancer dans l'historique des commandes) Alt +. - utiliser le dernier mot de la commande précédente

Raccourcis de contrôle des commandes

Ctrl + l - effacer l'écran

Ctrl + s - arrête la sortie à l'écran (pour une commande prolixe de longue durée)

Ctrl + q - autoriser la sortie à l'écran (si précédemment arrêté à l'aide de la commande ci-dessus)

Ctrl + c - terminer la commande

Ctrl + z - suspendre / arrêter la commande

Commandes Bash Bang (!) Bash possède également quelques fonctionnalités pratiques qui utilisent le! (bang) pour vous permettre de faire des trucs géniaux avec les commandes bash.

!! - run last command! Blah - exécute la commande la plus récente qui commence par 'blah' (par exemple! Ls)

! blah: p - affiche la commande que! blah exécuterait (l'ajoute également comme la dernière commande dans l'historique des commandes)

! $ - le dernier mot de la commande précédente (identique à Alt +.)

! $: p - imprime le mot que! $ remplacerait

! * - la commande précédente à l'exception du dernier mot (par exemple, si vous tapez '_find somefile.txt /', alors! * Vous donnera '_find somefile.txt')

! : p - imprimez quoi! remplacerait

Curtis M
la source
2

Avec le Natural Text Editingpréréglage activé dans Profil -> Clés. Vous pouvez simplement supprimer le mot

  • En arrière avec alt + delete
  • Transférer avec fn + alt + delete
Anthony Artemiev
la source