MacvimやVimの中からrubyスクリプトを実行したい


何がしたいの?

  • エディタ(VimまたはMacVim)の中からRubyプログラムを一撃で実行したい

誰が使うの?

  • エディタとターミナルの行ったり来たりが面倒な人

どのように機能するの?

  • 編集中のファイルを保存後rubyで実行するコマンドをショートカットキーに割り当てます

何を使うの?

  • MacVim
  • VimMacOSに標準添付のもの)

どこで確認したの?

  • MacOSX (10.6.2 Snow Leopard) (Darwin Kernel Version 10.2.0)
  • MacVim Custom Version 7.2 (KaoriYa 20090802)
  • VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Jul 13 2009 22:28:10)
  • ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-darwin10]

いつ確認したの?

  • 2010年3月13日

何か注意点はあるの?

  • 設定ファイル.vimrcを変更する前にバックアップを取りましょう。

どんな手順でやるの?

  • .vimrcに設定を追加します。
  • F8 キーに 編集中のファイルを保存してrubyで実行する処理を割り当てました。
"<F8> 保存→ rubyで実行
nmap <F8> :w<CR>:!ruby %<CR>
  • MacVimで対象のプログラムを開きます。


  • 割り当てたショートカットキーで実行します。


  • Vimで対象のプログラムを開きます。


  • 割り当てたショートカットキーで実行します。

Xcodeの中で一撃で現在日時(timestamp)を入力したい

何がしたいの?

  • 現在日時や時刻の入力を素早く行いたい
  • 現在日時や時刻の入力をショートカット化したい

誰が使うの?

  • メモをタイムスタンプ付きで取りたい人
  • タイムスタンプの入力を素早く行いたい人

どのように機能するの?

  • カーソル位置の後ろにタイムスタンプを挿入するユーザスクリプトを追加します。
  • ユーザスクリプトにショートカットを割り当てます。

何を使うの?

どこで確認したの?

いつ確認したの?

  • 2010年3月12日

何が参考になるの?

uncrustifyをXCodeで便利に使う

何か注意点はあるの?

  • 特にありません。

どんな手順でやるの?

xcodeを起動します
・メニューバーの[ウィンドウ]と[ヘルプ]の間のスクリプトのアイコンを選択します。
・メニュー[ユーザスクリプトを編集]を選択します。
・左下の[+]を選択してドロップダウンメニューより[新規シェルスクリプト]を選択します。
・コマンド入力画面に下記のコマンドを入力します。

#!/bin/sh

echo ---------------------------------
LANG=ja_JP.UTF-8;export LANG
date
echo
echo
echo

・ドロップダウン[入力]はどれでも結果には関係ありませんが、とりあえず[選択部分]を選択します。
・ドロップダウン[ディレクトリ]はどれでも結果には関係ありませんが、とりあえず[選択部分]を選択します。
・ドロップダウン[出力]は[選択部分の後ろに挿入]を選択します。
・ドロップダウン[エラー]は[選択部分]はどれでも似たような結果が得られますが、とりあえず[スクリプト出力と結合]を選択します。
・スクロールバーの左脇あたりをクリックするとショートカットキーの入力画面になりますので、空いているキーを割り当てます。
・[OK]とか[保存]とかいうボタンはないのでウィンドウ[ユーザスクリプトを編集]を閉じます。
・割り当てたショートカットキーを選択するとタイムスタンプが挿入されます。できましたか?

Vimの中で一撃で現在日時(timestamp)を素早く入力したい

何がしたいの?

  • 現在日時や時刻の入力を素早く行いたい
  • 現在日時や時刻の入力をショートカット化したい

誰が使うの?

  • メモをタイムスタンプ付きで取りたい人
  • タイムスタンプの入力を素早く行いたい人

どのように機能するの?

  • vimのキーマップにタイムスタンプの入力機能を割り当てます

何を使うの?

  • vimまたはMacVim

どこで確認したの?

いつ確認したの?

  • 2010年3月12日

何が参考になるの?

Vimのキーマップを弄ってみた

何か注意点はあるの?

  • 設定ファイル.vimrcを変更する前にバックアップを取得しましょう。

どんな手順でやるの?

  • .vimrcに追記します
"<F6>  文頭にタイムスタンプを挿入してinsertモードへ移行
nmap <F6> <ESC>ggi----------------------<CR><C-R>=strftime("%Y/%m/%d (%a) %H:%M")<CR><CR><CR><CR><CR><CR><Up><Up><Up>

おわり

MacOSXでターミナルのlsコマンドの表示色を変更したい

何がしたいの?

  • ターミナルでlsコマンドを実行した時のディレクトリや実行ファイルの色つけを変更したい

誰が使うの?

  • ターミナルの背景色を暗い色に変更したい人
  • ターミナルの背景色を暗い色に変更したらlsコマンドの表示が見にくくなって困っている人

