web-dev-qa-db-ja.com

Cygwin:Windowsにすでにインストールされているプログラムを使用していますか?

Cygwinをインストールしたばかりですが、その動作について少し混乱しています。 C:\cygwin\homeに「ホーム」フォルダがあるようです。 Mercurial、Vim、Gitなどをそれぞれのインストーラーを使用してWindowsマシンにインストールしてセットアップしました。 Cygwinにそれらのプログラムとそれらの設定ファイル(_vimrcなど)を使用させるにはどうすればよいですか?

5
john2x

Cygwinは、主にWindows上にLinuxのような環境を提供することを目的としています。 Cygwin用にコンパイルされたプログラムで最適に動作します。ネイティブのWindowsプログラムと直接連携できますが、注意が必要です。

Cygwinの機能の1つは、Windowsファイルシステムを一般的なLinuxファイルシステムのように見せようとすることです。たとえば、プログラムは/ usr/binの下にあります。 CygwinプログラムはC:ドライブを参照せず、/ cygdrive/cを参照します。 (一部のCygwinプログラムは「C:」を理解しますが、それらは例外です。)ホームディレクトリはWindowsのC:\ cygwin\homeの下に表示されますが、Cygwinの/ homeの下に表示されます。つまり、CygwinプログラムとWindowsプログラムの間でフルパス名を渡すのは難しい場合があります。WindowsプログラムはCygwinフルパス名を理解せず、Cygwinプログラムは通常Windowsフルパス名を理解しません。 WindowsパスとCygwinパスの間で変換できるCygwinユーティリティcygpathがありますが、必要に応じてそのレベルの変換を自分で挿入する必要があります。

CygwinプログラムとWindowsプログラムとのインターフェースの問題に対する一般的な解決策を知りません。最善の解決策は、何をしようとしているのか、Linuxの世界とWindowsの世界にどれだけ住みたいか、そして使用する必要のあるプログラムによって異なります。

CygwinコマンドラインからMercurial、Vim、Gitなどを使用することを計画している場合は、これらのプログラムのCygwinバージョンをインストールすることをお勧めします。システムにはWindowsバージョンとCygwinバージョンの両方を含めることができますが、PATHに注意する必要があります。

Cygwinシェルを使用するようにWindowsgvimを構成しようとしましたが、やっと諦めました。 GUIからファイルを開くときはWindowsgvimを使用し、コマンドラインからファイルを開くときはCygwinvimを使用するようになりました。 Windows Vim内には、Windows OSAPIの規則を外部プログラムのCygwinの規則と一致させる必要がある場所が多すぎます。とはいえ、両方に同じユーザー構成ファイルを使用するのは簡単です。 Cygwin bashシェルの場合:

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をかなり使用しましたが、専門家ではありません。上記は私の経験を反映しています。

3
garyjohn

ほとんどの問題は、それらのプログラムがオペレーティングシステムのPATH環境変数に含まれていることを確認することで解決されます。

お使いのWindowsのバージョンに応じて、次のようになります。

  1. スタートをクリック
  2. [コンピューター]または[マイコンピューター]を右クリックします(または[コントロールパネル]から[システム設定]に移動します)
  3. [詳細設定]タブまたは[システムの詳細設定]をクリックします
  4. 「環境変数」をクリックします
  5. パスまでスクロール
  6. 必要なプログラムを含むフォルダーのパスを追加します(たとえば、C:\ vim72;をPATH変数の先頭に追加します。cygwinに「vim」と入力すると、vimが実行されます(セミコロンが重要です))。
2
Joseph Hansen

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に追加されます

1
Mike Sandler