Cygwin:使用Windows中已安装的程序?


5

我刚刚安装了Cygwin,我对它是如何工作有点困惑。我看到我有一个“家”文件夹C:\cygwin\home。我已经使用各自的安装程序在我的Windows机器上安装并设置了Mercurial,Vim,Git等。我如何让Cygwin使用这些程序,以及它们的配置文件(_vimrc等)?


好问题,我希望将mingw64-gcc软件包与本机windows安装版本进行比较。
jiggunjer 2015年

Answers:


3

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,但我不是专家。以上只是反映了我的经历。


所以如果我已经在windows中安装了mingw-gcc,我实际上也不需要它的cygwin版本?使用makeCygwin中应该使用我的Windows G ++二进制...
jiggunjer

2

通过确保这些程序位于操作系统的PATH环境变量中,可以解决大多数问题。

根据您拥有的Windows版本,即:

  1. 点击开始
  2. 右键单击计算机或我的电脑(或通过控制面板转到系统设置)
  3. 单击“高级”选项卡或“高级系统设置”
  4. 点击“环境变量”
  5. 滚动到PATH
  6. 添加包含所需程序的文件夹的路径(例如将C:\ vim72;添加到PATH变量的开头,现在如果在cygwin中键入“vim”,则vim应该执行(ps分号很重要))

谢谢。我只是尝试了hggit而且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
john2x 2011年

您可能需要转到该目录(/ share / vim / vim73 / vim)并确保其中包含vim.exe。如果没有,您必须添加实际保存vim.exe的目录。换句话说,如果vim.exe位于C:\ vim \ vim27 \ vim.exe,则将c:\ vim \添加到PATH不一定有效。确保执行C:\ vim \ vim27。
约瑟夫·汉森

gvim工作正常,他们在同一个目录中。
john2x 2011年

这是非常奇怪...: - /我会环顾四周
约瑟夫·汉森

在回答你的评论问题时,/ cygdrive / c /是来自cygwin和msysgit的C:\的路径我相信是一些内部的cygwin事情。这似乎不是问题,因为它可以进入下一个引用/share/vim/vim73/vim。这可能不是一条有效的道路。它似乎\r也是一个无效的命令。\r你跑命令时通过了吗?
约瑟夫·汉森

1

我写了一个脚本来帮助修复一些与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中

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.