在cygwin-vim和windows-gvim之间共享vimconfiguration并启动它的最佳方法

我正在尝试设置我的cygwin环境。 由于我是vim用户,我想在cygwin和windows上轻松使用它。

共享vimconfiguration

我首先关心的是在它们之间共享configuration(.vimrc / _vimrc和.vim / _vimfiles)。 事实上,我最近在github上托pipe我的vimconfiguration,并试图通过github更新我的插件。

所以我做了一些Googlesearchfind最好的方法,但我没有find一个“好的解决scheme”(虽然不容易定义…)。 无论如何,很多人似乎都认为最好使用windows-gvim而不是cygwin-gvim(由于X的问题,我没有使用cygwin-gvim,但是我不想看得更远)。 所以第一个问题:这是真的吗?!

然后我试图find一些基于windows-gvim的解决scheme。 目前,我已经把赢得环境联系起来了。 在cyg环境:

.vim -> /cygdrive/d/Program Files/Vim/vimfiles/ .vimrc -> /cygdrive/d/Program Files/Vim/_vimrc 

但是当我从cygwin打开gvim的时候失败了。 我认为win-gvim无法读取cygwin的simlink。

我试图链接vimfiles目录(所以赢了方面),但他们赢得gvim无法find任何东西! 我不明白的是为什么从cygwin启动的win-gvim查看我的cygwin home目录中的文件?

我读了它是可以在Windows中声明一个HOMEvariables来帮助win-vim,但我担心它会有副作用…

这就是configuration的configuration… 有人有一个解决scheme?

启动vim

另外,要启动gvim,我使用一个别名来转换winpath中的cigpath:

 winfilepath () { # Extract command cmd="$1" shift # Computes file paths allfiles="" if [[ ! -z "$@" ]]; then while read f do newpath=`cygpath -w $f` allfiles="$allfiles $newpath" done < <(echo "$@" ) fi # Launch command echo "winfilepath: "$cmd $allfiles $cmd $allfiles } alias gvim="winfilepath gvim \"$@\"" alias gvimdiff="winfilepath gvimdiff \"$@\"" # Open Windows explorer with file alias winopen="winfilepath \"explorer.exe /select,\" \"$@\"" 

这是一个很好的实践吗?

感谢您的帮助 :)

Plouff

我把我的dotfiles保存在Dropbox中。 该文件夹是C:\ Dropbox \ dotfiles。 为了在Windows和Cygwin之间使用它们,下面是我所做的:

Cygwin方面:

 ~ $ ln -s /cygdrive/c/Dropbox/dotfiles/.vimrc ~ $ ln -s /cygdrive/c/Dropbox/dotfiles/.gvimrc ~ $ ln -s /cygdrive/c/Dropbox/dotfiles/.vim 

这在cygwin中处理vim(包括终端vim和gtk gvim)

Windows方面:

 C:\Users\Bryan>mklink _vimrc C:\Dropbox\dotfiles\.vimrc C:\Users\Bryan>mklink _gvimrc C:\Dropbox\dotfiles\.gvimrc C:\Users\Bryan>mklink /D vimfiles C:\Dropbox\dotfiles\.vim 

这需要照顾的Windows VIM(同时行VIM和Windows GVIM)

这已经为我成功了大约两年了。

我使用Homeshick将我的点文件保存在GitHub中,而不是像@rossipedia那样使用Dropbox,所以我宁愿将Cygwin设置为“权威”版本,让Windows gVim使用这些设置。

Vim Tips Wiki解释了如何做到这一点。 基于此,为Homeshick更新,在Windows中创建%HOMEPATH%\_vimrc文件,其中包含以下内容:

 set runtimepath+=c:/cygwin/home/username/.homesick/repos/dotfiles/home/.vim source c:/cygwin/home/username/.homesick/repos/dotfiles/home/.vimrc 

或者,更一般地说,让存储库的文件优先于运行时路径中的其他文件:

 let &runtimepath = $HOME . "/.homesick/repos/dotfiles/home/.vim," . &runtimepath source $HOME/.homesick/repos/dotfiles/home/.vimrc 

好的,我终于有时间来解决这个问题! 要找到一个./_(g)vimrc,(g)vim首先在$ HOME目录中查找。 如果找不到_ /。(g)vimrc,它会在$ VIM目录中查找。

由于cygwin设置了$ HOME环境变量,我的win-gvim试图在我的主目录中打开simlink。 所以要加载正确的rc文件,我需要正确设置$ HOME变量。 我结束了这个新的功能:

 # # Compute windows file path and launch command in argument # winfilepath () { # Extract command cmd="$1" shift # Computes file paths allfiles="" if [[ ! -z "$@" ]]; then while read f do newpath=`cygpath -w "$f"` allfiles="$allfiles $newpath" done < <(echo "$@" ) fi # Launch command echo "winfilepath: "$cmd $allfiles $cmd $allfiles } ####### # Launching VIM ####### winvim () { # HOME env var management myhomebak=$HOME export HOME="/cygdrive/d/Program\ Files/Vim" # Extract command cmd="$1" shift winfilepath $cmd "$@" export HOME=$myhomebak } alias gvim="winvim gvim \"$@\"" alias gvimdiff="winvim gvimdiff \"$@\"" 

结合Bryan Ross的解决方案,我现在可以分享我的配置! 谢谢你的帮助。

现在我需要解决这个空白的问题……