Mac OS X Terminal: Map option+delete to "backward delete word"

MacosKeyboard ShortcutsTerminal

Macos Problem Overview


Tried to map it from Preferences -> Settings -> Keyboard, but the "key" combo box has only "forward delete" but no "delete". My keyboard on the other hand has only "delete" and no "forward delete"!

Is there some other way to do it except from the preferences?

Macos Solutions


Solution 1 - Macos

Enable option key as meta key

  1. Go to Terminal > Preferences > Profiles > Keyboard
  2. Check Use option key as meta key.
Image

On macOS High Sierra 10.13.6, captured on October 23, 2018.

Illustration of the window for toggling option key as meta key

Notes

Many applications (including bash and tcsh) treat Meta-Delete as "backward delete word."

Solution 2 - Macos

OS X's terminal runs bash, which includes readline support. Follow Glomek's advice and tell terminal to use option as meta key (or else use Esc) and then you've got a bunch of handy options: Ctrl+w deletes prev word (as does Meta+delete as mentioned), but you can also use Meta+f and Meta+b to walk forward and backwards thru words, Ctrl+a and Ctrl+e to beginning and end of line, Ctrl+k delete (kill) from cursor to end of line, and a bunch more.

See http://www.bigsmoke.us/readline/shortcuts for a nice little reference table.

Solution 3 - Macos

Delete a word going back:

Ctr-w.

Solution 4 - Macos

Command Editing Shortcuts

Ctrl + a – go to the start of the command line

Ctrl + e – go to the end of the command line

Ctrl + k – delete from cursor to the end of the command line

Ctrl + u – delete from cursor to the start of the command line

Ctrl + w – delete from cursor to start of word (i.e. delete backwards one word)

Ctrl + y – paste word or text that was cut using one of the deletion shortcuts (such as the one above) after the cursor

Ctrl + xx – move between start of command line and current cursor position (and back again)

Alt + b – move backward one word (or go to start of word the cursor is currently on)

Alt + f – move forward one word (or go to end of word the cursor is currently on)

Alt + d – delete to end of word starting at cursor (whole word if cursor is at the beginning of word)

Alt + c – capitalize to end of word starting at cursor (whole word if cursor is at the beginning of word)

Alt + u – make uppercase from cursor to end of word

Alt + l – make lowercase from cursor to end of word

Alt + t – swap current word with previous

Ctrl + f – move forward one character

Ctrl + b – move backward one character

Ctrl + d – delete character under the cursor

Ctrl + h – delete character before the cursor

Ctrl + t – swap character under cursor with the previous one

Command Recall Shortcuts

Ctrl + r – search the history backwards

Ctrl + g – escape from history searching mode

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

Command Control Shortcuts

Ctrl + l – clear the screen

Ctrl + s – stops the output to the screen (for long running verbose command)

Ctrl + q – allow output to the screen (if previously stopped using command above)

Ctrl + c – terminate the command

Ctrl + z – suspend/stop the command

Bash Bang (!) Commands

Bash also has some handy features that use the ! (bang) to allow you to do some funky stuff with bash commands.

!! – run last command !blah – run the most recent command that starts with ‘blah’ (e.g. !ls)

!blah:p – print out the command that !blah would run (also adds it as the latest command in the command history)

!$ – the last word of the previous command (same as Alt + .)

!$:p – print out the word that !$ would substitute

!* – the previous command except for the last word (e.g. if you type _find somefile.txt /, then !* would give you _find somefile.txt)

!*:p – print out what !* would substitute

Solution 5 - Macos

⌃W (control+W) is not the same thing than meta + delete (ESC+delete if you don't have checked use option as meta key) meta+delete will treat / _ as word delimiter where ^W will consider space as delimiter.

e.g. using ESC+Bakcspace on (cursor at the end)

rm /dira/dirb/file1

gives

rm /dira/dirb/

while ^W on the same will give

rm

So it is better to use \033\177 rather than ^W when defining the modifying the terminal profile. That way you are really mapping ⌥⌫ to what esc⌫ is doing and you keep having ^W to erase word based on space delimiter.

I would love to be able to post an image on how do this but as a newbies I can't.

refer to bouke comment to see how to modify terminal profile.

Solution 6 - Macos

By default meta backspace does a backwards word yank in most shells. If you press escape and then press backspace, that pretty much works everywhere.

Solution 7 - Macos

In your Terminal's profile, you can bind ⌥⌫ (option+delete) to ⌃W (control+W), so it works similar to other apps.

Terminal Profile Keyboard settings

Solution 8 - Macos

With Natural Text Editing preset enabled in Profile -> Keys. You can simply remove the word

  • Backward with alt + delete
  • Forward with fn + alt + delete

Solution 9 - Macos

If you are using Iterm2 (which is like the regular terminal of OSX just better :) you can use this like to change this behavior:

You need to set your left ⌥ key to act as an escape character. This can be done going to iTerm2 > Preferences > Profiles > Keys.

enter image description here

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionibzView Question on Stackoverflow
Solution 1 - MacosAndru LuvisiView Answer on Stackoverflow
Solution 2 - MacosnadafigmentView Answer on Stackoverflow
Solution 3 - MacosShaiView Answer on Stackoverflow
Solution 4 - MacosCurtis MView Answer on Stackoverflow
Solution 5 - MacosStephane GaspariniView Answer on Stackoverflow
Solution 6 - MacosDustinView Answer on Stackoverflow
Solution 7 - MacosBoukeView Answer on Stackoverflow
Solution 8 - MacosAnthony ArtemievView Answer on Stackoverflow
Solution 9 - MacosOded BDView Answer on Stackoverflow