Technology moves fast! ⚑ Don't get left behind.🚢 Subscribe to our mailing list to keep up with latest and greatest in open source projects! πŸ†

Subscribe to our mailing list


The official Vim repository

Subscribe to updates I use vim

Statistics on vim

Number of watchers on Github 11933
Number of open issues 652
Average time to close an issue 3 days
Main language C
Open pull requests 205+
Closed pull requests 369+
Last commit about 1 year ago
Repo Created over 3 years ago
Repo Last Updated about 1 year ago
Size 76.9 MB
Organization / Authorvim
Page Updated
Do you use vim? Leave a review!
View open issues (652)
View vim activity
View on github
Fresh, new opensource launches πŸš€πŸš€πŸš€
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating vim for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?) for version 8.0 of Vim: Vi IMproved.

Build Status Coverage Status Coverage Status Appveyor Build status Coverity Scan Debian CI

What is Vim?

Vim is a greatly improved version of the good old UNIX editor Vi. Many new features have been added: multi-level undo, syntax highlighting, command line history, on-line help, spell checking, filename completion, block operations, script language, etc. There is also a Graphical User Interface (GUI) available. Still, Vi compatibility is maintained, those who have Vi in the fingers will feel at home. See runtime/doc/vi_diff.txt for differences with Vi.

This editor is very useful for editing programs and other plain text files. All commands are given with normal keyboard characters, so those who can type with ten fingers can work very fast. Additionally, function keys can be mapped to commands by the user, and the mouse can be used.

Vim runs under MS-Windows (NT, 2000, XP, Vista, 7, 8, 10), Macintosh, VMS and almost all flavours of UNIX. Porting to other systems should not be very difficult. Older versions of Vim run on MS-DOS, MS-Windows 95/98/Me, Amiga DOS, Atari MiNT, BeOS, RISC OS and OS/2. These are no longer maintained.


You can often use your favorite package manager to install Vim. On Mac and Linux a small version of Vim is pre-installed, you still need to install Vim if you want more features.

There are separate distributions for Unix, PC, Amiga and some other systems. This file comes with the runtime archive. It includes the documentation, syntax files and other files that are used at runtime. To run Vim you must get either one of the binary archives or a source archive. Which one you need depends on the system you want to run it on and whether you want or must compile it yourself. Check for an overview of currently available distributions.

Some popular places to get the latest Vim:


If you obtained a binary distribution you don't need to compile Vim. If you obtained a source distribution, all the stuff for compiling Vim is in the src directory. See src/INSTALL for instructions.


See one of these files for system-specific instructions. Either in the READMEdir directory (in the repository) or the top directory (if you unpack an archive):

README_ami.txt      Amiga
README_unix.txt     Unix
README_dos.txt      MS-DOS and MS-Windows
README_mac.txt      Macintosh
README_vms.txt      VMS

There are other README_*.txt files, depending on the distribution you used.


The Vim tutor is a one hour training course for beginners. Often it can be started as vimtutor. See :help tutor for more information.

The best is to use :help in Vim. If you don't have an executable yet, read runtime/doc/help.txt. It contains pointers to the other documentation files. The User Manual reads like a book and is recommended to learn to use Vim. See :help user-manual.


Vim is Charityware. You can use and copy it as much as you like, but you are encouraged to make a donation to help orphans in Uganda. Please read the file runtime/doc/uganda.txt for details (do :help uganda inside Vim).

Summary of the license: There are no restrictions on using or distributing an unmodified copy of Vim. Parts of Vim may also be distributed, but the license text must always be included. For modified versions a few restrictions apply. The license is GPL compatible, you may compile Vim with GPL libraries and distribute it.


Fixing bugs and adding new features takes a lot of time and effort. To show your appreciation for the work and motivate Bram and others to continue working on Vim please send a donation.

Since Bram is back to a paid job the money will now be used to help children in Uganda. See runtime/doc/uganda.txt. But at the same time donations increase Bram's motivation to keep working on Vim!

For the most recent information about sponsoring look on the Vim web site:


If you would like to help making Vim better, see the file.


The latest news about Vim can be found on the Vim home page:

If you have problems, have a look at the Vim documentation or tips:

If you still have problems or any other questions, use one of the mailing lists to discuss them with Vim users and developers:

If nothing else works, report bugs directly: Bram Moolenaar

Main author

Send any other comments, patches, flowers and suggestions to: Bram Moolenaar

