在cygwin vim和windows gvim之间共享vim配置并启动它的最佳方式
我正在尝试设置cygwin环境。 因为我是一个vim用户,所以我想在cygwin和windows上轻松使用它 共享vim配置 我首先关心的是在它们之间共享配置(.vimrc/_vimrc和.vim/_vimrc文件)。 事实上,我最近在github上托管了我的vim配置,并试图通过github更新我的插件 所以我在谷歌上搜索了一下,想找到最好的方法,但没能找到“好的解决方案”(虽然不容易定义…)。 无论如何,很多人似乎都同意这样一个事实,即最好使用windows gvim而不是cygwin gvim(我没能使用cygwin gvim,很可能是因为X问题,但我不想看得更远)。 所以第一个问题:这是真的吗 然后我试图找到一些基于WindowsGVIM的解决方案。 目前,我已链接到win env。在cyg环境中:在cygwin vim和windows gvim之间共享vim配置并启动它的最佳方式,windows,vim,configuration,cygwin,Windows,Vim,Configuration,Cygwin,我正在尝试设置cygwin环境。 因为我是一个vim用户,所以我想在cygwin和windows上轻松使用它 共享vim配置 我首先关心的是在它们之间共享配置(.vimrc/_vimrc和.vim/_vimrc文件)。 事实上,我最近在github上托管了我的vim配置,并试图通过github更新我的插件 所以我在谷歌上搜索了一下,想找到最好的方法,但没能找到“好的解决方案”(虽然不容易定义…)。 无论如何,很多人似乎都同意这样一个事实,即最好使用windows gvim而不是cygwin gv
.vim -> /cygdrive/d/Program Files/Vim/vimfiles/
.vimrc -> /cygdrive/d/Program Files/Vim/_vimrc
但当我从cygwin打开gvim时,它失败了。我想win gvim看不懂cygwin的simlinks
我试图链接vimfiles目录(所以win-side),但是他们win-gvim也找不到任何东西!
我不明白的是,为什么从cygwin启动的win gvim会查看我的cygwin home目录中的文件强>
我读到有可能在windows中声明一个主变量来帮助赢得vim,但我担心它会有副作用
这就是配置文件的配置文件。。。
有人有解决方案吗?
发射vim
此外,要启动gvim,我使用一个别名来转换WinPath中的cigpaths:
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,\" \"$@\""
winfilepath(){
#提取命令
cmd=“$1”
转移
#计算文件路径
allfiles=“”
如果[!-z“$@”];则
读f时
做
newpath=`cygpath-w$f`
allfiles=“$allfiles$newpath”
完成<我将我的点文件保存在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)
窗口端:
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)
这已经成功地为我工作了大约两年了。好的,我终于有时间解决这个问题了!
要找到一个./(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 \"$@\""
#
#计算windows文件路径并在参数中启动命令
#
winfilepath(){
#提取命令
cmd=“$1”
转移
#计算文件路径
allfiles=“”
如果[!-z“$@”];则
读f时
做
newpath=`cygpath-w“$f”`
allfiles=“$allfiles$newpath”
done<我使用GitHub保存我的点文件,而不是像那样使用Dropbox,因此我更喜欢将我的Cygwin设置设置为“权威”版本,并让Windows gVim使用这些设置
说明了如何执行此操作。基于此,并针对HomeHick进行了更新,在Windows中创建一个包含以下内容的%HOMEPATH%\\u 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
我喜欢你的别名来启动gvim。我使用了一种稍有不同的方法,因为我在处理路径中有空格的文件时遇到了问题。你对此有什么问题吗?嗨,不幸的是,我在这个启动器上遇到了问题。我仍然需要调试这个…空格太烦人了!!!你对空格的解决方案是什么?它仍然失败。我犯了错误vim文件夹和我的win user文件夹中的nks,但win gvim抱怨simlink…我不理解win gvim的行为。我认为它仍在尝试从cygwin端打开.vim*!可能我的win设置不同,我使用的是Win7…我刚刚编辑了我的答案。你需要一个a/D开关来打开.vim文件夹链接,所以Windows知道我需要它是一个目录符号链接,而不是一个文件符号链接link@Plouff显然,您确实需要使用windows cmd提示符和mklink
来创建windows链接。如果您使用cygwin的ln-s
来创建_vimrc和vimfiles链接,gvim将在启动时抛出符号链接错误。@Matthew:谢谢您的更新。I stop目前正在使用cygwin。但我可能在不久的将来再次需要它。我希望它能帮助我!