DEV Community

Discussion on: Why Are Some Developers so Allergic to IDEs?

Collapse
 
waterlink profile image
Alex Fedorov • Edited

Surely they can coexist. I use Vim for simple text editing tasks (configuration files, just checking something quickly), and I use IDE for actual development.

You didn’t mention “refactoring” in things that you’re missing when using Vim instead of IDE. Why is that? Are you doing refactoring by hand? How often are you refactoring? What kind of refactorings do you do?

Collapse
 
moopet profile image
Ben Sinclair

Refactoring for me is generally done inside a single module. The stuff and IDE gives me... if I change the method names that are used externally I have a couple of helper mappings to sort that out for me: I hit // to find uses of the currently-being-edited function in all files and the reciprocal gD to go to its definition. I can then just do a simple search and replace.

Thread Thread
 
waterlink profile image
Alex Fedorov

That sounds quite tedious. A good name is on average achieved on the 9th try.

I want to rapidly rename methods, classes, variables, etc. so that I and my pair can work through at least half of these 9 tries very quickly.

I guess, instead of thinking about the name for a while, I love to just change it on impulse and then analyze how well it reads in the location where I was renaming it.

Without the need to do additional actions except for typing a new name, I can really iterate quickly through different names as I discuss them with my pair.

Thread Thread
 
waterlink profile image
Alex Fedorov

Now, what about other refactorings? Like: move method from one object to another, extract variable/method, inline variable/method, extract delegate object, extract parameter object, pull up/pull down methods along the hierarchy chain, etc.?

Thread Thread
 
kungtotte profile image
Thomas Landin

Vim can do all of that either out of the box, through plugins, or through custom functions.

Thread Thread
 
waterlink profile image
Alex Fedorov

The closest thing that I could find is this: github.com/apalmer1377/factorus

It’s bearable but it doesn’t have all of what I need. Are there any other plugins that enable this?

Thread Thread
 
waterlink profile image
Alex Fedorov

Also, it’s not supported for a lot of languages: JS/TS, Kotlin, Swift, Ruby are missing

Thread Thread
 
waterlink profile image
Alex Fedorov

There also seem to be this plugin: github.com/Valloric/YouCompleteMe — it looks pretty cool, unfortunately supports only rename refactoring…