vim open issues Ask a question     (View All Issues)
  • over 2 years macros/mappings and 'keymap' or :lmap when iminsert=1 and/or imsearch=1
  • over 2 years netrw: Unexpected behaviour when g:netrw_altfile is set to 1
  • over 2 years pi_paren doesn't update highlights of other windows
  • over 2 years Job sending output to buffer raises "E916: not a valid job"
  • over 2 years Popup menu does not default to below the cursor
  • over 2 years β€œBuffer contents equals file contents.” … then delete it!
  • over 2 years [feature] An option to deal long filename in tabline
  • over 2 years Errors in test
  • over 2 years html indent script problem
  • over 2 years Systemverilog indentation broken
  • over 2 years DTD syntax highlighting problem (file `syntax/dtd.vim`)
  • over 2 years GVim font selection dialog seems to be unstable
  • over 2 years Mapping backspace while typing Korean
  • over 2 years C++ Syntax randomly turned off partially
  • over 2 years Customize fold column signs
  • over 2 years Feature request: let <c-x>s act on the current word only
  • over 2 years 64-bit gvim torn-off submenus won't pop up
  • over 2 years Feature request: Please provide an AppImage for gVim
  • over 2 years cpp syntax highlighting bug
  • over 2 years FocusGained/Lost and Beval
  • over 2 years gtk3 gui substantially slower than gtk2
  • over 2 years Can not use vim8's job-feature with other terminal app.
  • over 2 years syntax/bibtex.vim: breaks if for example howpublished = {{ \$ }}
  • over 2 years Highlight files /etc/sudoers.d/* as filetype=sudoers
  • over 2 years Ctrl-o u in insert mode doesn't redraw screen immediately
  • over 2 years Allow to control expansion of command line abbreviations
  • over 2 years gvim menu items do not work on remote x11
  • over 2 years Diff mode fails to highlight this difference
  • over 2 years taglist func can not report tag list after upgrade vim 8.0.45
  • over 2 years Syntax highlighting not showing up when a session is restored
vim open pull requests (View All Pulls)
  • Avoid highlighting attributes as builtins.
  • Update dockerfile syntax
  • fix groovy multi-line comment highlight bug
  • Remove "margin" from MATLAB syntax definition.
  • Adding RelLineAbove and RelLineBelow highlight groups
  • closed, errors, encoding added to stdout and stderr
  • head filename modifier: go beyond the current directory
  • :oldfiles /pattern/ list only files that match a pattern
  • allow KEYMAP with @a
  • Add %check script section.
  • fix flick in the popup menu by SolaWing patch
  • Support defining compilation date in $SOURCE_DATE_EPOCH
  • propose vim as manpager that syntax highlights and follows symlinks
  • Compatibility for ease build with msvc
  • Added options used by mod_auth_radius
  • Minor update of syntax files
  • AVR assembler syntax file
  • Add "Don't give the file editing message" flag in shortmess option.
  • Add options to change alignment of number/relativenumber
  • Fix E315 when switching buffers
  • support --nofork on the Windows batch files (fix issue #658)
  • Added missing array_column into PHP syntax highlighting.
  • support ICCs consisting of more than 1 character
  • Corrects typo to make the word "messages" plural.
  • Add silent install option to gvim.nsi
  • set C locale to get RFC822 formatted date
  • Escape file names in compiler's makeprg, add % to xmllint
  • Update spec syntax
  • Add GUI option 's' to prevent resizing when tab bar is shown, vert split happens,etc
  • Naive attempt at fixing issue 696
  • Ring a bell if search hit top/bottom and is continuing
  • Update documentation in map.txt.
  • fix '%' matching for php
  • {debsources,debchangelog}.vim: Add yakkety as a known release.
  • Document packages in list-features
  • Fixe to have errorformat correctly displayed for ADA
  • Add skip expressions to search() function
  • Add watchexpressions to Vims debug feature.
  • Add bvimgrep command
  • add variable tabstop feature
  • Better support for `g:netrw_sort_options`
  • syntax: dockerfile: Add LABEL, ARG and STOPSIGNAL commands
  • new command :xrestore to restore X11 connection after X11 server restart
  • cscope improvements
  • ftplugin/python.vim: improve matching for ]] [[ ]m [m
  • Update matlab.vim to add commenting support
  • Add functions to get information about buffers, windows and tabpages
  • Extend argv() and argc() functions to return argument list entries for any window
  • Add command to filter quickfix entries
  • Fixes #825
  • Problem: CMake errors are not shown correctly in quickfix.
  • Fix drawing background with &termguicolors
  • Recognize `.webmanifest` files as JSON
  • :command output delimited by single space
  • Fix completeopt noinsert select problem
  • Add getqfwinid() command.
  • Added .pythonstartup detection as Python file.
  • Make test_listlbr_utf8 succeed when textwidth != 0
  • Correct spelling of MinGW
  • try to guess if a terminal has an xterm-like mouse
  • Add support for "match" textobjects
  • Test cscope interface
  • Fix jumps in matchit.vim
  • Orthographic corrections by Teodora Berova in
  • Fix :find when search pattern starts with starstar
  • Increase support for Docker keywords and filenames
  • Fixed typos, improved translation consistency and formatting.
  • runtime/indent/xml.vim: fix indentation when tags start with an undrscore
  • Add larger Windows icon sizes
  • st (simple terminal from supports xterm-style mouse
  • include operator pending mode in pythom motion mappings
  • JavaScript syntax: add for...of loop highlighting
  • Add support for storing context in a quickfix/location list
  • Add columnspace option
  • add SearchHitBoundary autocommand group
  • Add *.apk to g:zipPlugin_ext.
  • Deverse
  • getcompletion() can get cmdline-completion result
  • Fix systemlist()
  • fix ld file K,M will be highlight even not size
  • spec syntax: support %_unitdir in spec.vim
  • Compile with explicitly specified path first
  • Fix #696 complicated delete problem: continues #700
  • Allow netrw to browse to root directories on Windows
  • [GvimExt] fix the memory leak
  • Update de.po
  • Improve README for mac
  • syntax: Add support for JavaScript template strings
  • find_tags: Use a hashtab_T instead of garray_T to collect tag results
  • Syntax folding optimization
  • Ordering of tags in result of taglist call.
  • Fix widget sizing on current Gtk+ 3.22 branch
  • add Github Issue Template
  • Rename to
  • Update table in 'compatible' to match code behaviour
  • implement envs item for job_start that pass to the environment variables to new process.
  • Make system() and systemlist() accept a buffer id.
  • Handling of CamelCase in the spell checker
  • Update fstab.vim to allow PARTLABEL
  • Add support for c++17 nested namespace syntax
  • Add GHC Haskell compiler plugin
  • test92 and test93 convert to new-style test
  • Update syntax bindzone
  • add small inner trim function
  • add rand(), srand()
  • Add direct MODIFIED_BY for MSVC build and support for chevrons in Windows cmd when building
  • Introduce pythonhome and pythonthreehome options
  • Add new HTML 5 tags (used the official HTML 5.1 W3C Recommendation, 1 November 2016:
  • Fix parallel make of object files
  • Fix for #1255: add STATIC_WINPTHREAD to allow static winpthread.
  • an action help language CTRL-] in tag.c fixed
  • New Feature: Add new regexp classes
  • Import rust files
  • WIP: matchparen: delayed/lazy display via timers
  • Adjust marks when adding a new line to the end of buffer if in diff mode
  • Add v:argv variable
  • git diff index line not highlighted
  • fix typo
  • htmlcomplete.vim: Fix crash in CompleteTags() (Fix issue #1302)
  • Fix wrong background color when scrolling down
  • Resource files for Latvian language
  • Add commentstring to matlab.vim
  • Added sbt syntax highlighting.
  • Fix russian-jcukenwintype.vim to actually match the Cyrillic jcuken windows typewriter keymap
  • Introduce 'uselast' option for 'switchbuf'.
  • Added test for % movement.
  • Add the tagfunc feature
  • Add parameter to disable check timestamps
  • Modify Test_edit_complete_very_long_name
  • pythoncomplete: quash possible messages from evaling user code
  • [WIP] Give user a possibility to suppress "reading from stdin" message
  • Improve parsing of Urxvt and SGR mouse escape codes.
  • runtime: add sshconfig to filetypes
  • Updating systemverilog indent file to include forever keyword.
  • skip failing configure checks during cross-compile builds
  • fix indent of java class with class annotations
  • Change the translations to show a valid command that exits vim
  • Update Ratpoison syntax file
  • Handle SIGUSR1 signal by calling the corresponding vimscript function
  • Fix 'bg' detection when assigning to Normal
  • Makes a snappy package.
  • Fix character class detection for NFA regexp
  • BUG: ftdetect in pack dirs are run too late (fixes #1679)
  • float2nr() does not work properly in the vicinity of the pow(2,63) and the -pow(2,63)
  • Make :stag observe the 'switchbuf' option
  • BUG: Pack dirs not yet in 'rtp' when normal plugins run
  • Add Gruvbox colorscheme
  • Add support for filetype detection of Clojure scripts
  • Fix: the script exited accidentally in some cases
  • Optimize DirectX rendering
  • New & improved Pike syntax colouring.
  • fix typo
  • WIP: Fix passed timeout with backwards searchpair
  • tags: parse "line:" and use it for search
  • ex: switch to line buffering in silent mode
  • make manpager.vim self-contained
  • Console event of vim.exe erases the screen
  • win32: Make installer faster
  • Add neighbor window information to getwininfo()
  • Use AC_PATH_TOOL to find pkg-config, so it handles cross-compiling
  • Correctly use rb_protect in rubyf
  • Fix TabClosed: trigger it in win_close_othertab
  • Convert test15, test36 and test50 into new style tests
  • win32: Fix D&D by disabling HighEntropyVA
  • fix crash with empty argument for term_start()
  • Hunspell
  • Fix: profiling for condition lines (e.g. `elseif`)
  • add TerminalOpen event
  • fix encoding in print-document-name
  • Feature proposal: Position expressions with offset suffix
  • Add readdir()
  • fixed a few small bugs with the gui find/replace dialog
  • Allow independent coloring of underline in supported terminals
  • Support CSS Color Module Level 4 RGBA hex format
  • s/overriden/overridden/
  • added TextChangedP to notify when text changed if pumvisible
  • Change vim_clear() to macro and rename to VIM_CLEAR()
  • Update lisp.vim
  • Fix small error in doc for nocompatible
  • Patch to add a function to get the jump list
  • Allow completion functions to associate data with completion items
  • Fixed E806 with Athena or Motif GUIs when using float feature
  • Fix highlighting of jargon marks
  • Handle changes to the "Xft/DPI" setting
  • options: improve copying of buffer-local value of window option
  • Clear termguicolors guibg with :hi * guibg=NONE
  • Add solarized colorscheme with termguicolors support
  • Create pcmk.vim
  • Add escaping for arguments on Cygwin system(scp and rsync)
  • Updated with proper indentation rules.
  • The item 'vcon' is not described
  • Fix file descriptor leaks
  • patch 8.0.1521: shell arithmetic not parsed correctly
  • :options buffer should be fixed
  • #2623: Syntax highlighting for CSS3 feature queries(AT supports)
  • Add relativenumberformat option
  • Repeat-count in screen-dump is confusing
  • Proposal: filter the tests using a make-variable
  • Do not wait for return if input is not a TTY
  • Add async, await and template strings for Javascript syntax.
  • Fix cmake indent
  • Add checking the terminal is xterm compatible
  • Fix SEGV when do `bwipe` in callback
  • Update Perl runtime files
vim questions on Stackoverflow (View All Questions)
  • What's the most efficient way to copy and paste brackets and their contents in vim?
  • What is vim recording and how can it be disabled?
  • Enclosing in parentheses with Vim
  • How to delete a word and go into insert mode in Vim?
  • How to merge in vim an edited file when the file has also been edited externally?
  • Vim Issue With Changing Color Schemes
  • vim, right way to indent css and js inside html
  • How to put regex match to the end of line in vim?
  • iterm on remote ssh shows ls in color but not vim (python)
  • Vim - how to join lines using matching pattern
  • How to save as a new file and keep working on the original one in Vim?
  • Text editors with vim mode?
  • Emacs delete up to the beginning of next word (like Vim 'dw')?
  • VIM: is there an easy way to manage Visual Studio solutions / makefile projects from Vim?
  • VIM symbol ^A in log file
  • Writing a vim function to insert a block of static text
  • How to remove <code style="display: none;"> </code> from HTML in Vim?
  • How to check if VirtualApp is started in .NET VIM api
  • Can vim-go completion third party framework
  • Why is vim stripping the carriage return when I copy a line to another file?
  • vim syntax doesn't work at all
  • "Find next" in vim
  • Enabling Ctrl-s in item2, tmux and vim
  • Match and highlight two sets of columns in VIM
  • What does "skip it to the left" mean in Vim?
  • Reorder data in Vim
  • Automatically indent file after command in Vim
  • Vim start searching from current line
  • "No terminal library found error" during vim configure
  • What's a quick way to comment/uncomment lines in Vim?
vim list of languages used
More projects by vim View all
Other projects in C