When comparing Vim vs SmartGit, the Slant community recommends SmartGit for most people. In the question“What are the best merge applications for Git?” SmartGit is ranked 2nd while Vim is ranked 8th. The most important reason people chose SmartGit is:
SmartGit can be used free of charge by Open Source developers, teachers and their students, or for hobby, non-paid usage.
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 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 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 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 Has been supported for a long time and will be supported for many years to come
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 By default in Linux
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 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 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 Donations and support to Vim.org helps children in Uganda through ICCF Holland
Pro If you can use Vim you can also use vi
Pro Works on Android
Pro Can set up keymapping
Pro Vim encourages discipline
If you use Vim long enough, it will rewire your brain to be more efficient.
Pro Multiple clipboards
It is called "registers".
Pro Free for non-commercial use
SmartGit can be used free of charge by Open Source developers, teachers and their students, or for hobby, non-paid usage.
Pro Uncluttered UI
SmartGit has a rather clean and uncluttered user interface. All the most useful tools and information are displayed at all times or are otherwise just a couple of clicks away.
All repositories are displayed in the sidebar and through a tabbed interface you can view various info about a specific repository (files, branches, branch graph, etc). The most used git commands like
merge are always available on top.
Pro Easy to use
The clean and intuitive UI makes SmartGit very easy even for people with no prior experience with Git, even after reading just a bit on how Git works and what the main commands are.
Pro Great overview of the project/repository's log
SmartGit's log viewer displays the full commit history in a clean UI. This can be filtered to only show commits matching a certain criterion (e.g. branch).
Pro Supports GitFlow
GitFlow provides a consistent development process by defining a strict branching model that is great for managing large projects. SmartGit allows for setting up and integrating into repos that follow this model.
Pro Smart embedded difference viewer
When the changes affect only a few characters in a line of code, the embedded difference viewers in the majority of competitors (such as SourceTree) show the whole line as removed and re-added. SmartGit highlights the characters that have been removed / added, so they are easier to read.
Pro Supports Mercurial & SVN
Apart from Git, SmartGit supports both Mercurial and SVN via a git bridge.
Pro Has the most features and most logical layout
Compared to gitk, git gui, SourceTree, GitKraken.
Pro Auto-detects repositories on disk
You don't have to search all the repositories when trying out SmartGit the 1st time, but it finds all of them magically.
Pro Portable version for Windows is available
SmartGit also has a portable bundle that can be downloaded and can be run from external devices (such as a flash drive for example) or to test-drive without leaving traces on the machine after removing.
Pro Can be integrated with Github, GitLab, Bitbucket, and Atlassian Stash
Using OAuth, you can connect SmartGit with your accounts in Github, GitLab, Bitbucket, or Stash and access the remote repositories there. You can then clone, fork, commit or push to your remote repositories from inside SmartGit. You can also view and manage pull requests for your open source projects from SmartGit.
Pro Auto stash
If normal Git commands would abort because of local modifications, SmartGit can stash them and apply later after the command ran successfully, e.g. a rebase.
Pro Extendable with external tools
External tools (which have a command line support) can be integrated to be used to open/view files, for diff or as conflict solvers. E.g. editors like Notepad++ or VS Code, p4merge to diff images or kdiff3 as diff view/conflict solver.
Pro Syntax coloring for many languages
The built-in compare and conflict solver has syntax coloring with customizable colors.
Pro Every git command is available through the GUI
Not every, but nearly all.
Pro Best submodule workflow on the market
You can easily update submodules from the containing repo, unlike other GUIs that require you to open each repo separately. Saves a lot of time when working on a monorepo managed using submodules.
Pro Great filtering options
The file list view can be tweaked and filtered in many ways (e.g. regex can be used).
Pro Log with fine-grained display of branches
There is no option of just showing the current branch or all branches, but you can select very fine-grained what branches/forks should be displayed.
Pro Can rearrange Repository window and Log window views/panels
This allows great layouts as desired.
Pro Allows rearranging views
If screen space is limited, one can stack some views onto another. 2 layouts are available - "Main" and "Review" - with independent view positions.
Pro Great support
Support responds quickly and they genuinely try to help you! If it's a bug, it will often be fixed within days.
Pro Log: ability to see dangling commits and stash commits
Rebased, but not yet garbage-collected commits can be easily made accessible again, e.g. after a reset hard.
Pro The best multi-repository support
Can make a repo group containing multiple repos; it acts as a meta repo.
Can submit selected files from multiple repos in a repo group in one commit action; uses the same commit message in all the repo commits.
Pro GPG support
GPG in SmartGit makes for added security.
Pro Journal dedicated for current branch history
Showing commits from the current branch, its remote branch and one auxiliary branch. Independent of the that, there is a log window available that allows to view all (other) commits.
Pro Can edit file in workspace or index directly from the compare view
This is very useful when reviewing files before committing and finding a needed quick tweak.
Pro Excellent dark theme
And support for own themes.
Pro Evolution submission program
Pro Can detect issue numbers and links to the issue tracker
Support GitBugTraq file : https://github.com/mstrap/bugtraq
Pro Supports selecting open issues from JIRA
Allows you to select the desired issue, instead of having to do it manually.
Pro Offers life-time updates
One payment, get updates for all future versions.
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
A lot of time and effort is put in to make it specific to your needs.
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 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 Doesn't play nice with the system cut/paste mechanisms
This can be worked around somewhat 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.
But it still doesn't feel right when the rest of your system uses Ctrl-C/Ctrl-V, and you have a system clipboard manager, and so forth.
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 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 User must remember commands instead of point at them in a menu
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 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 Unintuitive mode switching
Con Requires Brain Mode Switching
When editing in vim, you have you use the vim keys; when editing in every other window on your PC, or in Word or Excel or other application, you need to use the standard system key combinations. Learning the vim combinations can actually make you SLOWER at everything else.
Con Proprietary license
Not an open source license.
Con Diff display doesn't show long lines well
If changes are made in very long lines, the diff display is hard to navigate.
Con Currently lacks support for git subtree
It's a useful feature when developing several independent project modules in parallel.
Con Absolute git beginners will find it very complicated
Con Unintuitive UI
At first glance, the sub windows are poorly organized. For example, there isn't an easy way to navigate the files in the repository. It's drastically differently designed than other popular source control clients.
Con Some git functionality has been renamed
In order to preserve the same interface across Git and Mercurial, some naming compromises have been made so that the various VCS it supports are all consistent with each other.