Repository: neovim
Issue: `aw` inconsistency at eol, with/without leading space
Labels: compatibility,needs:vim-patch,normal-mode

# Updates info:
1. Remove irrelevant information => keep it concise.

# Issue

The rule of how a `aw` find its space as a part of its `word`,  is dynamic-forward-style, instead of a fixed `space + word` or `word + space` pattern as an object
1. When the cursor is on a word, `yaw` treats the word + forward space as `a word`. If `p` the `a word`, you get a forward space. But it's a perspective issue, you can think the two(word and space) are forward-finding.
2. When the cursor is on a space, `yaw` treats the space + forward word as `a word`. If `p` the `a word`, you get a backward space. But it's a perspective issue, you can think the two(word and space) are forward-finding. This is command-style instead of the text-object-style.

Say, we get a text, `This is a cute cat.`, if `daw` or `yaw`,
1. if cursor is on the space in ` cute`, then forward `daw`, to satisfy that => a set {a word, a space}, no sequence
2. if cursor is on the `cute`, then forward `daw`, to satisfy that => a set {a word and a}
    1. if forward fails(meet no space but punctuation or EOL, then backward searching the space)
    2. if backward fails, then nothing else and only select a pure word( e.g. `<SOL>Honestly, `)

1. Considering compatibility, keep it as origin.

# Solutions
### Solution A

It is a dynamic forward-search... instead of a fixed text-object...when you do want select a space as a part of `aw`(for pure, use `diw` or `yiw`), e.g.
1. delete "hello" and conveniently the forward white space in `print("hello world")`
2. delete white space and conveniently the forward `world` in `print("hello world")`
4. delete "world" and forward-no-space, so conveniently the backward white space in `print("hello world")`

The only thing should care is that if paste, pay attention the white space is whether ahead or after the word.
1. if want the white space ahead, just `yaw` on white space
2. if want the white space after, just `yaw` on word(pure word)
3. if want no white space, just `yiw` on word(pure word)
### Solution B
Think more => a word became a word because its end char meet a non-word char: {no char, space, EOL, punctuation}

But a space is not only an end mark of a word, it is a delimiter, e.g. "Frankly speaking, I love it!", when you `e` or `w` to a word, `daw` is safe, cos `edb` and `wde` didn't behave same(or intend to be like this, thus you can use a `till`-like operation by `edb`

# It is a feature well documented in `:help motion.txt`
```
When used after an operator:
For non-block objects:
	For the "a" commands: The operator applies to the object and the white
	space after the object.  If there is no white space after the object
	or when the cursor was in the white space before the object, the white
	space before the object is included.
	For the "inner" commands: If the cursor was on the object, the
	operator applies to the object.  If the cursor was on white space, the
	operator applies to the white space.
```

# further reference
1. :help `aw`
7. :help `daw`
8. :help `word`
9. :help `WORD`
10. :help `iw`