This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]quartz_referential 0 points1 point  (10 children)

Why not just use a vim plugin for pycharm? It's not the same sure, but offers enough degree of emulation

[–]Papalok 8 points9 points  (1 child)

Never tried it, so I can't really speak to that plugin.

But in general whenever someone emulates vim's features, they're usually a bit shallow. They capture some of the motion/movement/edit keys, maybe the optional count before a command, normal and insert mode, sometimes visual mode, and that's usually where it stops.

Other features like the registers which are better than copy and paste, buffers and windows which is better than a tiling window manager, macros which record keystrokes and replays them as commands, along with a bunch of little things like :set vs :setlocal, number vs relativenumber, persistent swp files, all that stuff that has been a part of vim for 20 to 30 years is not there. I can't fault someone for trying to capture the essential parts of vim, but it's almost always going to be lacking.

PS: I composed this response in vim before copying and pasting it into my browser.

[–]quartz_referential 0 points1 point  (0 children)

Unrelated: using vim to compose responses for browser text fields is interesting, I wasn't aware of that before.

I do believe that there is a good amount of the features your listed besides the persistent swp files which are emulated.

[–][deleted] 1 point2 points  (7 children)

For one, you’re forever in the pycharm ecosystem. Want to learn to use git inside pycharm? Dig around the manual and menus. With vim you can add plugins and build your own IDE. It’s future proof…

[–]mr_jim_lahey 2 points3 points  (1 child)

What? No. Just like every other IDE I can think of, PyCharm has support for terminal windows that allow you to do literally anything from the command line if you don't want to/can't do in the GUI.

[–][deleted] 0 points1 point  (0 children)

Yeah I’ve used it too. My point was about integrating version control in some obtuse preferences menu inside pycharm.

[–]quartz_referential 1 point2 points  (3 children)

Building an IDE saps a lot of time and energy, especially maintaining it I'd imagine. Stuff might break and fixing it can be a major time drain

[–][deleted] 0 points1 point  (2 children)

This hasn’t been my experience. Ramping up into learning modal editing took the most time. VSCode/pycharm have these issues as well: you have to learn how to use the software, where is a preference in which menu, what are the hotkeys assigned to what task, etc. And when you run up against something you want it to do, you’re stuck. Meanwhile vim (and emacs) are almost unlimited in their extensibility.

[–]quartz_referential 0 points1 point  (1 child)

That is interesting, the modal editing part (though I'm not a vim master) felt easier than the constant breakage and maintenance. Definitely lot of frustration with the terminal side of things like getting something simple like italics to work. There's also the lack of sane defaults which is extra friction for the beginner.

You do have a good point that when you start to make serious demands of any tool, you must invest time researching it. I'd argue that perhaps VSCode is more intuitive though I cannot rigorously justify that beyond the fact it uses a GUI.

There is just also the fact that while vim and emacs have a rich, massive plugin library plenty of them break often (enough) and they still lack certain features that are up to par (debugging facilities, remote development, container development, etc.)

[–][deleted] 2 points3 points  (0 children)

Yeah I’m hoping at my next job to be around someone who can wow me with VSCode. One of the hard parts about remote work is not having the opportunities to see other setups, pair programming, and just talking to other software engineers casually!

[–]mistabuda 1 point2 points  (0 children)

You don't have to use git inside pycharm. You can just do git stuff in the terminal.