Visual Block mode anti-feature ( word movement )

Visual block mode doesn’t actually behave as expected in this case. For example if I want to select a column of words and add to them I can’t just select and then press w to select each word separately and add to it (A). This is possible however if the words are at the end of the line and I press the $ which indicates that it is possible for block mode to ‘break’ out of block and actually conform to a selection.

|Bear cub
|Dodecahedron dice
|Table cloth
|Jacksonville town

**Expected
Bear |cub
Dodecahedron |dice
Table |cloth
Jacksonville |town

**Actually, if cursor at first line
Bear |cub
Dodec|ahedron dice
Table| cloth
Jacks|onville town

I mean in which case would someone need to select the column words and select just until the end of the current word ? I just don’t see a reason why this is still in Neovim.
Is there a reason that I’m failing to see or is it just legacy “feature” ?

Then it wouldn’t be a block selection any longer, would it? (Which can be very useful when working with pre-aligned and in particular tabular material.)

What you want is GitHub - mg979/vim-visual-multi: Multiple cursors plugin for vim/neovim.

1 Like

I know how useful visual block can be, but can you please tell me where the current move set is useful?
Under what scenario you have a column selected and press w to select until the current word…
I know it’s not an easy “fix” btw…

It’s just visual-block, I don’t think there is much more to it, really. You think motions should be disabled completely in visual block selection?

Feature is to edit block and within that you can use motions like you would normally do in normal mode to navigate around the text. For some cases it’s useful for some it’s not. If it’s not right for the job you can use different methods, like macro or multi-cursor plugin.

Not remove them, just make them usefull.
Ofcourse there are other ways to do it.

within that you can use motions like you would normally do in normal mode

But it doesn’t…it doesn’t move relative to the block but to the line you are currently on, like in normal mode, which you are not in , you are in visual Block…

But honestly i don’t see a reason why the movements behave the way they do in visual block (yes an easy answer would be that it has to be a block, but it doesn’t, when typing ‘$’ it behaves as expected ).
In my mind a “fix” for this would be way to complicated to implement, many edge cases to be resolved and what ifs, but what do i know… I don’t even know how to make a plugin (maybe when i do i will try to solve this my self ).
Many smart people are working on neovim , surely someone will have a smarter idea than me.

Again, it works with block, and for editing blocks it is useful, you have one cursor and you can use it as in normal mode to help you select what you want. $ kind of works, but that’s like the only edge case, and makes sense for the block as without it you would not be able to select end column without some padding at each line.

Plugin linked by @clason does what you looking for.

The reason $ works “differently” it’s because it’s selecting the end of the line, there’s no point on the visual selection going over the end of it.