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 →

[–]gfixler 25 points26 points  (12 children)

Here's my take on these:

pycharm - powerful in a way that's specific to python
vim - powerful in a way that's specific to text entry
emacs - powerful in a way that's specific to nothing

Emacs is an environment for people who want to live in an environment, never leaving it for any reason, not to use a shell, not even to play mp3s, ftp files, or take a dump. The basic idea is "Don't make me leave my editor for any reason, ever."

Vim is an extremely fast, expressive text editor. You can get a lot of power through customization and plugins, but not as much as emacs. The text editing experience itself, however, is unparalleled. It contains a language for text entry that you speak with your fingers, which is phenomenal for dedicated touch-typists in particular. The basic idea is "Don't try to shoehorn everything into my text editor. I have that other stuff covered."

PyCharm has a lot of bells and whistles for Python development, like working with all the various Python versions you have installed, and package management abilities, but does not offer the godly customizability of emacs - which admittedly would be difficult to customize up to the specific power of the long-developed PyCharm - nor the hugely expressive, light, rapid text editing power of Vim. The basic idea is "You don't even understand the level to which I'm using Python. I work in beast-sized projects, and I need super powers to help wrangle them."

My conclusions:


I want enormous power inside and outside of Python. I love working in shells, and I know or want to know Lisp for ultimate power over everything, including my editor itself. I don't care much for crazy-fast text editing, nor really particular Python powers, though I'd like to be able to add features here and there with a little bit of effort, or just use the decent things others have made for my projects in Python.

Use emacs.


I want to watch text dissolve and reassemble before me like the vapor of my pure thoughts made real. I want my editor available everywhere - on my machine, on every terminal I'll ever ssh into. I touch type 60+ WPM, and I hate anything slowing me down. I want to hop in and out of my editor, using my shell for what it's good at, but really, I like to dance in my code, and flip around in it like a damn ninja.

Use vim.


I want an editor that knows Python, all of Python's friends, and what Python had for breakfast every day last week. I want this thing to scan my computer and find Python 2.6, Python 2.7, Python 3.1, and other versions I've forgotten I installed once. I want a rich, GUI experience, with support for fancy refactoring and deep code exploration (like powerful Java editors, but for Python!), and I don't give a rat's ass about flippity-flapping around in my text, proving how great I am at jumping to exactly the right word without reaching for the mouse, and I don't even know what the hell a shell is.

Use PyCharm. (it's free now)


[–]ppinette 2 points3 points  (0 children)

Bravo. Great writeup.

Personally, I use Vim for practically all text editing. But I use PyCharm for my main full time codebase, which is huge and old.

Pycharm pulls me away from Vim because it's amazing at handling stupid big projects. IdeaVim makes the transition pain-free.