Answers:
Cygwin主要用于在Windows之上提供类似Linux的环境。它最适合为Cygwin编译的程序。它可以直接使用本机Windows程序,但你必须要小心。
Cygwin的一个特性是它试图使Windows文件系统看起来像一个典型的Linux文件系统,例如,程序在/ usr / bin下。Cygwin程序不是指C:驱动器,它们是指/ cygdrive / c。(有些Cygwin程序理解“C:”但这些都是例外。)当您的主目录出现在Windows的C:\ cygwin \ home下时,它出现在Cygwin的/ home下。这意味着在Cygwin程序和Windows程序之间传递完整路径名称可能很棘手:Windows程序不了解Cygwin完整路径名,而Cygwin程序通常不了解Windows完整路径名。有一个Cygwin实用程序cygpath可以在Windows和Cygwin路径之间进行转换,但您必须根据需要自行插入该级别的转换。
我不知道将Cygwin程序与Windows程序连接的问题的一般解决方案。最佳解决方案取决于您要做的事情,您希望在Linux世界中生活多少以及生活在Windows世界中,以及您需要使用的程序。
如果您打算从Cygwin命令行使用Mercurial,Vim,Git等,我建议您安装这些程序的Cygwin版本。您可以在系统上同时使用Windows和Cygwin版本,但必须小心PATH。
我尝试配置Windows gvim以使用Cygwin shell,最后放弃了。我现在在从GUI打开文件时使用Windows gvim,在从命令行打开文件时使用Cygwin vim。Windows Vim中有太多地方需要将Windows OS API的约定与外部程序的Cygwin约定相匹配。也就是说,使用相同的用户配置文件很容易。在Cygwin bash shell中:
ln -s /cygdrive/c/Documents\ and\ Settings/username/_vimrc ~/.vimrc
ln -s /cygdrive/c/Documents\ and\ Settings/username/vimfiles ~/.vim
你只需要确保所有这些文件都有Unix行结尾,并使用d2u
那些没有。Cygwin的Vim(任何Unix Vim)都期望Unix行结束; Windows Vim接受Unix或DOS行结尾。
我已经使用了Cygwin,但我不是专家。以上只是反映了我的经历。
make
Cygwin中应该使用我的Windows G ++二进制...
通过确保这些程序位于操作系统的PATH环境变量中,可以解决大多数问题。
根据您拥有的Windows版本,即:
hg
,git
而且gvim
他们似乎工作(他们已经在我的PATH中)。但是vim
给我一个错误“ / cygdrive / c / msysgit / msysgit / bin / vim:第2行:$'\ r':找不到命令/ cygdrive / c / msysgit / msysgit / bin / vim:第3行:/ share / vim / vim73 / vim:没有这样的文件或目录 “为什么要查找/cygdrive/c/msysgit
?
gvim
工作正常,他们在同一个目录中。
/share/vim/vim73/vim
。这可能不是一条有效的道路。它似乎\r
也是一个无效的命令。\r
你跑命令时通过了吗?
我写了一个脚本来帮助修复一些与windows和cygwin(路径)交互有关的烦人问题。
makewin() {
eval "function $1 {
# Don't taint locals
local FN
declare -a FN
local x
# For each option
for x in \"\${@}\"
do
# Fix the path to "windows"
FN[\"\${#FN[*]}\"]=\`cygpath -w \"\$x\"|sed 's/ /\\\\ /g'\`
done
# Run the Command
\"$2\" \"\${FN[@]}\" >/dev/null 2>/dev/null &
}";
}
然后我为我要修复的每个命令运行它
makewin vi /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim74/gvim.exe
makewin np /cygdrive/c/Program\ Files\ \(x86\)/Notepad++/notepad++.exe
它为我想要的命令创建一个函数别名来修复参数路径问题。这被添加到我的〜/ .bash_profile中