Vim Tips Wiki

Run native-Windows Vim from cygwin without a wrapper

1,624pages on
this wiki
Add New Page
Talk0 Share
Tip 972 Printable Monobook Previous Next

created 2005 · complexity basic · author Tony Mechelynck · version 5.7

To run native-Windows Vim from cygwin, just create one or more of the following aliases (for instance in ~/.bash_profile). You may grab them by copy&paste via the clipboard:

alias vim='VIM=`cygpath -d $VIM` HOME=`cygpath -d $HOME` `cygpath -u $VIM`/vim63/vim.exe'
alias vimd='VIM=`cygpath -d $VIM` HOME=`cygpath -d $HOME` `cygpath -u $VIM`/vim63/vimd.exe'
alias gvim='VIM=`cygpath -d $VIM` HOME=`cygpath -d $HOME` `cygpath -u $VIM`/vim63/gvim.exe'
alias gvimd='VIM=`cygpath -d $VIM` HOME=`cygpath -d $HOME` `cygpath -u $VIM`/vim63/gvimd.exe'

alias v7vim='VIM=`cygpath -d $VIM` HOME=`cygpath -d $HOME` `cygpath -u $VIM`/vim70aa/vim.exe'
alias v7vimd='VIM=`cygpath -d $VIM` HOME=`cygpath -d $HOME` `cygpath -u $VIM`/vim70aa/vimd.exe'
alias v7gvim='VIM=`cygpath -d $VIM` HOME=`cygpath -d $HOME` `cygpath -u $VIM`/vim70aa/gvim.exe'
alias v7gvimd='VIM=`cygpath -d $VIM` HOME=`cygpath -d $HOME` `cygpath -u $VIM`/vim70aa/gvimd.exe'


  • In each alias, the whole string after the first = is surrounded by single quotes
  • This assumes that $VIM and $HOME are correctly defined in the master environment. How to set them is outside the scope of this tip.
  • Today (while I'm writing this) the current Vim versions are 6.3 (stable) and 7.0aa (under development). Sooner or later there will be a newer version. Just change the last directory name in the above aliases to reflect it.
  • See 'man cygpath' for more info.


  • Due to spaces in directory names the aliases should be in the form:
alias gvim='VIM=`cygpath -d "$VIM"` HOME=`cygpath -d "$HOME"` "`cygpath -u "$VIM"`/vim63/gvim.exe"'
  • Make sure .bash_profile is saved with 'fileformat' set to "unix"
  • If the installation path of the VIM is in your $PATH, you don't need to create an alias to run gvim. However, you'll still need a wrapper to correctly translate the filepath you pass in as a argument to gvim.

e.g. gvim ~/.bash_profile won't work without doing something like

    gvim `cygpath -w ~/.bash_profile`

I've created this Bash function that handles

  • Vim command line options e.g. -p
  • Creates files with any name (e.g. .My.DotFile). That's why I don't use the -d option to cygpath
  • Supports file path names with spaces

Suggestion for improvements most welcome

Alecclews 06:33, 30 January 2009 (UTC)

Some more work is required to correctly handle vim binary options: e.g. gvim -c /pattern/ myfile should not convert /pattern to c:/cygwin/pattern. Hence the other fully wrapped solution that also handles symbolic links, Windows' UNC pathnames, and environment variables -- cygpath may be better at supporting these particular situations with latest Cygwin versions.
BTW, shouldn't we merge the two tips?
--Luc Hermitte 18:12, 30 January 2009 (UTC)

Ad blocker interference detected!

Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Also on Fandom

Random Wiki