===========================================
Sublime Textで嬉しいのはMacやWindowsで利用できることです。
両方のOSで使うなら操作を合わせた方がなにかと便利です。
まずはMacとWindowsのキーバインドをできるだけ合わせます。
(KeyRemap4MacBookやChange Keyなどを利用します。)
次にGitやPython,Ruby,Node.jsを利用するので、WindowsでUNIXシェルを使えるようにします。
(CygwinやMSYSを利用します。それにしてもMacのターミナルは圧倒的に使いやすいです。)
さらにMySQL,Redis,MongoDB,RabbitMQなどミドルウェアを利用するのにWindowsでもよいのですが
非公式だったり最新版がない場合があるのでパッケージの管理が簡単なLinuxにミドルウェアを任せます。
(SSHで接続できるLinuxならグローバルでもローカルでもなんだっていいです。)
今回はVagrantとSublime Textを利用してMacとWindowsの環境を作ります。
大筋はMacとWindowsで利用できるVagrantでVirtualBoxを操作して
ホストOSのSublime TextとゲストOSのUbuntuでファイルを連携します。
XcodeやVisual Studioのエディタ・ドリブンが好きなので、OSを意識することなく
エディタを中心に作業がしたいです。
Mac
OS XはUNIXベースなので簡単に環境が作れます。
(仮想イメージのダウンロード時間を除けば作業時間は10分程度です。)
環境
- Mac OS X Lion
- VirtualBox 4.2.6
- Ruby 1.9.3-p374
- Vagrant 1.0.6
Vagrant
VirtualBoxのDownloadsからfor OS X
をインストールします。
GemでVagrantをインストールして、仮想マシンのイメージを追加します。
$ gem install vagrant
$ vagrant box add precise64 http://files.vagrantup.com/precise64.box
[vagrant] Downloading with Vagrant::Downloaders::HTTP...
[vagrant] Downloading box: http://files.vagrantup.com/precise64.box
[vagrant] Extracting box...
[vagrant] Verifying box...
[vagrant] Cleaning up downloaded box...
precise64はUbuntu12.04(64bit版)の仮想マシンのイメージです。
Virtual Machine
仮想マシンのディレクトリを作り、vagrant init
コマンドに仮想マシンのイメージを指定します。
vagrant up
コマンドで仮想マシンを起動して、vagrant ssh
コマンドでログインします。
(Vagrantfile
を編集すればchefなどの素敵な仕組みが利用できます。)
$ mkdir ubuntu12.04
$ cd ubuntu12.04
$ vagrant init precise64
$ vagrant up
$ vagrant ssh
Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-23-generic x86_64)
vagrant@precise64:~$ mkdir notes
ホストOSに連携するディレクトリをゲストOSにあらかじめ作成します。
(ゲストOSは***vagrant@precise64:~$***と記します。)
Sublime Text
仮想マシンとファイルを連携するのにSublime SFTPを利用します。
Sublime SFTPは有料($16)のプラグインです。
$ mkdir notes
$ touch notes/foo
$ subl notes/
ちなみにsubl
コマンドはSublime TextのCLIです。
sftp-config.json
Sublime TextのサイドバーのSFTP/FTP -> Map to Remote
でsftp-config.jsonファイルを出力します。
host
,user
,port
,ssh_key_file
,remote_path
の値をVagrantと連携するように編集します。
{
"type": "sftp",
"save_before_upload": true,
"upload_on_save": true,
"sync_down_on_open": false,
"sync_skip_deletes": false,
"confirm_downloads": false,
"confirm_sync": true,
"confirm_overwrite_newer": false,
"host": "127.0.0.1",
"user": "vagrant",
"port": "2222",
"ssh_key_file": "~/.vagrant.d/insecure_private_key",
"remote_path": "/home/vagrant/notes",
"ignore_regexes": [
"\\.sublime-(project|workspace)", "sftp-config(-alt\\d?)?\\.json",
"sftp-settings\\.json", "/venv/", "\\.svn", "\\.hg", "\\.git",
"\\.bzr", "_darcs", "CVS", "\\.DS_Store", "Thumbs\\.db", "desktop\\.ini"
],
"connect_timeout": 30,
}
Sync
ファイルを同期は特に意識しなくてもSublime Textで編集を保存するだけでゲストOSに自動で反映されます。
(upload_on_save
のtrue
が保存で同期する設定です。)
Sublime Textでfooファイルにberと入力して保存すると、ゲストOSの指定したディレクトリにfooファイルが作成されます。
vagrant@precise64:~$ cat notes/foo
ber
VirtualBoxの共有フォルダーをマウントする機能もあるのですが
ファイルディスクリプタなど使い難かったのでSFTPにしました。
Windows
WindowsはUNIX,Linuxとは違い独特な所があるので合わせるのに工夫が必要です。
(仮想イメージのダウンロード時間を除けば作業時間は20分程度です。)
環境
- Windows 7
- VirtualBox 4.2.6
- Ruby 1.9.3-p374
- Vagrant 1.0.6
Mintty
ターミナルはMacと同じ様に背景の透過ができるMinttyを使います。
UnixシェルはCygwinではなくMSYSを使います。
MinGWのDownloadsからmingw-get-inst
をインストールします。
MinGWのシェルでmsys-mintty
をインストールします。
$ mingw-get update
$ mingw-get upgrade
$ mingw-get install msys-mintty
mintty.exe
のショートカットを作成してリンク先(T)に /bin/bash --login
を追記します。
(mintty.exe
は\MinGW\msys\1.0\bin\
にインストールされます。)
mintty設定
minttyを起動してオプションを設定します。
なるべくMacと同じフォントを使いましょう!
例ではRictyのフォントを設定しています。
Looks:Transparency = High
Text:Font = Ricty,14-point
Text:Locale = C
Text:Character set = UTF-8
Vagrant
VirtualBoxのDownloadsからfor Windows
をインストールします。
RubyはRuby for Windowsで安定版をインストールします。
$ gem install vagrant
$ vagrant box add precise32 http://files.vagrantup.com/precise32.box
precise32はUbuntu12.04(32bit版)の仮想マシンのイメージです。
Virtual Machine
Macと同じ様にvagrant up
コマンドで仮想マシンを起動して、vagrant ssh
コマンドをすると
vagrant ssh
コマンドはWindowsでは使えないと悲しいメッセージが表示されます。
$ mkdir ubuntu12.04
$ cd ubuntu12.04
$ vagrant init precise32
$ vagrant up
$ vagrant ssh
`vagrant ssh` isn't available on the Windows platform.
ssh
ssh
コマンドは使えるのでsshでログインはできるので後は接続情報があれば
と思ったらvagrant ssh-config
コマンドがありました。(さすがっす!)
$ vagrant ssh-config
Host default
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile ...
alias
sshのオプションにファイルを指定するエイリアスを作成します。
vagrant-ssh
コマンドになりましたが、これでログインできます。
$ vagrant ssh-config > .ssh-config
$ echo 'alias vagrant-ssh="ssh default -F .ssh-config"' >> ~/.bash_profile
$ source ~/.bash_profile
$ vagrant-ssh
Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-23-generic-pae i686)
vagrant@precise34:~$ mkdir notes
Sublime Text
後はSublime SFTPでゲストOSと連携と思ったらWindowsの秘密鍵はPuTTYとFAQに記載されています。
Vagrantの秘密鍵をPuTTY Key Generatorでコンバートします。
(Vagrantの秘密鍵を探すのが面倒ならCドライブの直下にコピーすると便利です。)
$ cat ~/.vagrant.d/insecure_private_key > /c/insecure_private_key
sftp-config.json
Macとはssh_key_file
の値だけが違います。
{
"type": "sftp",
"save_before_upload": true,
"upload_on_save": true,
"sync_down_on_open": false,
"sync_skip_deletes": false,
"confirm_downloads": false,
"confirm_sync": true,
"confirm_overwrite_newer": false,
"host": "127.0.0.1",
"user": "vagrant",
"port": "2222",
"ssh_key_file": "C:\\Users\\user\\.ssh\\vagrant.ppk",
"remote_path": "/home/vagrant/notes",
"ignore_regexes": [
"\\.sublime-(project|workspace)", "sftp-config(-alt\\d?)?\\.json",
"sftp-settings\\.json", "/venv/", "\\.svn", "\\.hg", "\\.git",
"\\.bzr", "_darcs", "CVS", "\\.DS_Store", "Thumbs\\.db", "desktop\\.ini"
],
"connect_timeout": 30,
}
Sync
これでMacと同じ様にSublime Textでファイルを編集して保存すると、ゲストOSの指定したディレクトリにファイルが同期されます。
vagrant@precise32:~$ cat notes/foo
ber
Browser Refresh for Sublime Text 2など自動で再起動してくれる
アプリケーションを組み合わせるとさらに作業が楽になります。
Tips
WindowsでもmsysgitをインストールするとSublime Text 2 plugin: gitでSublime Textから
ブランチを切替えたりcommit
やpush
が使えるので便利です。