When comparing Vim vs PyCharm, the Slant community recommends PyCharm for most people. In the question“What are the best Python IDEs or editors?” PyCharm is ranked 1st while Vim is ranked 2nd. The most important reason people chose PyCharm is:
PyCharm has CVS, Git, Subversion and Mercurial integration.
Ranked in these QuestionsQuestion Ranking
Pro Lightweight and fast
When compared to modern graphical editors like Atom and Brackets (which have underlying HTML5 engines, browsers, Node, etc.), Vim uses a sliver of the system's memory and it loads instantly, all the while delivering the same features. Vim is also faster than Emacs.
Pro Works in terminal over SSH
Unlike other editors such as Sublime Text, Vim is a command line editor and hence can be used in remote development environments like Chromebooks via SSH.
Pro Free and open-source software
Vim is open-source, GPL-compatible charityware.
Pro Extremely portable
Vi/vim exists on almost all Unix-like platforms. It's the de-facto Unix editor and is easily installed on Windows. All you need to make it work is a text-based connection, so it works well for remote machines with slow connections, or when you're too lazy to set up a VNC/Remote Desktop connection.
Pro Keyboard-based, mouse-free interface, and trackpad support
There's no need to reach for the mouse or the Ctrl/Alt buttons again. Everything is a mere key press or two away with almost 200 functions specifically for text editing. Vim does support the mouse, but it's designed so you don't have to use it for greater efficiency.
Versions of Vim, like gVim or MacVim, still allow you to use the mouse and familiar platform shortcuts. That can help ease the learning curve and you'll probably find you won't want to (or need to) use the mouse after a while.
Pro Macros increase productivity
Many text editors have programmable macros, but since Vim is keyboard-based, your programmed macros are usually far more predictable and easier to understand.
Pro Great productivity
Vim's keyset is mainly restricted to the alphanumeric keys and the escape key. This is an enduring relic of its teletype heritage, but has the effect of making most of Vim's functionality accessible without frequent awkward finger reaches.
Pro Usable from a Terminal or with a GUI (GVim, MacVim)
If you happen to be logged into SSH, you can use Vim in a terminal. It can also run with a GUI too.
Pro Once learned, it's very hard to forget
Vim's somewhat steep learning curve is more than made up for once you've mastered a few basic concepts and learned the tricks that allow you to program faster with fewer cut/paste mistakes.
Pro Everything is mnemonic
No need to memorize different key combinations for things like deleting the text inside of a block or deleting the text inside of a pair of quotes. It's just a series of actions, or nouns and verbs, or however you prefer to think about it. If you want to delete, you select "d"; if you want it to happen inside something, you select "i"; and if you want the surrounding double-quotes, just select ". But if you were changing the text, or copying it, or anything else, you'd still use the same "i" and ". This makes it very easy to remember a large number of different extremely useful commands, without the effort it takes to remember all of the Emacs "magic incantations", for example.
Pro Tons of plugins/add-ons
This makes Vim the definitive resource for every environment (Ruby/Rails, Python, C, etc.), or simply just provides more information in your view.
Pro Excellent performance
As it loads the whole file into RAM, replacing all string occurrences in 100 MB+ files is quick and easy. Every other editor has sort of died during that. It is extremely fast even for cold start. Vim is light-weight and very compact. In terminal, it only uses a small amount of memory and anytime you invoke Vim, it's extremely fast. It's immediate, so much so you can't even notice any time lag.
Pro Can never outgrow it
The fact that very few, if any, people claim to be a "Vim Master" is a testament to the breadth and depth of Vim. There is always something new to learn - a new, perhaps more efficient, way to use it. This prevents Vim from ever feeling stale. It's always fresh.
Pro Has multiple distinct editing modes
Interaction with Vim is centered around several "modes", where purpose and keybindings differ in each.
Insert mode is for entering text. This mode most resembles traditional text entry in most editors.
Normal mode (the default) is entered by hitting ESC and converts all keybindings to center around movement within the file, search, pane selection, etc.
Command mode is entered by hitting ":" in Normal mode and allows you to execute Vim commands and scripts similar in fashion to a shell.
Visual mode is for selecting lines, blocks, and characters of code.
Those are the major modes, and several more exist depending on what one defines as a "mode" in Vim.
Vimtutor is an excellent interactive tutorial for people with no prior experience of Vim. It takes about 30 minutes to complete.
Pro Productivity enhancing modal paradigm
As with all vi-like editors, Vim provides a modal paradigm for text editing and processing that provides a rich syntax and semantic model for composing succinct, powerful commands. While this requires some initial investment in learning how it works in order to take full advantage of its capabilities, it rewards the user well in the long run. This modal interface paradigm also lends itself surprisingly well to many other types of applications that can be controlled by vi-like keybindings, such as browsers, image viewers, media players, network clients (for email and other communication media), and window managers. Even shells (including zsh, tcsh, mksh, and bash, among others) come with vi-like keybinding features that can greatly enhance user comfort and efficiency when the user is familiar with the vi modal editing paradigm.
Pro Flexible feature-set
Vim allows users to include many features found in IDEs and competing editors, but does not force them all on the user. This not only helps keep it lighter in weight than a lot of other options, but it also helps ensure that some unused features will not get in the way.
Pro Has been supported for a long time and will be supported for many years to come
Pro Built-in package management
Starting with Vim 8, a package manager has been built into Vim. The package manager helps keep track of installed plugins, their versions and also only loads the needed plugins on startup depending on the file type.
Pro Asynchronous I/O support
Since Vim 8, Vim can exchange characters with background processes asynchronously. This avoids the problem of the text editor getting stuck when a plugin that had to communicate with a server was running. Now plugins can send and receive data from external scripts without forcing Vim to freeze.
Pro By default in Linux
Pro Donations and support to Vim.org helps children in Uganda through ICCF Holland
Pro Works on Android
Pro Can set up keymapping
Pro If you can use Vim you can also use vi
Pro Vim encourages discipline
If you use Vim long enough, it will rewire your brain to be more efficient.
Pro Version control integration
PyCharm has CVS, Git, Subversion and Mercurial integration.
Pro Catches run-time information when running the code
PyCharm can leverage run-time information when running your application with the built-in debugger to figure out what types can possibly be passed to which functions, etc.
Pro One of the best autocompletion engines around
PyCharm has two types of autocompletion: structural completion and word expansion.
Both types of autocompletion work extremely well, have little to no problems and are quite fast even when loading suggestions on the go.
Pro Free version available
There's a community edition (with limited features) that's free to use. You can also get a 30-day trial of the Professional edition.
Pro Excellent refactoring support
There are many refactoring options including renaming and changing signature across entire projects. It also includes the an ability to preview changes before committing and exclude anything unwanted.
Pro Great pip support
PyCharm offers great pip integration. When opening a project it automatically checks for a
requirements.txt file in the root of the project. If it's found, it checks if all the libraries are available in the interpreter. If one or more libraries are missing, it issues a warning and asks whether you want to install any missing libraries.
Pro Automatically figures out what test to run based on the method the cursor rests at a given time
PyCharm, based on what method or class the cursor rests, can figure out what tests to run and perform them with a keyboard shortcut or two, without breaking up the flow and need to switch to a command line interface.
Pro Excellent integration with debugging tools
All the debugging can be done inside the IDE. Breakpoints in the code can be added using keyboard shortcuts or the mouse. When the code is executed through the debugger a toolbar pops up with all the relevant context needed for the debugging process.
The whole process is smooth and painless and you don't even have to switch windows to do the debugging.
Pro Great for navigating large codebases
PyCharm has amazing code navigation implementations. It supports both goto symbol and goto declaration. The former finds classes, variables, functions, etc by name. While the latter is used by moving the cursor on top of a symbol and by using the mouse or a keyboard combination it finds the declaration of that symbol and takes you there.
Both of these features are extremely helpful when consulting large code-bases and when trying to understand an API written by someone else.
Pro Supports installing third party libraries
No need to go to the command line to download a new package, PyCharm has an easy system to browse, download, and update third party packages.
Pro Sophisticated static analysis tools
Pro Remote debugging over ssh coupled with automatic deployment creates a streamlined workflow
The professional version allows remote debugging over ssh, which together with automatic deployment creates a streamlined workflow.
Pro Built-in Django support
Pycharm has excellent django support, from templating to management commands, it has it all.
Pro Vim mode for people used to Vim commands
IdeaVim supports motion keys, insert mode commands, marks, registers, visual mode commands, vim regexps, key mapping, macros, digraphs, some ex and :set commands. You can find a full comparison in the IdeaVim reference manual.
Pro Free student access to Professional Edition
With a valid .edu address students can register to use the Professional edition and enjoy all the perks of the full paid version for free.
Though it should be mentioned that the with the free student acess you cannot use PyCharm for any commercial purposes, even accepting donations for an open source project.
Pro Easy to optimize code with built-in profiling tools
If you have a yappi profiler installed on your interpreter, PyCharm starts the profiling session with it by default, otherwise it uses the standard cProfile profiler.
Con Difficult learning curve
You'll spend a lot of time learning all the commands and modes supported in Vim. You'll then spend more time tuning settings to your needs. Although once it's tuned to your needs, you can take your
.vimrc to any machine you need and have the same experience across all your computers.
Con High effort to customize
Con Poor support for external tooling
Many plugins depend on optional Python and Lua features, which may or may not be included in whatever binaries are available for your system. And without platform-specific hacks, it is difficult for plugins to operate in the background or use external tooling.
Con Poor feature discoverability
Though basic features like syntax checking, autocompletion, and file management are all available out of the box or with minimal configuration, this is not obvious to new users, who might get intimidated or assume they need to install complex plugins just so they can have this functionality. Other features new users might expect to find embedded in Vim, such as debugging, instead follow a UNIX-style model where they are called as external programs, the output of which might then be parsed by Vim so it can display results. Users not familiar with this paradigm will likely fault Vim for lacking those features as well.
Con Doesn't play nice with the system cut/paste mechanisms
This can be worked around if you disable mouse for insert mode. You can then right-click your terminal and use paste like you would anywhere else in a terminal.
Con Difficult to copy, paste, and delete
Con Foreign keyboards have a hard time on Vim out of the box
A lot of frequently-used keybinds are way harder to access on foreign keyboards because they use different layouts.
For example, Germans use the QWERTZ layout, while French use the AZERTY.
Con User must remember commands instead of point at them in a menu
Con Works poorly out of the box with right-to-left
Con Slow when opening files with very long lines
A lot of very long lines can make Vim take up to a minute to open files, where a few other editors take only seconds to load the same file.
Con Consume brain energy for editing that should be used for logic
Text editing in vim is awesome, but it requires thinking about combination of commands. In other editors, you don't have to think about how to delete this part of code. You just think about how to implement a feature, what is a good design for this code. Even after you get used to using vim, it still requires your brain for editing.
Con Unintuitive mode switching
Con No smooth scrolling
Even with the GUI version, the lines jiggle line-by-line. If you are used to smooth scrolling, this is very annoying, especially when working with larger files.
Con Very high memory usage
Con Does not support inline plots
Spyder supports the inline plot function of matplotlib, not the case for PyCharm.
Con Rendering is awful
Con Vim mode is limited
Con Not suitable to edit project's files written in other languages
Con Some relatively basic functionality requires paid license
Con Odd Autosave "feature", can't be disabled fully
PyCharm automatically saves your files for you, always, without telling you. You can't disable this. There's a way to indicate if a file has been modified via an indicator in the tab (not enabled by default - why?).
If you exit it won't ask you if you want to save the modified file. Totally unintuitive and contrary to all other established workflows. It's ok to try something new, but give users the option to have the "normal" behaviour of any other IDE/editor out there. Can be a deal breaker for those that need to know/have control over when they save their files. (PyCharm offers a history to undo the automatic save, but why force a user to undo something with extra steps that shouldn't have happened in the first place?)
Con Can not be integrated with external linters, like Pylint, Flake8, etc.
Sublime Text has SublimeLinter, Vim has Syntastic, PyCharm has nothing.