どのように機能するの?

  • lsコマンドのファイル種別ごとの表示色をカスタマイズします。

何を使うの?

  • Terminal.app

どこで確認したの?

いつ確認したの?

  • 2010年3月12日

何が参考になるの?

On-line Manual of "ls"

何か注意点はあるの?

  • 設定ファイル.bash_profileを変更する前にバックアップを取りましょう。自己責任でどうぞ。

どんな手順でやるの?

  • ターミナルを起動します。
  • メニュー[ターミナル]-[環境設定]を選択します。
  • ツールバー[設定]を選択します。
  • タブ[設定]を選択します。
  • チェクボックス[ANSIカラーを表示]にチェックします。
  • 設定ファイル .bash_profile にCLICOLORとLSCOLORS環境変数を追加します。
  • 参考ページを見ながら属性の順番と色指示に好みの値を入力します。
export CLICOLOR="true"
export LSCOLORS="Exfxcxdxbxegedabagacad"


  • 設定を反映します
$ source .bash_profile
  • 確認します。どうですか?
$ ls

MacPortを使用してプログラムをインストールする時に接尾辞(suffix)をコントロールしたい

何がしたいの?

  • MacPortを使用してプログラムをインストールする時に接尾辞(suffix)をコントロールしたい
  • MacPortを使用して複数バージョンのrubyMacOSX上で共存したい =>失敗。未解決

誰が使うの?

  • Macportでruby1.9を標準の方法でインストールすると実行プログラム名がruby1.9になるのをrubyにしたい人
  • 複数バージョンのrubyを使い分けたい人 =>失敗。未解決

どのように機能するの?

  • MacPortでインストールオプションで接尾辞をコントロールしてバイナリの名前を変える
  • rubyディレクトリやバイナリにバージョン番号がついてプログラムやディレクトリの共存が可能になる =>失敗。未解決

何を使うの?

どこで確認したの?

いつ確認したの?

  • 2010年3月6日

何が参考になるの?

何か注意点はあるの?

  • 後からインストールした1.8は名前衝突のためインストールに失敗した。
  • Macport経由でインストールしたバイナリ共存と、gem経由でインストールしたバイナリの名前衝突は別問題。
  • いろいろと自己責任でお願いします。

どんな手順でいろいろやってみたの?

  • MacOS標準のrubyのバージョンを確認する
$ which ruby
/usr/bin/ruby
$ 
$ /usr/bin/ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0]
$ 
  • MacPortの上のインストール可能なrubyを一覧する
$ sudo port search ruby
中略
ruby @1.8.7-p249 (lang, ruby)
Powerful and clean object-oriented scripting language
ruby186 @1.8.6-p388 (lang, ruby)
Powerful and clean object-oriented scripting language
ruby19 @1.9.1-p376 (lang, ruby)
Powerful and clean object-oriented scripting language
中略
  • 接尾辞の指定せずにMacPortで rubyをインストールする(ruby1.8がrubyとしてインストールされる)
$ sudo port install ruby
  • 確認
$ 
$ which ruby
/opt/local/bin/ruby
$ 
$ /opt/local/bin/ruby -v
ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin10]
$ 
  • 一旦ruby1.8を削除する
$ sudo port uninstall ruby
  • 接尾辞の指定せずにMacPortで ruby19をインストールする(ruby1.9ruby1.9としてインストールされる)
$ sudo port install ruby19
  • 確認
$ 
$ which ruby
/usr/bin/ruby
$ 
$ which ruby1.9
/opt/local/bin/ruby1.9
$ 
  • 一旦ruby19を削除する
$ sudo port uninstall ruby19
  • 接尾辞を「なし」と明示指定してMacPortで rubyをインストールする(ruby1.9rubyとしてインストールされる)
$ sudo port install ruby19 +nosuffix
  • 確認

インストールは成功しているようだ。

$ which ruby
/opt/local/bin/ruby
$ 
$ /opt/local/bin/ruby -v
ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-darwin10]
$ 
$ ruby -v
ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-darwin10]
$ 
$ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.1
  - RUBY VERSION: 1.9.1 (2009-12-07 patchlevel 376) [i386-darwin10]
  - INSTALLATION DIRECTORY: /opt/local/lib/ruby/gems/1.9.1
  - RUBY EXECUTABLE: /opt/local/bin/ruby
  - EXECUTABLE DIRECTORY: /opt/local/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-darwin-10
  - GEM PATHS:
     - /opt/local/lib/ruby/gems/1.9.1
     - /Users/tsuchiya/.gem/ruby/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - :sources => ["http://gems.rubyforge.org/", "http://gems.github.com"]
  - REMOTE SOURCES:
     - http://gems.rubyforge.org/
     - http://gems.github.com
$ 
  • 接尾辞を「18」と明示指定してMacPortで rubyをインストールする(ruby1.8 がruby18としてインストールされる...に違いなかったのだが.....)

インストール失敗!
なにやら名前衝突を起こしているらしい

