5 ms·
Multiple-cursor is useful when you want to edit lines which have non-trivial edits or doesn't have a common string to use find-replace. simple example foo_b
by akashakya 8y ago
Multiple-cursor is useful when you want to edit lines which have non-trivial edits or doesn't have a common string to use find-replace.
simple example
foo_bar -> fooBar
bar_baz -> barBaz
Sometimes even this doesn't cut it and have to use mighty Emacs macros. (I'm sure something similar exits for VIM)
- deviantfero 8y agoplease correct me if I'm wrong, but wouldn't :'<,'>s/_b/B/ work in this case?
- fredsted 8y agoIt might work if you want to fiddle with a regex for several minutes, so I'd prefer to just select a bunch of lines do the change directly
- jcelerier 8y agoit's more keystrokes (and more complicated ones) than just doing cursor editing, and you have to think of every replacements in advance while with the multi cursor if you have five others replacements to make in the same line you can just make them easily one after the other
- deleted 8y ago[deleted]
- akashakya 8y agoWith multiple cursors you are seeing the changes as you are editing. and you have all of the normal editing shortcuts at your disposal. Example, if you made a mistake while typing just hit undo.
- bhaak 8y agoI would rather add the c option in cases where I'm not 100% sure what I'm doing. So in this case :'<,'>s/_b/B/c That let's you step through every change and if something's wrong you can press ESC and u to undo only the last change. It depends on the actual problem of course, but multicursor edits also get unwieldy if you're editing more than 2 or 3 lines. What about if the lines are beyond the visible screen?
- akashakya 8y agoYes, no silver bullet. But most of my use case I find a generic pattern so I don't check the individual edits. Anything more complex I'll switch to macros. Btw, I meant undo like global undo which will let you undo the last keypress for all of the cursors. In your case, you meant undo for a particular instance of change I guess. Also, let's say there is different character after _ foo_bar -> fooBar baz_car -> bazCar some_thing -> someThing Maybe you can do this with regex. but for a new user, he has to look it up. With multiple-cursors, you don't even have to think about it. However, you can use a macro.
- laumars 8y agoVim has macros[1] and other replay tools for occasions like that. I think the issue with Vim isn't so much that things can't be done in it but more that the discoverability of Vim features is pretty poor. eg by the time you've searched the web for a quick way to do a multiline edit, you could have just done it manually. GUI IDEs tend to be better for discoverability (generally speaking). [1]https://www.tutorialspoint.com/vim/vim_macros.htm https://www.tutorialspoint.com/vim/vim_macros.htm
- akashakya 8y agoAgreed, I think of macro as a superset of multiple-cursors. Heck, with macro you can even run arbitrary code to generate text dynamically. I had the pleasure of doing this multiple times. In Emacs, you can use multiple registers for storing code and data for this purpose
- leni536 8y agoAssuming the '_' characters are on the same column for all lines then vim's block visual is quite adequate for the task. If it's not the case then I don't know how multiple-cursor will help, you still need some kind of regex to put the cursors at the right places, don't you?
- akashakya 8y agoah, that was a bad example for so many reasons. slightly better example foo_bar -> fooBar() baz_car -> bazCar() some_thing -> someThing() An even better example is doing the reverse fooBar() -> foo_bar bazCar() -> baz_car someThing() -> some_thing You can put cursors at every line and then use subword movement to find the word boundary. > you still need some kind of regex to put the cursors at the right places, don't you? I didn't say it replaces regex. You need regex just to place the cursors. you don't have to write complex regexp edit text (as shown in this example)
- rijoja 8y agoSure but does it really happen that often, whenever there are regularities usually there's some variation that makes it useless. Don't get me wrong, I don't mind the feature, thing is I run in it so rarely so I don't get why it would be a major sellingpoint. For example this project and perhaps more notably sublime (an editor that I do enjoy quite a bit!)
- DanGarthwaite 8y agoqqf_x~q Now you can @q to your heart's content.