Question: How do I replace current word under cursor in Emacs? 

I know that I can use query-replace or replace-string but every time I do so I have to type entire string to be replaced, this is just annoying. 

Vi has equivalent command cword and I can use a shortcut to pull the word under cursor for replacement:

```
nmap <leader>z :%s#\<<C-r>=expand("<cword>")<CR>\>#

```

Anybody know how to do it with Emacs?

Answer: 
Use copy-paste: `M-d C-_ M-x replace-string RET C-y` (`kill-word`, `undo`, `replace-string`, `yank`). If you've already started the replacement, you can switch back to the original buffer to do the copy-paste with the usual window or buffer switching commands: `M-x replace-string RET … C-x o M-d C-_ C-x o C-y`. You can use a prefix argument on `M-d` (e.g. `ESC 4 2 M-d`) to replace multiple words.

If you're planning to replace one or more words at the cursor, you can instead start from incremental search (`C-s`), use `C-w` to start searching the word under the cursor, then press `M-%` to switch to `replace-string`.
This approach similar to the one described by [Michael Mrozek](https://unix.stackexchange.com/a/51856/99066), but starts with `isearch-forward-symbol-at-point`, that *adds a word at a point to the search string*.

* Press `M-s .` to switch to incremental search mode.
* Press `M-%` to switch to replace mode.
* Optionally press `M-n` to pre-fill replacement string with the search string.

With this approach, the *cursor can be located at any part* of the word. It tested to work correctly with the *words that contain dashes*.