7 ms·
> I think the multi-selection gimmick is not strong enough to be worth being first-class (especially the way that search-and-replace works), too many common ope
by clarry 8y ago
> I think the multi-selection gimmick is not strong enough to be worth being first-class (especially the way that search-and-replace works), too many common operations are chorded, and there's no selection "mode" -- you have to remember to keep pressing 'J' as long as you want to grow the selection; one 'j' and you're lost.
Agreed. I also don't like that this system requires you to have what are essentially duplicate keybindings with the only difference being that one does the motion while starting a new selection, and the other does the motion but keeps (and extends) current selection. It guess it's supposed to be ergonomic, but I think it's too wasteful and in wasting so many possible keybindings, we're trading ergonomy away by not being able to bind more powerful functions to all these spent keys.
I'm not sure what the solution should be. I like what Kakoune is trying to do, but I don't think they landed on the right idea.
I'm not sure I'd like having to toggle selection mode on or off. I think it'd be better to always be in the selection mode; then if you don't want all your recent navigation selected, you press a key to reset the selection. The obvious downside is that you'll end up having to reset the selection a lot. On the other hand, if it's only one easily accessible key, it might work well enough.
A slightly more advanced solution would be that you always have a selection formed automatically from the latest motion, plus a mark (perhaps any number of marks) that can be used when you need to combine multiple motions. Normally editing commands that take a selection would only operate on the most recent motion, but with a single prefix or postfix key could be extended to apply up to the mark.
Whatever it is, I think there's got to be a way to improve on vi without making as many tradeoffs as I think Kakoune did.
- andrewla 8y agoI think the problem with any sort of selection/motion combo is that a selection has two endpoints (limiting to just single-selections; multi-selections and cursor make this a jillion times more complicated). When you make a motion you have to decide which one of the endpoints is the current cursor, and that's where I feel like you run into trouble. "Grow the selection up by one line" is a hard notion to express when you started by selecting down. Vim has visual select mode, which has a line-based, character-based, and block-based mode. I'm not totally sure that we need them to be distinct. The problem is that kakoune now has me vaguely dissatisfied with both vim and kakoune and I don't like it.
- clarry 8y agoI don't think the the two endpoints are that big of a deal. I know where I want to start selecting, so I can just navigate there and then expand the selection in one direction only. This is how it works with vi anyway, only you can't really expand the selection after the fact. In the rare case case when I miss the mark, I wouldn't mind pressing an extra key to move the cursor to the other end of the selection and expand from there. And yeah I feel that dissatisfaction too.
- greggyb 8y agoThat extra key is o in vim's visual mode. It moves the cursor to the other end of the selection With the text below, your cursor is the pipe character. From the cursor position, in normal mode, press 'vjok' line1 line2| line3