Cygwin初心者がCygwinを入れてみて気になったことメモ
開発環境をCygwinで構築する事になったので、ほぼ初めてCygwinを入れてみました。昔に入れたことあったけど、なんか馴染めずに直ぐ消しちゃった記憶があります。今回は使っていかざるを得ないし、前より使いやすくなってるみたいなので、入れてみて気になった事をメモしておきます。
vim(vi)について
viとvimは違う
$ type vi vi is /usr/bin/vi $ ls -l /usr/bin/vi lrwxrwxrwx 1 myuser Domain Users 11 3月 2 15:50 /usr/bin/vi -> vim-nox.exe $ ls /usr/bin/vim /usr/bin/vim $ ls -l /usr/bin/vim lrwxrwxrwx 1 myuser Domain Users 21 3月 2 13:47 /usr/bin/vim -> /etc/alternatives/vim $ ls -l /etc/alternatives/vim lrwxrwxrwx 1 myuser Domain Users 17 3月 2 15:50 /etc/alternatives/vim -> /usr/bin/gvim.exe
この様に、vi
とvim
で違うものが動いています。これはsetup.exeでどのパッケージを入れたかによっても変わるかもしれません。
alias vi='vim'
vim-noxというのが良くわからないので、.bashrc
に上記を追加して、gvimに統一することにしました。後々になってvim-noxを使ってみたら、ちゃんと使えたけど、.vimrc
に色々書く前は、Cygwinのvimの動きがなんか変に思えたので、とりあえず統一してしまいたかったというのもあります。
.vimrcの有無で動きが変わる
前述のとおりCygwinでのVimは、CentOS*1で起動するVimとはちょっと動きが違います。特に挿入モードで矢印キーを使うと、改行されてA
、B
、C
、D
が入力されるという動きをします。.vimrc
を内容は空で作ったら、なぜかこれが改善されて、挿入モードでも矢印キーが使えるようになりました。
ただ、その後.vimrc
に色々書いていると、また問題が再発したりして、最終的にはこの問題のための設定を.vimrc
に書くことになりました。
CentOSは自分の.vimrc
がなくても、まだ違和感なく使えた記憶があるけど、Cygwinのvimはちょっと使いにくかったです。どっかのディストリビュージョンで、rootでviを起動した時に、自分の.vimrc
が読まれなくてこんな動きになったような記憶が、若干あります。CentOSだと一般ユーザーはvimでrootだとviなんだっけ?
:scriptnames
1: ~/.vimrc 2: /usr/share/vim/vim73/plugin/getscriptPlugin.vim 3: /usr/share/vim/vim73/plugin/gzip.vim 4: /usr/share/vim/vim73/plugin/matchparen.vim 5: /usr/share/vim/vim73/plugin/netrwPlugin.vim 6: /usr/share/vim/vim73/plugin/rrhelper.vim 7: /usr/share/vim/vim73/plugin/spellfile.vim 8: /usr/share/vim/vim73/plugin/tarPlugin.vim 9: /usr/share/vim/vim73/plugin/tohtml.vim 10: /usr/share/vim/vim73/plugin/vimballPlugin.vim 11: /usr/share/vim/vim73/plugin/zipPlugin.vim
空の.vimrc
の時の:scriptnames
です。.vimrc
が空だから当然かもしれないけど、filetype.vim、ftplugin.vim、indent.vim、syntax.vimあたりが読み込まれてません。
apt-cyg
$ apt-cyg find vi
You must install wget, tar, gawk and bzip2 to use apt-cyg.
Cygwinのインストーラーであるsetup.exeを使うと、パッケージのインストール/アンインストールが出来るけど、yumやaptの様にコマンドラインから使えるGoogle Code Archive - Long-term storage for Google Code Project Hosting.があります。apt-cygは自分で入れないとだけど、入れたら他のLinuxの様にコマンドラインからパッケージ入れられます。ただ、上記のパッケージは事前にsetup.exeで入れておく必要があるようです。
あと、名前似てるけどGoogle Code Archive - Long-term storage for Google Code Project Hosting.というのもあるっぽい。
Cygwin Terminal
C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico -
Cygwin Terminalのショートカット、実態はmintty.exe。
昔Cygwinを入れた時は、確かWindowsのコマンドプロンプトを使わせさせられて、すっごい不便だった様な気がします。今はminttyというputtyベースのターミナルエミュレーターがデフォルトになっていました。大体、puttyでリモートのLinuxを使ってるときのような操作感です。
タイトルバーのアイコンを右クリックしてOptionsで設定ができます。ここでの設定はCygwin側のホームディレクトリに.minttyrc
という名前で保存されます。
環境変数
PATH
WindowsのPATHがCygwinのPATHにもなってます。なのでJDKとかJREとかのPATHも、Windows側で設定しておけば、Cygwin上でjavac
コマンドなどが使えます。JDK/JREは複数のバージョンが入ってると、java.exe
やjavaw.exe
など、%JAVA_HOME%\bin
にある一部コマンドが、C:\WINDOWS\system32
にコピーされたりするようです。これの動きが良く分からず、JDK7とJDK6がインストールされてる状態で、PATHの末尾に使いたいJDKのパスを入れ替えても、Cygwin側で使えるjava
コマンドのバージョンが変わらないというトラブルがありました。
あとPATHに%JAVA_HOME%\bin
など%で囲んだ環境変数を使うと、Cygwin側では展開されませんでした。Cygwinを使うなら全部フルパスで書く必要があるみたい。もしくはなんか方法があるんだろうか。
あと64bit版のWindows7だと、32bitなプログラムをインストールする先としてC:\Program Files (x86)
というディレクトリがあります。Cygwin上でperlbrewを使ってperlをインストールしようとしたら、PATHに(
と)
が含まれるせいで、止まってしまいました。エラーメッセージは忘れちゃったけど、インストールの中でPATHを正規表現で扱ったのかな?半角スペースはエスケープしたけど(
と)
は想定外なんだなって、その時思いました。
Windows7は、XPではC:\Documents and Settings\myuser\Application Data
だったスペース入りのパスが、C:\Users\myuser\AppData
になっててとても良くなってるんだけど、C:\Program Files
はそのままで中途半端。そして上記の、ディレクトリ名に(
と)
を使うという辺り、やっぱり微妙なOSです。
Cygwinのバージョン確認
$ cygcheck -c cygwin Cygwin Package Information Package Version Status cygwin 1.7.11-1 OK