$ sudo port install ruby +suffix18
Error: Target org.macports.activate returned: Image error: /opt/local/bin/erb is being used by the active ruby19 port.  Please deactivate this port first, or use 'port -f activate ruby' to force the activation.
Error: Status 1 encountered during processing.
Before reporting a bug, first run the command again with the -d flag to get complete output.
  • 確認

1.8は衝突のためインストールされなかった。
なんでだろう?接尾辞1.8が付くんじゃないの?

$ which ruby
/opt/local/bin/ruby
$ 
$ ruby -v
ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-darwin10]
$ 
$ which ruby18
$ 
$ which ruby1.8
$ 
$ ls -al /opt/local/bin | grep ruby
-rwxr-xr-x   2 root  admin    9416  3  6 14:22 ruby
$ 

MacOSでTerminalの起動時直後からLogが自動的に残るようにしたい


何がしたいの?

  • ターミナルの起動時に自動的にログの記録を開始します。
  • いつのログか分かるようにログ名の一部に日付やマシン名を含めます。
  • ターミナルを複数回または多重に起動してもログを上書きしないようにします。

誰が使うの?

  • ターミナルを使用してデンジャラスなシステム変更作業をする人
  • あの時どうやったのかなぁ?と頻繁につぶやいている忘れっぽい人
  • 自分の作業直後に不具合が発生したときに無実を証明したい人

どのように機能するの?

  • Terminal起動時にコマンド実行する機能でscriptコマンドを発行します。

何を使うの?

  • Terminal.app

どこで確認したの?

いつ確認したの?

  • 2010年3月7日

何が参考になるの?

  • 特にありません

何か注意点はあるの?

  • 非常に大量のコンソール出力が出る作業を行うときにはログのサイズに注意しましょう。
  • ログのファイル名にターミナル起動時の日付が入ります。作業前にターミナルを起動する習慣をつけましょう。
  • 色々と自己責任で行いましょう。

どんな手順でやるの?

  • ターミナルを起動します。
  • メニュー[ターミナル]-[環境設定]を選択します。
  • ツールバー[設定]を選択します。
  • タブ[シェル]を選択します。
  • チェックボックス[コマンドを実行]と[シェル内で実行]をチェックします。
  • コマンドを実行のテキストボックスに下記のコマンドを入力します。
  • 下記の例では/Users/Shared/log/ディレクトリにYYYYMMDD_マシン名.txt という名前のログが作成されます。
/usr/bin/script -a /Users/Shared/log/`date '+%Y%m%d'`_`uname -n`.txt

MacOSXでターミナルからGUIアプリケーションを起動したい

何がしたいの?

  • ターミナルのコマンドライン上からGUIアプリケーションを起動したい。
  • アプリケーションのフルパス名ではなく短い名前で起動したい。
  • GUIアプリケーションで開くファイルをコマンドライン引数で与えたい。

誰が使うの?

  • ターミナルを頻繁に使うけど、テキストエディタはターミナル内ではなくGUIで使いたい人
  • open -a /Applicatioin/xxx.app xxx.txtとか打ち込むのが面倒な人

どのように機能するの?

  • open コマンドを呼び出す短い名前の実行ファイルを登録します。

何を使うの?

  • Terminal.app
  • openコマンド

どこで確認したの?

いつ確認したの?

  • 2010年3月7日

何が参考になるの?

  • 特にありません。

何か注意点はあるの?

  • 短い名前の実行ファイルを新しく作るときには、既にある重要な実行ファイルと同じ名前にならないように気を付けましょう。
  • 管理者権限を使用するので作業には十分気を付けましょう。自己責任でどうぞ。

どんな手順でやるの?

  • 実行パスが通っていることろにコマンドを配置します。
mvimという名前でMacVim.appを起動するコマンドを作成します。
mvimへの第一引数をMacVim.appへ第一引数として引渡します。
$ cat /usr/local/bin/mvim 
open -a /Applications/MacVim.app $1
実行権限を与えます
 $ ls -al /usr/local/bin/mvim
 -rw-r--r--  1 root  wheel  36  3  7 14:29 /usr/local/bin/mvim
 $ sudo chmod 755 /usr/local/bin/mvim
 $ ls -al /usr/local/bin/mvim
 -rwxr-xr-x  1 root  wheel  36  3  7 14:29 /usr/local/bin/mvim
引数なしで実行してみます
$ 
$ mvim
$ 
引数ありで実行してみます
$ 
$ mvim tmp.txt 
$ 

他のアプリ用も色々作ってみます

Xcodeを起動するコマンドとか
$ cat /usr/local/bin/xcode 
open -a /Developer/Applications/Xcode.app $1
$ 
$ xcode tmp.txt 
$ 
Google Chrome を起動するコマンドとか
$ cat /usr/local/bin/chrome 
open -a "/Applications/Google Chrome.app" $1
$ 
$ chrome "http://google.com"
$ 

おわり