How to replace a region in emacs with yank buffer contents?

Setting delete-selection-mode, as Michael suggested, seems the most natural way to do it.

However, that's not what I do :) Instead, I put the good stuff into a "register" -- for example, register "a" -- with C-x r x a. Then I kill the other copy, and copy the register into the same spot with C-x r g a.

This is convenient because killing doesn't affect the registers, so C-x r g a always inserts the good stuff.


The default way to do something like this is the not-entirely-elegant following:

  1. Get your desired replacement text into the kill ring somehow (e.g., M-w).
  2. Highlight the region to be replaced.
  3. Delete it (C-w).
  4. Replace it with the prior-copied region (C-y, M-y). This replaces the freshly deleted contents with the exact same text that you just deleted (C-y), and then re-replaces it with the next most-recently saved buffer in the buffer ring (M-y).

This would get to be a real pain if you wanted to do this 10 times with the same text, as the desired replacement would get pushed farther back in the kill ring each time you deleted a region, so you'd have to call M-w an increasing number of times each time you wanted to yank it.

I've also just discovered M-x delete-region, thanks to Emacs: how to delete text without kill ring?. As the question implies, this deletes the offending text without putting it into the kill ring, avoiding the problem of pushing your replacement text further down on the stack. And, as the relevant response mentions, you can bind this to a shortcut key of your choosing.


Add this to your .emacs:

(delete-selection-mode 1)

Anything that writes to the buffer while the region is active will overwrite it, including paste, but also simply typing something or hitting backspace

Tags:

Emacs