2008-11-29 9 views
167

J'ai essayé de le mapper dans Preferences -> Settings -> Keyboard, mais la zone de liste déroulante "key" a seulement "forward delete" mais pas "delete". D'un autre côté, mon clavier n'a que "supprimer" et pas "supprimer"!Mac OS X Terminal: Option de carte + supprimer pour "supprimer le mot précédent"

Existe-t-il un autre moyen de le faire à l'exception des préférences? Sous Terminaux> Préférences> Profils> Clavier, vous pouvez cocher "Utiliser la clé option comme clé méta" sous

+0

Par "mot de retour arrière", voulez-vous dire la touche de retour arrière? Je ne suis pas au courant d'un clavier Apple récent qui a une touche de suppression. –

+0

Par "mot supprimer 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é étiquetée "supprimer", mais il agit comme un retour arrière. – ibz

+0

Je suis confronté au même problème. le clavier a une suppression vers l'arrière mais ne peut pas être utilisé comme liaison dans Terminal.app. – knoopx

Répondre

294

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

+1

Fonctionnant sur OSX Lion et ne voyant pas l'option 'Utiliser la clé option comme clé méta'. –

+25

Sous Préférences Terminal> Paramètres> Clavier, tout en bas. – Jon

+3

Pourquoi n'est-ce pas par défaut ?! –

2

Vous pouvez également essayer iTerm, il offre un contrôle plus fin des raccourcis clavier.

19

Par défaut, meta backspace fait un backward mot dans la plupart des shells. Si vous appuyez sur Echap, puis appuyez sur retour arrière, cela fonctionne à peu près partout.

+2

Fantastique, qui ne nécessite aucune configuration supplémentaire. Je remarque ' b' et ' f' aussi travailler pour sauter en arrière ou en avant un mot. – joeytwiddle

+1

J'aime + FLÈCHE de plus. ESC n'autorise pas les clics continus sur b ou f. –

+0

J'ai utilisé + FLÈCHE pour se 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-word de la même manière que + ARROW, donc il supprime tout jusqu'à l'espace. Toute façon de supprimer en utilisant une détection des limites similaires + ARROW serait apprécié –

57

Le terminal d'OS X exécute bash, qui inclut le support readline. Suivez les conseils de Glomek et dire la borne à l'option utiliser comme clé méta (ou bien utiliser Esc) et vous avez un tas d'options pratiques: Ctrl + w supprime mot prev (tout comme Meta + supprimer comme mentionné), mais vous pouvez également utiliser Meta + f et Meta + b pour marcher en avant et en arrière à travers les mots, Ctrl + un et Ctrl + e au début et à la fin de la ligne, Ctrl + k supprimer (tuer) du curseur à la fin de la ligne, et un tas plus.

Voir http://www.bigsmoke.us/readline/shortcuts pour une belle petite table de référence.

+1

Comment est-ce "maniable"? Le reste du système utilise 'delete' avec des qualificatifs pour supprimer des mots. – idrougge

+0

Est-il possible d'avoir aussi une "ligne de suppression"? – wenbert

11

Dans le profil de votre Terminal, vous pouvez lier ⌥⌫ (option + supprimer) à^W (Ctrl + W) pour qu'il fonctionne comme les autres applications.

Terminal Profile Keyboard settings

+0

stty doit être associé à 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

10

⌃W (contrôle + W) ne sont pas la même chose que méta + delete (ESC + supprimer si vous n'avez pas vérifié l'option d'utiliser comme clé méta) méta + SUPPR traitera / _ comme mot délimiteur où ^W considérera l'espace comme délimiteur.

par exemple. avec ESC + Bakcspace sur (curseur à la fin)

rm /dira/dirb/file1 

donne

rm /dira/dirb/ 

alors^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 êtes vraiment en train de faire correspondre ⌥⌫ à ce que fait esc⌫ et vous continuez à avoir^W pour effacer le mot en fonction du délimiteur d'espace.

J'aimerais pouvoir poster une image sur comment faire ceci mais en tant que débutants je ne peux pas.

se référer au commentaire bouke pour voir comment modifier le profil du terminal.

+1

Celui-ci devrait être accepté. Merci! – Victor

30

Supprimer un mot précédent:

Ctr-w.

+0

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. –

+3

Ctr-k supprime tout en avant, pas seulement un mot, non? – Shai

+0

c'est correct. –