<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>st.Prestage</title>
	<atom:link href="http://www.st-prestage.jp/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.st-prestage.jp/blog</link>
	<description>のんびり更新中</description>
	<lastBuildDate>Thu, 29 Jul 2010 19:58:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>blogit.vimの投稿日時のバグをなおすっ！！</title>
		<link>http://www.st-prestage.jp/blog/mac/737</link>
		<comments>http://www.st-prestage.jp/blog/mac/737#comments</comments>
		<pubDate>Thu, 29 Jul 2010 19:57:21 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/737</guid>
		<description><![CDATA[blogit.vim、便利ですね♪
ただ前回の変更だけではバグがあり、
なぜか投稿がすべて9時間後になってしまっていました。
WordPressの管理画面で記事のチェックがてら、投稿時間を変更すればいいかな？
なんておも [...]]]></description>
			<content:encoded><![CDATA[<p>blogit.vim、便利ですね♪<br />
ただ<a href="http://www.st-prestage.jp/blog/mac/708">前回の変更</a>だけではバグがあり、<br />
なぜか投稿がすべて9時間後になってしまっていました。</p>
<p>WordPressの管理画面で記事のチェックがてら、投稿時間を変更すればいいかな？<br />
なんておもっていたのですが、やはり手間だなぁ〜と。。。</p>
<p>というわけで修正していきます。<br />
~/.vim/plugin/blogit.vimの894行目</p>
<pre><code>
self.set_server_var__Date_AS_DateTime(DateTime())

</code></pre>
<p>ここを以下の通り変更</p>
<pre><code>
self.set_server_var__Date_AS_DateTime(DateTime(gmtime()))

</code></pre>
<p>ただしこの変更には副作用があって投稿した記事を表示したときに<br />
表示される時間が標準時を基準とした時刻になります。</p>
<p>また、予約投稿するときには標準時を基準とした時間の指定が必要です。<br />
＝日本だったら9時間マイナスした時間に設定する。</p>
<p>もともとの原因は投稿を送る際に、<br />
ローカルの時間を投稿日時に設定→送信→WordPress側の設定でさらに時差を調整。<br />
のように2重で調整されてしまっていること。</p>
<p>これを防ぐにはWordPressのタイムゾーンを世界標準時にする。<br />
もしくはコードをいじって標準時で送信する。</p>
<p>WordPressの本体の設定を変えるよりは、<br />
こちらの方が副作用が少ないと思われます。</p>
<p>blogit.vimなんてマイナーなプラグインを使う人は少ないと思いますが、<br />
導入するときは参考にしてください。</p>
<p>そのうち日本時間で指定できるようにいじるかもしれません。</p>
<p>でわでわ、たかともでした。</p>
<p>ちなみにblogit.vimで投稿するときはDate: の後は一行の空行が必要です。<br />
← 気がつかないで、だいぶはまりましたorz</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/737/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>git pull をもっと手軽につかってみる</title>
		<link>http://www.st-prestage.jp/blog/mac/723</link>
		<comments>http://www.st-prestage.jp/blog/mac/723#comments</comments>
		<pubDate>Thu, 29 Jul 2010 13:34:49 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/723</guid>
		<description><![CDATA[Git でバージョン管理って便利ですね。
いつでも最新版にアップデートできたり、開発のログをみたり、
自分で追加したコードと配布されているものの整合性をとれたり。
なんでいままで使っていなかったんだろう？と思ってしまいま [...]]]></description>
			<content:encoded><![CDATA[<p>Git でバージョン管理って便利ですね。</p>
<p>いつでも最新版にアップデートできたり、開発のログをみたり、<br />
自分で追加したコードと配布されているものの整合性をとれたり。<br />
なんでいままで使っていなかったんだろう？と思ってしまいます。</p>
<p>そんなわけでよく使うのが git pull というコマンド。</p>
<p>バージョン管理下にあるソースを更新するときに使うのですが、<br />
いちいちディレクトリを移さないといけないのでめんどくさい＞＜</p>
<p>ならば、解決してやろうっ！！ということで、 自動で「git pull」をしてくれるシェルスクリプトをつくりました。</p>
<pre>
<code>
#!/bin/bash
find ~ -name ".git" -type d | while read f;
do
echo $(dirname $f)
cd $(dirname $f)
git pull
done
</code>
</pre>
<p>このスクリプトを適当な名前でパスの通ったところに保存。 そしておまじない。</p>
<pre>
<code>
$ chmod +x 保存したスクリプト
</code>
</pre>
<p>あとはターミナルでスクリプトを実行するだけです。</p>
<p>find コマンドで ホームディレクトリ以下にある.gitディレクトリを検索。<br />
検索されたファイルのディレクトリに cd して git pull する。<br />
ポイントは while read f で find した結果を 変数 f に入れて、<br />
順番に処理をさせてることですね。基本かもしれないですが。</p>
<p>もしGitで管理しているファイルをどこかにまとめているのであれば<br />
find ~ を find ディレクトリ に変更してもいいかもしれません。<br />
まぁ、速度を求めるなら find コマンドを locate コマンドにして、、、</p>
<p>バージョン管理にGitを使っているかたは、<br />
便利になると思うので、つかってみてください。</p>
<p>でわでわ、たかともでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/723/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magic Trackpadがおもしろそう。</title>
		<link>http://www.st-prestage.jp/blog/mac/716</link>
		<comments>http://www.st-prestage.jp/blog/mac/716#comments</comments>
		<pubDate>Wed, 28 Jul 2010 14:50:23 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/?p=716</guid>
		<description><![CDATA[Appleから発売になったMagic Trackpadが楽しそうです。
マウスだといちいち机の上で腕を振るのがめんどくさいと8年ぐらいずっとトラックボールをつかっていたのですが、これはこれで掃除がめんどくさかったり。。。 [...]]]></description>
			<content:encoded><![CDATA[<p>Appleから発売になったMagic Trackpadが楽しそうです。<br />
マウスだといちいち机の上で腕を振るのがめんどくさいと8年ぐらいずっとトラックボールをつかっていたのですが、これはこれで掃除がめんどくさかったり。。。</p>
<p>へぃ、ボーイ♪<br />
そんなキミにおすすめなのがMagic Trackpadなんだ。</p>
<p>腕が疲れる？<br />
 → 指先だけで簡単に操作ができてキミはいつでも元気いっぱいさぁ〜♪</p>
<p>スクロールがだるい？<br />
 → 慣性スクロールを使えばスクロールしてる時間もハッピーさぁ〜♪</p>
<p>汚れた？<br />
 → 軽く表面を拭くだけでピカピカさぁ〜♪</p>
<p>ほら、どうだい？欲しくなってきただろう？<br />
こんな素敵なアイテムがいまなら6,980円。<br />
信じられないだろう？</p>
<p>おっと、もう注文がたくさんきてるようだ。<br />
キミもはやくポチるんだぜ♪ </p>
<p>。。。やってしまいました。<br />
みなさんもはやくポチんだぜ♪</p>
<p>でわでわ、たかともでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/716/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Safariに機能拡張ギャラリーへのアクセス機能が追加♪</title>
		<link>http://www.st-prestage.jp/blog/mac/713</link>
		<comments>http://www.st-prestage.jp/blog/mac/713#comments</comments>
		<pubDate>Wed, 28 Jul 2010 13:57:52 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Safari]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/713</guid>
		<description><![CDATA[Safariがバージョンアップして機能拡張ギャラリーへのアクセスが追加されましたぁ〜。

いままで機能拡張を入れるためには、自分で拡張を検索していたのですが、これで簡単にインストールができるようになります。開発者向けには [...]]]></description>
			<content:encoded><![CDATA[<p>Safariがバージョンアップして機能拡張ギャラリーへのアクセスが追加されましたぁ〜。</p>
<p><a href="http://www.st-prestage.jp/blog/wp-content/uploads/safariExtentionUpdate001.png" title="safariExtentionUpdate001"><img width="246" height="300" src="http://www.st-prestage.jp/blog/wp-content/uploads/safariExtentionUpdate001-246x300.png" class="attachment-medium" alt="safariExtentionUpdate001" title="safariExtentionUpdate001"/></a></p>
<p>いままで機能拡張を入れるためには、自分で拡張を検索していたのですが、これで簡単にインストールができるようになります。開発者向けには登録してねぇ〜ってメールがきていたので、まだかなぁ〜なんて思っていたところだったので、かなりうれしいです♪さてさっそくインストールの旅にいってきま〜す。。。。って、もうほとんどインストールしてますが。</p>
<p>おすすめ拡張</p>
<ul>
<li>AutoPagerize &#8211; 自動でページを追加して表示</li>
<li>ScribeFire &#8211; ブログに簡単に投稿する</li>
<li>InstapaperIt &#8211; あとで読みたいものをInstapaperに登録</li>
<li>MouseGestures &#8211; Safariをマウスジェスチャーで操作</li>
<li>Sessions &#8211; 履歴管理をおてがるに</li>
<li>Coda Notes &#8211; Webページにメモをつけてスクリーンショット。</li>
</ul>
<p>それから趣味で<br />
vimlike &#8211; ショートカットをVimの操作に似せる<br />
vimlikeは万人向けではないですねｗ</p>
<p>Safari、楽しいです。</p>
<p>でわでわ、たかともでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/713/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vimからブログに投稿する blogit.vim</title>
		<link>http://www.st-prestage.jp/blog/mac/708</link>
		<comments>http://www.st-prestage.jp/blog/mac/708#comments</comments>
		<pubDate>Wed, 28 Jul 2010 04:10:20 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/?p=708</guid>
		<description><![CDATA[一日中、Vimをいじってる気がします。
ブログを更新する際にVimpressを使って更新していこうと思ったのですが、
あまり自分の好みの動作ではなかったので、「blogit.vim」というプラグインを使うことにしました。 [...]]]></description>
			<content:encoded><![CDATA[<p>一日中、Vimをいじってる気がします。</p>
<p>ブログを更新する際にVimpressを使って更新していこうと思ったのですが、<br />
あまり自分の好みの動作ではなかったので、「blogit.vim」というプラグインを使うことにしました。もともとこのプラグインを使おうとしていたのですが、Macで使おうとするとエラーがでてしまって使えなかったのです。そんなわけでプラグインに手を加えて動くようにしました。</p>
<p>変更点は以下</p>
<ul>
<li>.vim/plugin/blogit.vimを開く</li>
<li>:%s/getpreferredencoding()/&#8217;utf-8&#8242;/g と置換の処理をする。</li>
</ul>
<p>以上です。</p>
<p>getpreferredencoding()で文字コードの判別をしているのですが、Macの場合だとうまく判定できないようだったので強制的にutf-8をいれるだけです。これだけで動くならもっと早くやればよかった。。。。</p>
<p>というわけで、<br />
あとは:Blogit new して :Blogit push したり、<br />
:Blogit ls して記事を選んでenter → 編集して :Blogit push したりするだけ。</p>
<p>キーマップを定義してもいいかもしれないですね。</p>
<p>ShellはVimShellをつかって、<br />
TwitterはVimShellからTermtter、<br />
LingrはLinger.vim。<br />
Xcodeはcocoa.vim + neocomplcache。</p>
<p>ますますVimから離れられなくなってしまいそうです。</p>
<p>ではでは、たかともでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/708/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vimで日本語入力を自動で切り替える(MacVim)</title>
		<link>http://www.st-prestage.jp/blog/mac/701</link>
		<comments>http://www.st-prestage.jp/blog/mac/701#comments</comments>
		<pubDate>Tue, 27 Jul 2010 21:31:36 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/701</guid>
		<description><![CDATA[日本語入力のオンオフで悩まされるのはもうごめんですっ！！
Vimを使っているとノーマルモードで日本語入力がオンになっていて、誤作動。
「ふがぁ〜」となることが多いので、Insert-modeを抜けたらすぐに日本語入力をO [...]]]></description>
			<content:encoded><![CDATA[<p>日本語入力のオンオフで悩まされるのはもうごめんですっ！！</p>
<p>Vimを使っているとノーマルモードで日本語入力がオンになっていて、誤作動。<br />
「ふがぁ〜」となることが多いので、Insert-modeを抜けたらすぐに日本語入力をOFFにする設定をしてみました。ついでにVimを起動したときにも日本語の入力をオフにするようにしています</p>
<pre>
<code>

autocmd VimEnter,GUIEnter,BufEnter,BufNew,InsertLeave * call g:changeToUS()

function! g:changeToUS()
    call system ("osascript -e \'"
                \ ."tell application \"MacVim\" to activate \n"
                \ ."tell application \"System Events\" \n"
                \ ."tell application process \"MacVim\" \n"
                \ ."key code 102 \n"
                \ ."end tell \n"
                \ ."end tell \n\'")
endfunction

</code>
</pre>
<p>Vimの中からosascriptを呼び出して、AppleScriptで英数キーをたたいているだけなのでたいしたことはしていません。</p>
<p>この設定ですが、いくつか問題があります。</p>
<p>1つ目は<br />
タイミングの関係でATOK、ことえりの英字入力は使えません。<br />
言語環境設定からATOK、ことえりの英字入力をオフにしてUSモードをオンにしてください。</p>
<p>2つ目は<br />
またインサートモードを抜けたタイミングでUSに切り替えをしてしまうので、<br />
<code>inoremap &lt;C-e&gt; &lt;C-o&gt;$</code> と設定してC-eした場合USモードへの切替が行われます。</p>
<p>まぁ、副作用はあるものの、ノーマルモードで日本語入力がオンになるよりは、使い勝手がよくなると思います。かなり便利な設定だと思うので、使ってみてください。</p>
<p>でわでわ、たかともでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/701/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VimPressがどれほどのやつなのか試してみる。</title>
		<link>http://www.st-prestage.jp/blog/mac/695</link>
		<comments>http://www.st-prestage.jp/blog/mac/695#comments</comments>
		<pubDate>Tue, 27 Jul 2010 16:10:36 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/695</guid>
		<description><![CDATA[ほんとはBlot_itというVimプラグインを使いたかったのですが、どうしてもエラーがでてしまうので（python関係？）VimPressを使うことに。
ローカルの画像を挿入すると自動でアップロードしてリンクに変換してく [...]]]></description>
			<content:encoded><![CDATA[<p>ほんとはBlot_itというVimプラグインを使いたかったのですが、どうしてもエラーがでてしまうので（python関係？）VimPressを使うことに。</p>
<p>ローカルの画像を挿入すると自動でアップロードしてリンクに変換してくれるという機能が便利で「ecto」というアプリケーションを使っていました。</p>
<p>変更した理由はただVimを常時起動していることが多いので、Vimをつかってそのまま編集できたほうが、別のアプリケーションを起動する手間が省けていいかなぁというだけのことだったりします。<br />
それに編集の機能だけならVimの方がectoよりも数段上というのもpoint。</p>
<p>Vimのノーマルモードで日本語入力がオンになっているとかなり誤作動してしまうので、挿入モードを抜けたときやコマンドモードに入ったときに日本語入力をOFFにしてくれるような設定はしなければなぁ〜とは思っています。</p>
<p>これができないとectoに戻ってしまうかも。。。</p>
<p>というわけでテストがてらの投稿でした。</p>
<h1>タグのテスト</h1>
<p>ほげほげ<br />ふがふが</p>
<p>ぴよぴよ<br />
まんたん</p>
<p>test</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/695/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VimでiPhoneの開発をするときにしておくと便利な設定。</title>
		<link>http://www.st-prestage.jp/blog/mac/691</link>
		<comments>http://www.st-prestage.jp/blog/mac/691#comments</comments>
		<pubDate>Sat, 24 Jul 2010 21:38:17 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[cocoa.vim]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/691</guid>
		<description><![CDATA[とうとうXcode4のプレビュー版がWWDCに行けなかった開発者にも公開されました。
たかとももさっそくDLして使ってみましたが、いままでのXcodeからかなり進化していてびっくりしてしまいました。慣れるまではちょっと大 [...]]]></description>
			<content:encoded><![CDATA[<p>とうとうXcode4のプレビュー版がWWDCに行けなかった開発者にも公開されました。</p>
<p>たかとももさっそくDLして使ってみましたが、いままでのXcodeからかなり進化していてびっくりしてしまいました。慣れるまではちょっと大変そうですが、使いこなせたらものすごい簡単に開発ができそうな気がします。</p>
<p>Xcode4が正式版になったときに Vim + cocoa.vim に修正が必要になったりしないといいのですが。。。。</p>
<p>ということで、今日はちょっとした設定の紹介です。</p>
<p>VimでC言語やらを書いているときに include &#8220;hogehoge&#8221; と書かれているところの上で gf とするとincludeされたファイルにジャンプできる機能があります。ただObjective-Cの場合だと include &#8220;hogehoge&#8221; ではなくて import &#8220;fugafuga&#8221; とか import &lt;UIKit/UIKit.h&gt; だったりしてうまくジャンプできません。</p>
<p>おすすめの使い方</p>
<ul>
<li>編集しているファイルを :vsplit して画面分割する。</li>
<li>import &#8220;hogehoge&#8221; の上で gf する</li>
<li>ジャンプした先のファイルから、さらに gf もできます。</li>
<li>ジャンプしすぎたときは C-o で戻る。</li>
</ul>
<p>ウィンドウを分割することで、ジャンプした先のファイルを参考にしながら編集ができるので楽ちんですよね。</p>
<p>ということで以下が設定になります。</p>
<pre><code>

autocmd FileType objc setlocal path=.;,/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/System/Library/Frameworks,/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks,,
autocmd FileType objc setlocal include=^\s*#\s*import
autocmd FileType objc setlocal includeexpr=substitute(v:fname,'\/','\.framework/Headers/','g')

</code></pre>
<p>まず1行目はファイルを探すためディレクトリを指定してあります。SDKのバージョンが変わったときにはここを適宜 変更してください。。次に2行目でimport &#8220;&#8221; と import &lt;&gt; の間に書かれているところがincludeされたファイルだと指定します。最後の行は Import &lt;UIKit/UIKit.h&gt;の「UIKit/UIKit.h」の部分を「UIKit.framework/Headers/UIKit.h」に書き換えをしています。</p>
<p>この3つを設定してあげると Import &lt;UIKit/UIKit.h&gt; と書かれたところで gf したときに、pathで設定したディレクトリ ・ includeexprの設定が組み合わさって/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk\<br />
/System/Library/Frameworks/UIKit.framework/Header/UIKit.h にジャンプできるようになります。ジャンプしたところから戻るには C-o を使ってくださいね。  </p>
<p>意外と便利なのでぜひ設定してくださいね♪</p>
<p>でわでわ、たかともでした。</p>
<p>autocmd は augroup MyObjcCmd 〜 augtoup END でくくってあげて、先頭に augroup MyObjcCmd の次の行には autocmd! なんてしてあげるのもいいかと。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/691/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>M-x anythingってもう古いらしいですよ？？ anythingの関数を定義する。</title>
		<link>http://www.st-prestage.jp/blog/mac/687</link>
		<comments>http://www.st-prestage.jp/blog/mac/687#comments</comments>
		<pubDate>Tue, 20 Jul 2010 10:58:41 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Emacs]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/687</guid>
		<description><![CDATA[最近はVimばっかりつかってEmacsを起動することが少なくなってしまったのですが、anything.elの作者さんが本を出す。とのことで復習がてらEmacsの設定ファイルをいじっています。
Emacsで一つだけプラグイ [...]]]></description>
			<content:encoded><![CDATA[<p>最近はVimばっかりつかってEmacsを起動することが少なくなってしまったのですが、anything.elの作者さんが本を出す。とのことで復習がてらEmacsの設定ファイルをいじっています。</p>
<p>Emacsで一つだけプラグインを入れろと言われたら、まちがいなく選ぶのがこのanything.elというElisp。バッファを切り替えたりファイルを開いたりするだけじゃなくって、 imenuとかとの連携もできたりgrepの結果を絞り込んだり、なんだかものすごい多機能なプラグインになってます。</p>
<p>本は8/3に発売のようですが、それを前に作者のrubikitchさんのエントリー。</p>
<p><a href="http://d.hatena.ne.jp/rubikitch/20100718/anything">■[anything][emacs]anything導入のeverything ～3分で使えるanything.el～<br />
</a></p>
<p>気になったのが下の方にある「anything-sourcesとM-x anythingは非推奨」の部分。</p>
<p>おもいっきり設定していますが、なにか？ なんて強がってみようと思ったのですが、さくさくっと該当する部分を直してみました。</p>
<pre><code>

;; anything-mydefaut()にキーバインドを割り当てる
(define-key global-map (kbd "C-;") 'anything-my-default)

;;  - anything-my-default() を設定する
(defun anything-my-default()
    (interactive)
    (anything-other-buffer '(anything-c-source-ffap-line
                             anything-c-source-ffap-guesser
                             anything-c-source-buffers+
                             anything-c-source-recentf
                             anything-c-source-files-in-current-dir+)
                            "*anything defalut*"))

</code></pre>
<p>anythingのソース(anything-c-source-なんちゃら〜)が用意されていれば、</p>
<pre><code>
(defun hogehoge() ;hogehogeという関数を定義
   (interactive)  ;おまじない
   (anything-other-buffer ; anything-other-bufferを呼び出す
        '(anything-c-source-hogehoge  anything-c-source-fugafuga) ;ソースを書いていく '()はリスト
        "*anything default*")) ;ソースを表示するバッファの名前を"*waiwai*"みたいに書く

</code></pre>
<p>上記のような関数を自分の用途に合わせて作ってあげれば、用途に合わせてanythingのソースを切り替えて使えるようになるわけです。便利〜♪</p>
<p>みなさんもぜひぜひ使ってみてください☆</p>
<p>でわでわ、たかともでした。</p>
<p>anything-c-sourceの作り方も書いてみたいけど、いまいち理解できてない。。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/687/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>気分がいいのでvimの設定ファイルをさらしてみる</title>
		<link>http://www.st-prestage.jp/blog/mac/686</link>
		<comments>http://www.st-prestage.jp/blog/mac/686#comments</comments>
		<pubDate>Sun, 18 Jul 2010 13:08:47 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/686</guid>
		<description><![CDATA[うまいことObjective-cでのMacとかiPhoneアプリ開発の設定ができて気分がよくなってきたので、どんな設定をしているのかとさらしてみることにします。設定ファイルの書き方がめちゃくちゃなのは仕様です。きれいに書 [...]]]></description>
			<content:encoded><![CDATA[<p>うまいことObjective-cでのMacとかiPhoneアプリ開発の設定ができて気分がよくなってきたので、どんな設定をしているのかとさらしてみることにします。設定ファイルの書き方がめちゃくちゃなのは仕様です。きれいに書くなんて機能は実装されてないのであしからず。</p>
<p>neoui.vimとcocoa.vimはプラグインの中身をいじって書き換えたものを使ってます。でわ。</p>
<pre><code>

" vim: set foldmethod=marker:
" 概要をみるためにどこかにファイルを保存じて  vimgrep /^"\s*[^}"]/ %  するといいかも
"

if has ('gui_macvim')

" コマンドキーを使う
set macmeta

"
endif

" ============================================================
" vimの設定
"
" ============================================================
" 基本設定 "{{{
"
syntax on
filetype plugin on
filetype indent on

" カラースキーマをロードする
colorscheme stakatomo

" viとの互換機能をオフにする
set nocompatible

" 起動時の画面を表示しない
set shortmess=aTI

" menuは英語で表示させる
set langmenu=none

" ヘルプを日本語で表示する
set helplang=ja

" Set keyword help.
set keywordprg=:help

" 他のアプリケーションで編集されたファイルは自動で読み直す
set autoread

" 編集中に他のファイルを開けるようにする
set hidden

" カーソルが行末で止まらないようにする
set whichwrap=b,s,h,l,&lt;,&gt;,[,]

" 毎行の前に行番号を表示する。（有効:number/無効:nonumber）
set number

" 移動キーを押しても括弧の強調を有効にする
set cpoptions-=m
set matchtime=3

" &lt;&gt;にもマッチするようにする
set matchpairs+=&lt;:&gt;

" バックアップファイルを作らない
set nobackup

" swapファイルを作らない
set noswapfile

" viminfoファイルの置き場所を指定する
set viminfo+=n~/.vim/tmp/viminfo

" ファイルを自動で保存する
set autowriteall

" 何も操作をしていないと判定される時間
set updatetime=1000
set updatecount=1000

" &lt;Leader&gt;を押してから キャンセルされるまでの時間.
set timeout timeoutlen=2500 ttimeoutlen=50

" クリップボードを使う
set clipboard&#038; clipboard+=unnamed

" Visual選択で選択されたテキストが、自動的にクリップボードレジスタ "*" にコピーされる。
set guioptions+=a

" オンのときは、ウィンドウの幅より長い行は折り返され、次の行に続けて表示される。（有効:wrap/無効:nowrap）
set wrap

" 新しい行を開始したとき (Insertモードで &lt;CR&gt; を打ち込むか、コマンド "o"や "O" を使ったとき)、新しい行のインデントを現在行と同じくする。（有効:autoindent/無効:noautoindent）
set autoindent smartindent

" Anywhere SID.
function! s:SID_PREFIX()
    return matchstr(expand('&lt;sfile&gt;'), '&lt;SNR&gt;\d\+_')
endfunction

" plugin用にキーマップを解放する
nnoremap ; &lt;Nop&gt;
xnoremap ; &lt;Nop&gt;
nnoremap m &lt;Nop&gt;
xnoremap m  &lt;Nop&gt;
nnoremap ,  &lt;Nop&gt;
xnoremap ,  &lt;Nop&gt;

" \の代わりに'm'を使えるようにする
"     ','より押しやすい。
"     プラグイン用設定の前に設定しないとうまくマッピングされない。
let mapleader = 'm'
" グローバルプラグインでは &lt;Leader&gt; を使用
let g:mapleader = 'm'
" ファイルタイププラグインでは &lt;LocalLeader&gt; を使用
"     'm'の隣だから','を使用する。
let g:maplocalleader = ','

" autocmd の定義
augroup MyAutoCmd "{{{

	autocmd!

	"     何も操作をしていないときに保存する
	autocmd CursorHold * call g:my_auto_update()
	autocmd CursorHoldI * call g:my_auto_update()

	"     Easily load VimScript.
	autocmd FileType vim nnoremap &lt;silent&gt;&lt;buffer&gt; [Space]rr  :source $MYVIMRC \|  echo "source " . bufname('%')&lt;CR&gt;
	"" autocmd FileType vim nnoremap &lt;silent&gt;&lt;buffer&gt; [Space]rr  :source $MYVIMRC \| source $MYGVIMRC \| echo "source " . bufname('%')&lt;CR&gt;

	"     ヘルプをqだけで閉じる
	autocmd FileType help,git-status,git-log,qf nnoremap &lt;buffer&gt; q &lt;C-w&gt;c
	autocmd FileType qf nnoremap &lt;buffer&gt; &lt;TAB&gt; :&lt;C-u&gt;call g:MovePreviousWindow()&lt;CR&gt;

	""     バッファを開いたらそこをカレントディレクトリにする
	""autocmd BufEnter * call g:my_lcd()

	"     カーソルの位置を保存する。
	autocmd BufReadPost *
		\ if line("'\"") &gt; 0 &#038;&#038; line("'\"") &lt;= line("$") |
		\   exe "normal g`\"" |
		\ endif

	"     改行したときに自動でコメントアウトするのをやめる。
	autocmd FileType * setlocal formatoptions-=ro

	"     入力されているテキストの最大幅。行がそれより長くなると、この幅を超えないように空白の後で改行される。値を 0 に設定すると無効になる。
	autocmd FileType * setlocal textwidth=0

	"     vimshellでフォルダ間のタブ文字を表示させない
	autocmd FileType vimshell,vimshell-term setlocal nolist

augroup END

" 自動保存をするための関数 "{{{
function! g:my_auto_update()
	let update_fname=expand("%")
	if filereadable(update_fname) == 1
		if &#038;filetype != 'gitcommit'
			update
		endif
	endif
	return
endfunction
"}}}

" カレントディレクトリを編集しているファイルの位置にするための関数 "{{{
function! g:my_lcd()
	if &#038;filetype != 'gitcommit'
		execute ":lcd " . escape(expand("%:p:h:"), " #\\")
	endif
endfunction

"}}}

"}}}

"}}}

"
" ============================================================
" ステータスバーの表示 "{{{
" 

" コマンドラインの高さ
set cmdheight=2

" コマンドをコマンドラインに表示する
set showcmd

" カーソルが何行目の何列目にあるのか表示する
set ruler

" ステータスバーを表示するタイミング 0:表示しない 1:ウィンドウの数が2つ以上で表示 2:常に表示
set laststatus=2

" ステータスバーに表示する内容
set statusline=[%{winnr('$')&gt;1?''.winnr().'/'.winnr('$'):''}]\ %&lt;\ %f\ %m%r%h%w%y%{'['.(&#038;fenc!=''?&#038;fenc:&#038;enc).'\|'.&#038;ff.']'}%=%l/%L\ (%P)

"}}}

"
" ============================================================
" 検索の設定"{{{
" 

" 検索がファイル末尾まで進んだら、ファイル先頭から再び検索する。（有効:wrapscan/無効:nowrapscan）
set wrapscan

" 検索パターンにおいて大文字と小文字を区別しない。（有効:ignorecase/無効:noignorecase）
set ignorecase

" 検索パターンが大文字を含んでいたらオプション 'ignorecase' を上書きする。（有効:smartcase/無効:nosmartcase）
set smartcase

" インクリメンタルサーチ
set incsearch

set magic

" 前回の検索パターンが存在するとき、それにマッチするテキストを全て強調表示する。（有効:hlsearch/無効:nohlsearch）
set nohlsearch

" GrepをVim標準のGrepにする
set grepprg=grep

"}}}

"
" ============================================================
" コマンドラインをコマンドウィンドウで処理する設定 "{{{

nnoremap &lt;SID&gt;(command-line-enter) q:
xnoremap &lt;SID&gt;(command-line-enter) q:
nnoremap &lt;SID&gt;(command-line-norange) q:&lt;C-u&gt;

nmap :  &lt;SID&gt;(command-line-enter)
xmap :  &lt;SID&gt;(command-line-enter)

autocmd MyAutoCmd CmdwinEnter * call s:init_cmdwin()
function! s:init_cmdwin()
	nnoremap &lt;buffer&gt; q :&lt;C-u&gt;quit&lt;CR&gt;
	nnoremap &lt;buffer&gt; &lt;TAB&gt; :&lt;C-u&gt;quit&lt;CR&gt;

	" Completion.
	inoremap &lt;buffer&gt;&lt;expr&gt;&lt;TAB&gt;  pumvisible() ? "\&lt;C-n&gt;" : "\&lt;TAB&gt;"

	startinsert!
endfunction
"}}}

"
" ============================================================
" TABなどの表示"{{{
" 

" ファイル内の &lt;TAB&gt; が対応する空白の数。
set tabstop=4

" &lt;TAB&gt; の挿入や &lt;BS&gt; の使用等の編集操作をするときに、&lt;TAB&gt; が対応する空白の数。
set softtabstop=4
" インデントの各段階に使われる空白の数。
set shiftwidth=4
" Insertモードで &lt;TAB&gt; を挿入するとき、代わりに適切な数の空白を使う。（有効:expandtab/無効:noexpandtab）
set noexpandtab

" タブ文字を CTRL-I で表示し、行末に $ で表示する。（有効:list/無効:nolist）
set list

" Listモード (訳注: オプション 'list' がオンのとき) に使われる文字を設定する。
set listchars=tab:&gt;-,extends:&lt;,trail:-

" 全角スペースを視覚化
highlight ZenkakuSpace guifg=#333
match ZenkakuSpace /　/

" 横分割したウィンドウは左につくる
set splitbelow

" 縦分割したウィンドウは下につくる
set splitright

" Increase history amount.
set history=200

" Display all the information of the tag by the supplement of the Insert mode.
set showfulltag

" Can supplement a tag in a command-line.
set wildoptions=tagfile

" Adjust window size of preview and help.
set previewheight=15
set helpheight=15

"}}}

"
" ============================================================
" プラグインの設定"{{{
" 

" プラグインをフォルダで管理する "{{{
" ~/.vim/{pluginName}をruntimepathに追加
"     runtimepathの初期化
set runtimepath&#038;

function! s:SetOtherPluginsPath()
"     addon 直下のディレクトリを取得
	let dir = '$HOME/.vim/addon/'
	let dirs = map(split(glob(fnamemodify(dir, ':p').'*/'), '\n'),
		\	'fnamemodify(v:val, ":h")')

"     addon 直下のディレクトリのafterも生成
	let dirsAfter = map(copy(dirs), 'v:val."/after"')

	execute "set runtimepath&#038;"
	let &#038;runtimepath = join(dirs + [&#038;runtimepath] + dirsAfter, ',')
endfunction

call s:SetOtherPluginsPath()
"}}}

"
" neocomplcacheの設定 ===================="{{{

"
" neocomplcache の基本設定 "{{{
let g:neocomplcache_enable_at_startup              = 1
let g:neocomplcache_manual_completion_start_length = 1
let g:neocomplcache_auto_completion_start_length = 2
let g:neocomplcache_enable_smart_case = 0
let g:neocomplcache_enable_camel_case_completion = 1
let g:neocomplcache_enable_underbar_completion = 1
let g:NeoComplCache_EnableCursorHoldI = 1
let g:neocomplcache_min_syntax_length = 2
let g:neocomplcache_min_keyword_length = 2
let g:neocomplcache_enable_auto_select = 0
let g:neocomplcache_caching_limit_file_size = 100000000
let g:neocomplcache_enable_quick_match = 1
" quickmatchは&lt;C-Space&gt; で表示する
let g:neocomplcache_quick_match_patterns = {'default' : ' '}
let g:neocomplcache_temporary_dir = $HOME . '/.vim/tmp/neocon'
let g:neocomplcache_snippets_dir = $HOME . '/.vim/share/snippets'
"}}}

" neocomplcacheのキーバインド "{{{
imap &lt;expr&gt;&lt;C-k&gt; neocomplcache#sources#snippets_complete#expandable() ? "\&lt;Plug&gt;(neocomplcache_snippets_expand)" : "\&lt;C-k&gt;"
smap &lt;C-k&gt; &lt;Plug&gt;(neocomplcache_snippets_expand)

imap &lt;C-l&gt; &lt;Plug&gt;(neocomplcache_snippets_jump)
smap &lt;C-l&gt; &lt;Plug&gt;(neocomplcache_snippets_jump)

"     C-nでneocomplcache補完
inoremap &lt;expr&gt;&lt;C-n&gt;  pumvisible() ? "\&lt;C-n&gt;" : "\&lt;C-x&gt;\&lt;C-u&gt;\&lt;C-p&gt;"
"     C-pでkeyword補完
inoremap &lt;expr&gt;&lt;C-p&gt; pumvisible() ? "\&lt;C-p&gt;" : "\&lt;C-p&gt;\&lt;C-n&gt;"

inoremap &lt;expr&gt;&lt;Up&gt; pumvisible() ? neocomplcache#cancel_popup()."\&lt;Up&gt;" : "\&lt;Up&gt;"
inoremap &lt;expr&gt;&lt;Down&gt; pumvisible() ? neocomplcache#cancel_popup()."\&lt;Down&gt;" : "\&lt;Down&gt;"

"     &lt;Space&gt;: close popup and insert space.
inoremap &lt;expr&gt;&lt;C-j&gt;  pumvisible() ? neocomplcache#close_popup() : "\&lt;C-g&gt;"
inoremap &lt;expr&gt;&lt;C-e&gt; pumvisible() ? neocomplcache#cancel_popup() : "\&lt;C-o&gt;\$"
"     AutoComplPop like behavior.
inoremap &lt;expr&gt;&lt;C-h&gt; pumvisible() ? neocomplcache#cancel_popup()."\&lt;C-h&gt;" : "\&lt;C-h&gt;"
inoremap &lt;expr&gt;&lt;BS&gt; pumvisible() ? neocomplcache#cancel_popup()."\&lt;BS&gt;" : "\&lt;BS&gt;"
inoremap &lt;expr&gt;&lt;CR&gt; pumvisible() ? neocomplcache#cancel_popup()."\&lt;CR&gt;" : "\&lt;C-R&gt;=delimitMate#ExpandReturn()\&lt;CR&gt;"
"}}}

" neocomplcacheの補完を開始する文字の長さ "{{{
let g:neocomplcache_plugin_completion_length_list = {
			\ 'omni_complete' : 2,
			\ 'snippets_complete' : 1,
			\ 'tags_complete' : 4,
			\ 'buffer_complete' : 2,
			\ 'include_complete' : 2,
			\ 'syntax_complete' : 2,
			\ 'filename_complete' : 2,
			\ 'keyword_complete' : 2
			\ }
"}}}

" neocomplcacheのオムニ補完を開始するパターン "{{{
let g:neocomplcache_omni_patterns = {
			\ 'php'  :  '[^. \t]-&gt;\h\w*\|\$\h\w*\|\%(=\s*new\|extends\)\s\+\|\h\w*::',
			\ 'perl' :  '\%(\h\w*\|)\)-&gt;\h\w*\|\h\w*::',
			\ 'c'    :  '\h\w\+\|\%(\h\w*\|)\)\%(\.\|-&gt;\)\h\w*',
			\ 'cpp'  :  '\%(\h\w*\|)\)\%(\.\|-&gt;\)\h\w*\|\h\w*::',
			\ }
"}}}

" neocomplcacheの補完辞書の位置 "{{{
let g:neocomplcache_dictionary_filetype_lists = {
			\ 'default' : '',
			\ 'objc'    : $HOME . '/.vim/dict/objc.dict'
			\ }
"}}}

" neocomplcacheがキーワードとして取得するパターン "{{{
if !exists('g:neocomplcache_keyword_patterns')
	let g:neocomplcache_keyword_patterns = {}
endif
let g:neocomplcache_keyword_patterns['default'] = '\h\w*'
let g:neocomplcache_keyword_patterns['perl'] = '\h\w*'
let g:neocomplcache_keyword_patterns['objc'] = '\h\w*'
"}}}

"}}}

"
" neouiの設定 ==================== "{{{

"
" neouiの基本設定
let g:neoui_temporary_dir=$HOME . '/.vim/tmp/neoui'

let g:neoui_temporary_dir = expand(g:neoui_temporary_dir)
if !isdirectory(g:neoui_temporary_dir)
  call mkdir(g:neoui_temporary_dir, 'p')
endif

let g:neoui_source_file_mru_file=$HOME . '/.vim/tmp/neoui/vimru'
call neoui#custom_prefix('common', '~', substitute($HOME, '\\', '/', 'g'))

" neouiのキーバインド

nnoremap [NeoUI] &lt;Nop&gt;
nmap ; [NeoUI]
nnoremap C    ;
"     bufferとかファイルを開く
nnoremap &lt;silent&gt; [NeoUI]f :&lt;C-u&gt;NeoUI file file/mru&lt;CR&gt;
"     commandの履歴を開く
nnoremap &lt;silent&gt; [NeoUI]c :&lt;C-u&gt;NeoUI cmd/mru&lt;CR&gt;
"     検索の履歴を開く
nnoremap &lt;silent&gt; [NeoUI]s :&lt;C-u&gt;NeoUI search/mru&lt;CR&gt;
"     QuickFixの検索結果からファイルを開く
nnoremap &lt;silent&gt; [NeoUI]g :&lt;C-u&gt;NeoUI quickfix/buffer&lt;CR&gt;

"}}}

"
" QFixGrepの設定 ===================="{{{
"     注意；タブでwindowを移動するためにmyqfix.vimの&lt;C-i&gt;へのキーマップを削除してある。

"
" QFixGrepの基本設定
let mygrepprg = 'grep'
let MyGrep_ShellEncoding = 'utf-8'
let MyGrep_Resultfile = $HOME.'/.vim/tmp/qfixgrep.txt'

" QFixGrep のキーバインド
"     The prefix key.
nnoremap [Quickfix]   &lt;Nop&gt;
nmap    q  [Quickfix]
"     Disable Ex-mode.
nnoremap Q  q

nnoremap  [Quickfix]g  :&lt;C-u&gt;Grep&lt;Space&gt;
nnoremap  [Quickfix]b  :&lt;C-u&gt;BGrep&lt;Space&gt;
nnoremap &lt;silent&gt; [Quickfix]n  :&lt;C-u&gt;cnext&lt;CR&gt;
nnoremap &lt;silent&gt; [Quickfix]p  :&lt;C-u&gt;cprevious&lt;CR&gt;

"     Quickfix window.
nnoremap &lt;silent&gt; [Quickfix]&lt;Space&gt;       :&lt;C-u&gt;ToggleQFixWin&lt;CR&gt;
nnoremap &lt;silent&gt; [Quickfix]ff             :&lt;C-u&gt;MoveToQFixWin&lt;CR&gt;

" QuickFixウィンドウを左に縦分割
let QFix_CopenCmd = 'vertical topleft'

" QuickFixウィンドウの高さ
let QFix_Height = 15
let QFix_Width = 86

" QFixPreviewのファイルタイプのハイライトをしない。
let QFix_PreviewFtypeHighlight=0

" ハイスピードプレビューを有効にする
let QFix_HighSpeedPreview = 1

" QFixGrepの検索時にカーソル位置の単語を拾う/拾わない
let MyGrep_DefaultSearchWord = 1

" Exclude pattern.
let MyGrep_ExcludeReg =
	\'[~#]$\|\.bak$\|\.swp$\.o$\|\.obj$\|\.exe$\|\.dll$\|\.pdf$\|\.doc$\|\.xls$\|[/\\]tags$\|.cvs[/\\]\|.git[/\\]\|.svn[/\\]'

"}}}

"
" vimShellの設定 ===================="{{{
"     ftpluginにも設定あり
"
" vimshellの基本設定
let g:vimshell_prompt = $USER."% "
let g:vimshell_smart_case = 1
let g:vimshell_temporary_directory=$HOME . '/.vim/tmp/vimshell'
let g:vimshell_external_history_path=$HOME . '/.zsh/zsh_history'
let g:vimshell_split_height=50
let g:vimshell_split_command='NicelyWindowSplit'

" vimshellのキーバインド
"     &lt;C-\&gt;でvimshellをポップアップする
nnoremap &lt;silent&gt;&lt;C-\&gt; :&lt;C-u&gt;VimShellPop&lt;CR&gt;
inoremap &lt;silent&gt;&lt;C-\&gt; &lt;Esc&gt;:&lt;C-u&gt;VimShellPop&lt;CR&gt;

"}}}

"
" Nerd_commenterの設定 ===================="{{{

"
" Nerd_Commenter の基本設定
let g:NERDCreateDefaultMappings = 0
let NERDSpaceDelims = 1
let NERDShutUp = 1

" Nerd_commenterのキーバインド
"     [Space]cc でコメントをトグル
nmap [Space]cc &lt;Plug&gt;NERDCommenterToggle
vmap [Space]cc &lt;Plug&gt;NERDCommenterToggle

"     [Space]csでセクシーなコメント
nmap [Space]cs &lt;Plug&gt;NERDCommenterSexy
vmap [Space]cs &lt;Plug&gt;NERDCommenterSexy

"     [Space]cdでコメントをはずす
nmap [Space]cd &lt;Plug&gt;NERDCommenterUnComment
vmap [Space]cd &lt;Plug&gt;NERDCommenterUnComment

"     [Space]caでコメントを追加して文字列入力
nmap [Space]ca &lt;Plug&gt;NERDCommenterAppend

"}}}

"
" quickrunの設定 ===================="{{{
"
" backgroundで実行する
let g:quickrun_config = {
\   '*': {'runmode': 'async:remote:vimproc'},
\ }

"}}}

"
" project.vimの設定 ===================="{{{

"
" projectウィンドウの幅
let g:proj_window_width=30
" projectウィンドウに設定するflag
let g:proj_flags="imst"

" project.vimのキーバインド
"     [Space]prでprojectウィンドウをトグル
nmap &lt;silent&gt; [Space]pp &lt;Plug&gt;ToggleProject

"}}}

"
" git-vimの設定 ==================== "{{{

"
" git-vimの基本設定
"     デフォルトのキーマップを使用しない。
let g:git_no_map_default = 1

" git-vimのキーバインド
nnoremap [Space]gd :&lt;C-u&gt;GitDiff --cached&lt;Enter&gt;
nnoremap [Space]gD :&lt;C-u&gt;GitDiff&lt;Enter&gt;
nnoremap [Space]gg :&lt;C-u&gt;GitStatus&lt;Enter&gt;
nnoremap [Space]gl :&lt;C-u&gt;GitLog&lt;Enter&gt;
nnoremap [Space]gL :&lt;C-u&gt;GitLog -u \| head -10000&lt;Enter&gt;
nnoremap [Space]ga :&lt;C-u&gt;GitAdd&lt;Enter&gt;
nnoremap [Space]gA :&lt;C-u&gt;GitAdd &lt;cfile&gt;&lt;Enter&gt;
nnoremap [Space]gc :&lt;C-u&gt;GitCommit&lt;Enter&gt;
nnoremap [Space]gC :&lt;C-u&gt;GitCommit --amend&lt;Enter&gt;
nnoremap [Space]gp :&lt;C-u&gt;Git pull
nnoremap [Space]gP :&lt;C-u&gt;Git push

"}}}

"
" taglistの設定 ==================== "{{{
set tags=tags

let g:Tlist_Auto_Update = 1
let g:Tlist_Show_One_File = 0
let g:Tlist_Exit_OnlyWindow = 1
let g:Tlist_Use_Right_Window = 0
let g:Tlist_WinWidth = 40
let g:tlist_objc_settings='objc;P:protocols;i:interfaces;I:implementations;M:instance methods;C:implementation methods;Z:protocol methods;v:property'
let g:tlist_javascript_settings = 'javascript;v:var;c:class;p:prototype;m:method;f:function;o:object'

nnoremap &lt;silent&gt; [Space]tt :&lt;C-u&gt;Tlist&lt;CR&gt;1&lt;C-w&gt;l

"}}}

"
" bufferexplore の設定 "{{{
nnoremap [NeoUI]; :BufExplorer&lt;CR&gt;

"}}}

"
" easytagsの設定
let g:easytags_cmd = $HOME . '/local/bin/ctags'
let g:easytags_file = '~/.vim/share/tags'
let g:easytags_always_enabled = 1
let g:easytags_resolve_links = 1

"
" delimitMateの設定
"inoremap &lt;Space&gt; &lt;C-R&gt;=delimitMate#ExpandSpace()&lt;CR&gt;
"}}}

"
" ============================================================
" キーマップ "{{{

map  &lt;C-Space&gt; &lt;C-@&gt;
cmap &lt;C-Space&gt; &lt;C-@&gt;

map &lt;F1&gt; &lt;Nop&gt;

map  &lt;C-c&gt; &lt;Esc&gt;
cmap &lt;C-c&gt; &lt;Esc&gt;
"
" 移動 表示行単位で移動 "{{{
noremap j gj
noremap k gk
vnoremap j gj
vnoremap k gk

"}}}

"
" オプションを切り替えるキーマップ "{{{

nnoremap &lt;silent&gt; &lt;Esc&gt;&lt;Esc&gt; :&lt;C-u&gt;call ToggleOption('hlsearch')&lt;CR&gt;&lt;Esc&gt;

" Toggle options. "{{{
function! ToggleOption(option_name)
    execute 'setlocal' a:option_name.'!'
    execute 'setlocal' a:option_name.'?'
endfunction  "}}}

"}}}

"
" インサートモードのキーマップ"{{{
"     &lt;C-d&gt;: delete char.
inoremap &lt;C-d&gt; &lt;Del&gt;

"     &lt;C-a&gt;:move move to head.
inoremap &lt;silent&gt;&lt;C-a&gt;  &lt;C-o&gt;^

"     &lt;C-f&gt;, &lt;C-b&gt;: page move.
inoremap &lt;expr&gt;&lt;C-f&gt;  pumvisible() ? neocomplcache#cancel_popup()."\&lt;Right&gt;" : "\&lt;Right&gt;"
inoremap &lt;expr&gt;&lt;C-b&gt;  pumvisible() ? neocomplcache#cancel_popup()."\&lt;Left&gt;"   : "\&lt;Left&gt;"

"     &lt;A-b&gt;: previous word.
inoremap &lt;A-b&gt;  &lt;S-Left&gt;
"     &lt;A-f&gt;: next word.
inoremap &lt;A-f&gt;  &lt;S-Right&gt;

"     Enable undo &lt;C-u&gt;.
inoremap &lt;C-u&gt;  &lt;C-g&gt;u&lt;C-u&gt;

"     &lt;C-_&gt;: toggle preview window.
inoremap &lt;silent&gt;&lt;C-_&gt;  &lt;C-o&gt;:&lt;C-u&gt;call&lt;SID&gt;preview_window_toggle()&lt;CR&gt;

"     &lt;A-d&gt;: delete to end.
inoremap &lt;A-d&gt;  &lt;C-o&gt;D
inoremap &lt;C-k&gt;  &lt;C-o&gt;D

"     &lt;A-j&gt;: &lt;Down&gt; &lt;A-k&gt;: &lt;Up&gt;
inoremap &lt;expr&gt;&lt;A-j&gt;  pumvisible() ? neocomplcache#cancel_popup()."\&lt;Down&gt;" : "\&lt;Down&gt;"
inoremap &lt;expr&gt;&lt;A-k&gt;  pumvisible() ? neocomplcache#cancel_popup()."\&lt;Up&gt;" : "\&lt;Up&gt;"
inoremap &lt;expr&gt;&lt;A-h&gt;  pumvisible() ? neocomplcache#cancel_popup()."\&lt;Left&gt;" : "\&lt;Left&gt;"
inoremap &lt;expr&gt;&lt;A-l&gt;  pumvisible() ? neocomplcache#cancel_popup()."\&lt;Right&gt;" : "\&lt;Right&gt;"

"}}}

"
" コマンドラインモードのキーマップ"{{{

"     &lt;C-a&gt;, A: move to head.
cnoremap &lt;C-a&gt;          &lt;Home&gt;

"     &lt;C-b&gt;: previous char.
cnoremap &lt;C-b&gt;          &lt;Left&gt;

"     &lt;C-d&gt;: delete char.
cnoremap &lt;C-d&gt;          &lt;Del&gt;

"     &lt;C-e&gt;, E: move to end.
cnoremap &lt;C-e&gt;          &lt;End&gt;

"     &lt;C-f&gt;: next char.
cnoremap &lt;C-f&gt;          &lt;Right&gt;

"     &lt;C-n&gt;: next history.
cnoremap &lt;C-n&gt;          &lt;Down&gt;

"     &lt;C-p&gt;: previous history.
cnoremap &lt;C-p&gt;          &lt;Up&gt;

"     &lt;C-k&gt;, K: delete to end.
cnoremap &lt;C-k&gt;          &lt;C-f&gt;d$&lt;C-c&gt;&lt;End&gt;

"     &lt;C-y&gt;: paste.
cnoremap &lt;C-y&gt;          &lt;C-r&gt;"

"     &lt;C-s&gt;: view history.
cnoremap &lt;C-s&gt;          &lt;C-f&gt;

"     &lt;C-l&gt;: view completion list.
cnoremap &lt;C-l&gt;          &lt;C-d&gt;

"     &lt;A-b&gt;, W: move to previous word.
cnoremap &lt;A-b&gt;          &lt;S-Left&gt;

"     &lt;A-f&gt;, B: move to next word.
cnoremap &lt;A-f&gt;          &lt;S-Right&gt;

"     &lt;C-j&gt;, &lt;C-o&gt;: move to next/previous candidate.
"     High-speed than ring TAB repeatedly.
cnoremap &lt;C-j&gt;          &lt;C-n&gt;
cnoremap &lt;C-o&gt;          &lt;C-p&gt;
cnoremap &lt;S-TAB&gt;        &lt;C-p&gt;

"     &lt;C-g&gt;: decide candidate.
cnoremap &lt;C-g&gt;          &lt;Space&gt;&lt;C-h&gt;

"     &lt;C-t&gt;: insert space.
cnoremap &lt;C-t&gt;          &lt;Space&gt;

"     &lt;C-c&gt;: Esc
cnoremap &lt;C-c&gt;          &lt;C-c&gt;

"}}}

"
" Window buffer 操作のキーマップ "{{{
"     ほかのwindowを閉じる
nnoremap &lt;silent&gt; &lt;D-1&gt; :&lt;C-u&gt;only&lt;CR&gt;
"     windowの自動分割
nnoremap &lt;silent&gt; &lt;D-2&gt; :&lt;C-u&gt;NicelyWindowSplit&lt;CR&gt;
"     windowの大きさを均一にする
nnoremap &lt;silent&gt; &lt;D-3&gt; &lt;C-w&gt;=
"     window の入れ替え
nnoremap &lt;silent&gt; &lt;D-4&gt; &lt;C-w&gt;H
nnoremap &lt;silent&gt; &lt;D-5&gt; &lt;C-w&gt;K
nnoremap &lt;silent&gt; &lt;D-6&gt; &lt;C-w&gt;J
nnoremap &lt;silent&gt; &lt;D-7&gt; &lt;C-w&gt;L
"     windowを閉じる
nnoremap &lt;silent&gt; &lt;D-0&gt; :&lt;C-u&gt;close&lt;CR&gt;
"     バッファを削除する
nnoremap &lt;silent&gt; &lt;D-9&gt; :&lt;C-u&gt;call &lt;SID&gt;CustomBufferDelete(0)&lt;CR&gt;:if winnr() != 1 &lt;Bar&gt; close&lt;CR&gt;:endif&lt;CR&gt;
nnoremap &lt;silent&gt; &lt;D-8&gt; :Kwbd&lt;CR&gt;
"     windowの移動
nnoremap &lt;silent&gt; &lt;TAB&gt; &lt;C-w&gt;w

"     ウィンドウの大きさで縦分割/横分割を判断して分割する関数 "{{{
command! NicelyWindowSplit call g:nicely_window_split()
function! g:nicely_window_split()
	if winwidth(0) &gt; 3.5 * &#038;winwidth
		vsplit
	else
		split
	endif
endfunction "}}}

"     Delete current buffer する関数"{{{
function! s:CustomBufferDelete(is_force)
    let current = bufnr('%')

    call s:CustomAlternateBuffer()

    if a:is_force
        silent! execute 'bdelete! ' . current
    else
        silent! execute 'bdelete ' . current
    endif
endfunction
"}}}

"     Fast buffer switch する関数 "{{{
function! s:CustomAlternateBuffer()
    if bufnr('%') != bufnr('#') &#038;&#038; buflisted(bufnr('#'))
        buffer #
    else
        let l:cnt = 0
        let l:pos = 1
        let l:current = 0
        while l:pos &lt;= bufnr('$')
            if buflisted(l:pos)
                if l:pos == bufnr('%')
                    let l:current = l:cnt
                endif

                let l:cnt += 1
            endif

            let l:pos += 1
        endwhile

        if l:current &gt; l:cnt / 2
            bprevious
        else
            bnext
        endif
    endif
endfunction
"}}}

"     一つ前の分割ウィンドウに戻るための関数
function! g:MovePreviousWindow() "{{{
    let l:prev_name = winnr()
    silent! wincmd p
    if l:prev_name == winnr()
        silent! wincmd w
    endif
endfunction
"}}}

"     ウィンドウを閉じないでバッファを閉じる。
command! Kwbd let kwbd_bn= bufnr("%")|enew|exe "bdel ".kwbd_bn|unlet kwbd_bn 

"}}}

"
" [Space]: Other useful commands "{{{
"     スペースキーのマッピングを見やすくする
"         noremapに&lt;Space&gt;で始まるものを使うと[Space]が表示されなくなるので注意！
nmap  &lt;Space&gt;   [Space]
xmap  &lt;Space&gt;   [Space]
nnoremap  [Space]   &lt;Nop&gt;
xnoremap  [Space]   &lt;Nop&gt;

"     Easily edit .vimrc and .gvimrc "{{{
nnoremap &lt;silent&gt; [Space]ev  :&lt;C-u&gt;edit $MYVIMRC&lt;CR&gt;

"}}}

"     Easily ctags command."{{{
nnoremap &lt;silent&gt; [Space]tr :&lt;C-u&gt;silent !ctags -R&lt;CR&gt;
"     Easily helptags command.
nnoremap &lt;silent&gt; [Space]td :&lt;C-u&gt;helptags ~/.vim/doc&lt;CR&gt;
"     Easily edit Snippets
nnoremap &lt;silent&gt; [Space]se :&lt;C-u&gt;NeoComplCacheEditSnippets&lt;CR&gt;
"}}}

"}}}

"
" Move search word to middle screen."{{{
nnoremap n  nzz
nnoremap N  Nzz
nnoremap *  *zz
nnoremap #  #zz
nnoremap g*  g*zz
nnoremap g#  g#zz
"}}}

"
" 0: Preview window "{{{
"     The prefix key.
nnoremap [Preview]   &lt;Nop&gt;
nmap    -  [Preview]

"     Toggle preview window."{{{
nnoremap &lt;silent&gt; [Preview]-  :&lt;C-u&gt;call&lt;SID&gt;preview_window_toggle()&lt;CR&gt;
function! s:preview_window_toggle()
    silent! wincmd P
    if &#038;previewwindow
        pclose
    elseif expand('%') != ''
        mkview
        silent! pedit
        silent loadview
        if foldclosed(line('.')) != -1
            "" Open folding.
          normal! zOgv0
        endif
    else
        normal! ma
        silent! pedit
        normal! `a
        if foldclosed(line('.')) != -1
            "" Open folding.
            normal! zOgv0
        endif
    endif
endfunction"}}}

"     Open preview window.
nnoremap [Preview]o  :&lt;C-u&gt;pedit&lt;CR&gt;
"     Close preview window.
nnoremap [Preview]c  :&lt;C-u&gt;pclose&lt;CR&gt;

"     Move to preview window."{{{
nnoremap &lt;silent&gt; [Preview]p :&lt;C-u&gt;call&lt;SID&gt;move_to_preview_window()&lt;CR&gt;

function! s:move_to_preview_window()
    if &#038;previewwindow
        wincmd p
    else
        silent! wincmd P
    endif
endfunction"}}}
"}}}

"}}}

"
" ============================================================
" objective-c の設定 "{{{

augroup ObjectiveC
	autocmd!
	" ビルドして実行
	autocmd FileType objc nnoremap &lt;buffer&gt;&lt;silent&gt; &lt;d-r&gt; :w&lt;bar&gt;call XcodeCommand('36')&lt;CR&gt;
	autocmd FileType objc inoremap &lt;buffer&gt;&lt;silent&gt; &lt;d-r&gt; &lt;Esc&gt;:w&lt;bar&gt;call XcodeCommand('36')&lt;CR&gt;

	" ビルドするだけ
	autocmd FileType objc nnoremap &lt;buffer&gt;&lt;silent&gt; &lt;d-b&gt; :w&lt;bar&gt;call XcodeCommand('11')&lt;CR&gt;
	autocmd FileType objc inoremap &lt;buffer&gt;&lt;silent&gt; &lt;d-b&gt; &lt;Esc&gt;:w&lt;bar&gt;call XcodeCommand('11')&lt;CR&gt;

	" クリーニング
	autocmd FileType objc nnoremap &lt;buffer&gt;&lt;silent&gt; &lt;d-k&gt; :w&lt;bar&gt;call XcodeCommand('40')&lt;CR&gt;
	autocmd FileType objc inoremap &lt;buffer&gt;&lt;silent&gt; &lt;d-k&gt; &lt;Esc&gt;:w&lt;bar&gt;call XcodeCommand('40')&lt;CR&gt;

	" makeでxcodebuild をつかうようにする。
	autocmd FileType objc setlocal makeprg=xcodebuild\ -activetarget\ -activeconfiguration\ \\\|\ grep\ -e\ \"^/.*\"\ \\\|\ sort\ -u

	" メソッドを一覧表示
	autocmd FileType objc nnoremap &lt;buffer&gt; &lt;silent&gt; &lt;A-2&gt; :&lt;c-u&gt;ListMethods&lt;cr&gt;

	" プロジェクトをXcodeで開く
	autocmd FileType objc nnoremap &lt;buffer&gt; &lt;silent&gt; &lt;A-0&gt; :call system('open -a Xcode '.b:cocoa_proj)&lt;cr&gt;

	" syntaxで自動折りたたみ
	autocmd FileType objc setlocal foldmethod=syntax

	function! XcodeCommand(keycode) "{{{
	call system("open -a Xcode ".b:cocoa_proj." &#038;&#038; osascript -e '"
		\ ."tell application \"Xcode\" to activate \r"
		\ ."tell application \"System Events\" \r"
		\ ."tell process \"Xcode\" \r"
		\ ."key code ".a:keycode." using {command down} \r"
		\ ."end tell \r"
		\ ."end tell \r'")
	endfunction
	"}}}

	" b:cocoa_proj の取得 "{{{
	if exists('b:cocoa_proj')
		finish
	endif
	let b:cocoa_proj = fnameescape(globpath(expand('&lt;afile&gt;:p:h'), '*.xcodeproj'))
	" Search a few levels up to see if we can find the project file
	if empty(b:cocoa_proj)
		let b:cocoa_proj  = fnameescape(globpath(expand('&lt;afile&gt;:p:h:h'), '*.xcodeproj'))

		if empty(b:cocoa_proj)
			let b:cocoa_proj = fnameescape(globpath(expand('&lt;afile&gt;:p:h:h:h'), '*.xcodeproj'))
			if empty(b:cocoa_proj)
				let b:cocoa_proj = fnameescape(globpath(expand('&lt;afile&gt;:p:h:h:h:h'), '*.xcodeproj'))
			endif
		endif
	endif
	let g:x = b:cocoa_proj
"}}}

	autocmd FileType objc nnoremap &lt;buffer&gt; &lt;A-9&gt; :call XcodeBuildCheck()&lt;CR&gt;
	autocmd FileType objc inoremap &lt;buffer&gt; &lt;A-9&gt; &lt;C-o&gt;:call XcodeBuildCheck()&lt;CR&gt;

	function! XcodeBuildCheck() "{{{
		let proj_dir = substitute(b:cocoa_proj, '\(.*\)\/.*' , '\1', '')
		let current_dir = getcwd()
		execute ":lcd " . escape(expand(proj_dir), " #\\")
		make
		execute ":lcd " . escape(expand(current_dir), " #\\")
	endfunction
	"}}}"

augroup END

"}}}

"
" ============================================================
" vimshellの設定 "{{{

augroup myVimShell
	autocmd!

	" tab文字の表示
	autocmd FileType vimshell setlocal nolist

	" vimshell のキーマップ"{{{

	"     neocomplcacheの補完をキャンセルしつつ、&lt;C-h&gt;をつかう設定。
	autocmd FileType vimshell imap &lt;buffer&gt;&lt;expr&gt;&lt;C-h&gt;   pumvisible() ? "\&lt;C-e&gt;\&lt;Plug&gt;(vimshell_another_delete_backword_char)" : "\&lt;C-h&gt;"
	autocmd FileType vimshell imap &lt;buffer&gt;&lt;expr&gt;&lt;BS&gt;    pumvisible() ? "\&lt;C-e&gt;\&lt;Plug&gt;(vimshell_another_delete_backword_char)" : "\&lt;BS&gt;"

	"     &lt;TAB&gt;でウィンドウを移動できるようにする
	autocmd FileType vimshell imap &lt;buffer&gt; &lt;TAB&gt;        &lt;Esc&gt;&lt;TAB&gt;

	"     &lt;A-\&gt;で分割したウィンドウでvimshellを新しく起動する
	autocmd FileType vimshell nmap &lt;buffer&gt;&lt;silent&gt;&lt;A-\&gt; :NicelyWindowSplit&lt;CR&gt; &lt;Plug&gt;(vimshell_create)
	autocmd FileType vimshell imap &lt;buffer&gt;&lt;silent&gt;&lt;A-\&gt; &lt;Esc&gt;:NicelyWindowSplit&lt;CR&gt; &lt;Plug&gt;(vimshell_create)

"}}}

	" cdしたら自動でls -aコマンド "{{{
	autocmd FileType vimshell call vimshell#hook#set('chpwd', ['g:my_chpwd'])

	function! g:my_chpwd(args, context)
		call vimshell#execute('ls -a')
	endfunction
"}}}

augroup END
"}}}

"
" ============================================================
" Gvim用の設定
"
if has ('gui_macvim')
" ============================================================
" 色の設定 "{{{
" 

" カラースキーマをロードする
colorscheme stakatomo

" 透明度の設定
set transparency=17

" アンチエイリアスの設定
set antialias

" カーソル行の色
set cursorline

" 挿入モード時、ステータスラインの色を変更
let g:hi_insert = 'highlight StatusLine guifg=white guibg=#533166 gui=none ctermfg=blue ctermbg=yellow cterm=none'

if has('syntax')
  augroup InsertHook
    autocmd!
    autocmd InsertEnter * call s:StatusLine('Enter')
    autocmd InsertLeave * call s:StatusLine('Leave')
  augroup END
endif

let s:slhlcmd = ''
function! s:StatusLine(mode)
  if a:mode == 'Enter'
    silent! let s:slhlcmd = 'highlight ' . s:GetHighlight('StatusLine')
    silent exec g:hi_insert
  else
    highlight clear StatusLine
    silent exec s:slhlcmd
  endif
endfunction

function! s:GetHighlight(hi)
  redir =&gt; hl
  exec 'highlight '.a:hi
  redir END
  let hl = substitute(hl, '[\r\n]', '', 'g')
  let hl = substitute(hl, 'xxx', '', '')
  return hl
endfunction

"}}}

"
" ============================================================
" 画面の設定 "{{{
" 

" 画面の列幅の設定
set columns=239

" 画面の行数
set lines=76

" フルスクリーンモード
"" set fuoptions=maxvert,maxhorz
"" autocmd GUIEnter * set fullscreen 

" ツールバーの表示 非表示
set guioptions-=T

" 右スクロールバーの表示 非表示
set guioptions-=r
set guioptions-=R

" 左スクロールバーの表示 非表示
set guioptions-=l
set guioptions-=L

" フォントの設定
set guifont=Menlo\ Regular:h13
set guifontwide=あずきフォント:h14

"}}}

endif

"
" Objc 用の正規表現
"Delete-Comment s/\/\*\([^\/]\|[^*]\/\|\n\)*\*\//g
"Instance to @synthesize s/^\s\+.\+\*\(.\+;\)/@synthesize \1/g
"Instance to @synthesize - dealloc s/^@synthesize\s\+\(.\+\);/[\1 release];/g
"Instance to @property s/^\s\+/@property(nonatomic, retain) IBOutlet /g

</code></pre>
<p>入れているプラグインは</p>
<ul>
<li>neocomplcache.vim</li>
<li>vimshell.vim、vimproc</li>
<li>cocoa.vim</li>
<li>project.vim</li>
<li>quickrun.vim</li>
<li>neoui.vim</li>
<li>surround.vim</li>
<li>NERDCommenter</li>
<li>Align</li>
<li>QFixGrep</li>
<li>matchit.vim</li>
<li>git-vim</li>
<li>bufexplorer.vim</li>
<li>lingr-vim</li>
<li>taglist.vim</li>
<li>jsbeautify.vim</li>
<li>delimitMate.vim</li>
<li>easytags.vim</li>
</ul>
<p>しかし、長い。。。</p>
<p>毎日、少しずついじっているのですが、まだまだ設定しなきゃいけないことも多かったりします。とくにtagファイルだったり、includeファイルの設定だったり。。。。しかもコメントに書いてあることと違うキーバインドになっているところがあるという罠まで用意してあるという困った設定ファイルになっています。</p>
<p>半分ぐらいはneocomplcache.vimの作者さんが公開している設定ファイルからの移植が半分ぐらいはの割合だったりもするわけで、プラグインともどもありがたく使わせていただいています。</p>
<p>参考になりそうなところがあれば、使ってみてくださいね。</p>
<p>でわでわ、たかともでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/686/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>完全版 VimからXcodeプロジェクトをビルド &amp; 文法チェック♪</title>
		<link>http://www.st-prestage.jp/blog/mac/675</link>
		<comments>http://www.st-prestage.jp/blog/mac/675#comments</comments>
		<pubDate>Sun, 18 Jul 2010 09:35:38 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[cocoa.vim]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/675</guid>
		<description><![CDATA[昨日、記事書いたばっかりですが QuickFixとの連携もできるような設定ができたので、紹介です。


augroup MyObjcAutoCmd

autocmd!
autocmd FileType objc setl [...]]]></description>
			<content:encoded><![CDATA[<p>昨日、記事書いたばっかりですが QuickFixとの連携もできるような設定ができたので、紹介です。</p>
<pre><code>

augroup MyObjcAutoCmd

autocmd!
autocmd FileType objc setlocal makeprg=xcodebuild\ -activetarget\ -activeconfiguration\ \\\|\ grep\ -e\ \"^/.*\"\ \\\|\ sort\ -u

autocmd FileType objc nnoremap &lt;buffer&gt; &lt;C-9&gt; :call XcodeBuildCheck()&lt;CR&gt;
autocmd FileType objc inoremap &lt;buffer&gt; &lt;C-9&gt; &lt;C-o&gt;:call XcodeBuildCheck()&lt;CR&gt;

function! XcodeBuildCheck() "{{{
	let proj_dir = substitute(b:cocoa_proj, '\(.*\)\/.*' , '\1', '')
	let current_dir = getcwd()
	execute ":lcd " . escape(expand(proj_dir), " #\\")
	make
	execute ":lcd " . escape(expand(current_dir), " #\\")
endfunction

augroup END

</code></pre>
<p>b:cocoa_projを取得するために<a href="http://www.st-prestage.jp/blog/mac/668">前回の記事</a>の下の方の設定をもってくるか、cocoa.vimをいれるかのどちらかが必要です。</p>
<p>Xcodeでつくったクラスファイルを編集中にcontrol+9をすると自動でxcodeprojファイルのあるディレクトリにカレントディレクトリを移して、makeしてくれます。またmakeが終わった時点でカレントディレクトリをもとの場所に戻してくれる処理もいれてあります。</p>
<p><a href="http://www.st-prestage.jp/blog/wp-content/uploads/7fee62bd23e570e6c228619f92605182.png"><img src="http://www.st-prestage.jp/blog/wp-content/uploads/8ed30eb384fb945c48076c045843c670.jpg" width="300" height="110" alt="スクリーンショット（2010-07-18 18.26.38）.png" /></a></p>
<p>またエラー箇所をQuickfixで見られるようになっています。grepでエラー箇所を探したあとに sort -u でエラー箇所の重複の削除をしています。もしかしたら副作用があるかもしれないです。</p>
<p><a href="http://www.st-prestage.jp/blog/wp-content/uploads/cece708619da773990597a70eddee45f.png"><img src="http://www.st-prestage.jp/blog/wp-content/uploads/4f6285fff7d3210f66928b5f69586d77.jpg" width="300" height="303" alt="スクリーンショット（2010-07-18 18.27.10）.png" /></a></p>
<p>前回の記事が嘘のような使い心地ですよ〜＞＜ 最初からこうすればよかったと。</p>
<p>みなさん、ぜひぜひ設定してくださいっ！！</p>
<p>ちなみにVimでMacアプリケーション開発してる人、iPhoneアプリ開発してる人ってどれぐらいいるんでしょうか？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/675/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VimからXcodeを使わずにビルドしてみた。cocoa.vim必須？</title>
		<link>http://www.st-prestage.jp/blog/mac/668</link>
		<comments>http://www.st-prestage.jp/blog/mac/668#comments</comments>
		<pubDate>Sat, 17 Jul 2010 11:47:14 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[cocoa.vim]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/668</guid>
		<description><![CDATA[Vimにcocoa.vimを導入してからすっかりXcodeはビルド用になってます。
Vim + cocoa.vimで少し不満だったのが、エラーをみたいときにいちいちXcodeとVimとをいったりきたりしないといけないとい [...]]]></description>
			<content:encoded><![CDATA[<p>Vimにcocoa.vimを導入してからすっかりXcodeはビルド用になってます。</p>
<p>Vim + cocoa.vimで少し不満だったのが、エラーをみたいときにいちいちXcodeとVimとをいったりきたりしないといけないというところ。わがままなのかもしれないですが、どうせならVimだけでさくっと確認したいなぁ〜と。</p>
<p>そんなわけでからXcodeを使わずに文法チェック（というかビルドしてるという。。。）するための設定をしてみました。</p>
<pre><code>

autocmd FileType objc nnoremap &lt;buffer&gt; &lt;C-9&gt; :call XcodeBuildCheck()&lt;CR&gt;
autocmd FileType objc inoremap &lt;buffer&gt; &lt;C-9&gt; &lt;C-o&gt;:call XcodeBuildCheck()&lt;CR&gt;

function! XcodeBuildCheck() "{{{
	let proj_dir = substitute(b:cocoa_proj, '\(.*\)\/.*' , '\1', '')
	let proj_file = substitute(b:cocoa_proj, '\(.*\)\/\(.*\)', '\2', '')
	let current_dir = getcwd()
	execute ":lcd " . escape(expand(proj_dir), " #\\")
	let error_message = system( 'xcodebuild -project ' . escape(expand(proj_file), " #\\") .' -activetarget -activeconfiguration')
	echo error_message
	execute ":lcd " . escape(expand(current_dir), " #\\")
endfunction

</code></pre>
<p>上のコードを.vimrcに追加するとXcodeプロジェクトに含まれているファイルを編集しているときにControl+9を押すとシステムのxcodebuildというコマンドを呼び出してビルドをしてくれて、ビルド結果が表示されるようになります。Xcodeをいちいち立ち上げしなくてもビルドできるので楽ちんです♪</p>
<p>やりたかったけど、できなかったこと</p>
<ul>
<li>error_messageを整形するなりして表示されるメッセージを綺麗にしたかった。</li>
<li>QuickFixのウィンドウに表示して、エラー行にすぐに飛べるようにしたかった。</li>
</ul>
<p>1つ目の「メッセージの整形」は、substitute()をつかって抽出できるかな？と試してみたのですが、うまくいかず。2つ目の「QuickFixウィンドウを使う」はできるのかどうかもわからない。そんな状態になってます。VimScriptってよくわからないんですよね。。。。そんなわけでだれか作ってくれないかなぁ〜なんて思ってしまいます。</p>
<p>Objective-CでVimを動かせないかな。。。。</p>
<p>ともあれ、Xcodeを使わずにVimだけでビルドができる &#038; 文法エラーもチェックできるので、ぜひぜひ試してみてください。</p>
<p>というわけで、たかともでした。</p>
<p>ちなみにb:cocoa_projが取得できればcocoa.vimはいらないです。こんな感じ。</p>
<pre><code>

if exists('b:cocoa_proj')
	finish
endif
let b:cocoa_proj = fnameescape(globpath(expand('&lt;afile&gt;:p:h'), '*.xcodeproj'))
" Search a few levels up to see if we can find the project file
if empty(b:cocoa_proj)
	let b:cocoa_proj  = fnameescape(globpath(expand('&lt;afile&gt;:p:h:h'), '*.xcodeproj'))
		if empty(b:cocoa_proj)
		let b:cocoa_proj = fnameescape(globpath(expand('&lt;afile&gt;:p:h:h:h'), '*.xcodeproj'))
		if empty(b:cocoa_proj)
			let b:cocoa_proj = fnameescape(globpath(expand('&lt;afile&gt;:p:h:h:h:h'), '*.xcodeproj'))
		endif
	endif
endif

</code></pre>
<p><code>autocmd FileType objc setlocal makeprg=xcodebuild\ -activetarget\ -activeconfiguration</code><br />
をしておいて、ビルドするときに:lcdでxcodeprojがあるディレクトリにいって:makeする方法を見つけて、泣きそうです。</p>
<p>まぁ、いちいち:lcdしなくてもいい利点はあるものの、やってしまった感が。。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/668/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ファイルを開いてもいいですか？なんて聞かれたくないんです。</title>
		<link>http://www.st-prestage.jp/blog/mac/667</link>
		<comments>http://www.st-prestage.jp/blog/mac/667#comments</comments>
		<pubDate>Fri, 09 Jul 2010 06:18:29 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/667</guid>
		<description><![CDATA[Leopardになったころからだか、出てくるようになった「ファイルを開いてもいいですか？」のアラート

ファイルを開くたびに聞かれると、作業のリズムがくずれてしまいます。
このアラートを表示させないようにするための設定が [...]]]></description>
			<content:encoded><![CDATA[<p>Leopardになったころからだか、出てくるようになった「ファイルを開いてもいいですか？」のアラート</p>
<p><a href="http://www.st-prestage.jp/blog/wp-content/uploads/201007091458.jpg"><img src="http://www.st-prestage.jp/blog/wp-content/uploads/201007091458-tm.jpg" width="300" height="127" alt="201007091458.jpg" /></a></p>
<p>ファイルを開くたびに聞かれると、作業のリズムがくずれてしまいます。</p>
<p>このアラートを表示させないようにするための設定が見つかったのでメモ。</p>
<p>~/Library/Preferencesにcom.apple.DownloadAssessment.plistという名前のファイルをつくる。内容は以下。</p>
<pre><code>

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE plist PUBLIC &quot;-//Apple//DTD PLIST 1.0//EN&quot; &quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&gt;
&lt;plist version=&quot;1.0&quot;&gt;
&lt;dict&gt;
	&lt;key&gt;LSRiskCategorySafe&lt;/key&gt;
	&lt;dict&gt;
		&lt;key&gt;LSRiskCategoryContentTypes&lt;/key&gt;
		&lt;array&gt;
			&lt;string&gt;public.html&lt;/string&gt;
			&lt;string&gt;public.xml&lt;/string&gt;
			&lt;string&gt;public.php-script&lt;/string&gt;
		&lt;/array&gt;
		&lt;key&gt;LSRiskCategoryExtensions&lt;/key&gt;
		&lt;array&gt;
			&lt;string&gt;xhtml&lt;/string&gt;
		&lt;/array&gt;
	&lt;/dict&gt;
&lt;/dict&gt;
&lt;/plist&gt;

</code></pre>
<p>このとき別のファイル形式も追加したい場合は&lt;array&gt;&lt;/array&gt;の間に、&lt;string&gt;ファイルの拡張子&lt;/stinrg&gt;の形式で追加していくことができます。またファイルの拡張子以外にもUTI(Uniform Type Identifiers)という指定方法もできます。上記のpublic.htmlとかはその1種類。詳しくはmac Uniform Type Identifiersでも検索してみてください。</p>
<p>さようなら、アラート。</p>
<p>こんにちは、快適な生活♪</p>
<p>みなさんも設定してみてくださいね。</p>
<p>でわでわ、たかともでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/667/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>追記：Vimでファイルの自動保存 改良版</title>
		<link>http://www.st-prestage.jp/blog/mac/663</link>
		<comments>http://www.st-prestage.jp/blog/mac/663#comments</comments>
		<pubDate>Mon, 05 Jul 2010 23:29:01 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/663</guid>
		<description><![CDATA[Vimでファイルを自動補完する際のス設定を変更しました
今回の設定だとファイルが存在すればファイルを自動で保存、ファイルが存在しなければ自動で保存しないようになります。そのため新規にファイルを作った場合だと初回だけ自分で [...]]]></description>
			<content:encoded><![CDATA[<p>Vimでファイルを自動補完する際のス設定を変更しました</p>
<p>今回の設定だとファイルが存在すればファイルを自動で保存、ファイルが存在しなければ自動で保存しないようになります。そのため新規にファイルを作った場合だと初回だけ自分でファイルの保存をしないといけないわけですが、テストのためにちょっとしたファイルを作る→勝手に保存される→あとでファイルを消す。そんなこと状況を回避するために設定を変更しています。</p>
<p>と、書いたもののものすごい短い設定になってます。</p>
<pre><code>

" 何も操作をしていないと判定される時間
set updatetime=500
set updatecount=500

" 操作がとまったら自動で保存する
autocmd! CursorHold * if filereadable(expand("%"))!=0 | update
autocmd! CursorHoldI * if filereadable(expand("%"))!=0 | update

</code></pre>
<p>自動保存、さいこうです〜〜〜♪</p>
<p>でわでわ、たかともでした。</p>
<p><em>追記</em></p>
<p>上の設定だとQFixGrepのプレビューウィンドウが開かなくなるという自体になりました。いや、さっきまではちゃんとプレビューウィンドウも開いていたんですけど、急にQFixGrepが見つからないよ〜とエラーが出たと思ったら、プレビューウィンドウが開かなくなったという不思議ちゃん。</p>
<p>if以降を関数として定義→CursorHoldイベントで呼び出すと直りました。</p>
<p>以下、コード。autocmd!の部分を変更してください</p>
<pre><code>

" 操作がとまったら自動で保存する
autocmd! CursorHold * call g:my_auto_save()
autocmd! CursorHoldI * call g:my_auto_save()

function! g:my_auto_save()
    if filereadable("%")!=0
        update
    endif
    return
endfunction

</code></pre>
<p>でもなんで関数を定義して呼び出したら、プレビューウィンドウが開くようになったんだろう。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/663/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VimとかEmacsでのファイルの自動保存が楽しすぎるっ！！</title>
		<link>http://www.st-prestage.jp/blog/mac/661</link>
		<comments>http://www.st-prestage.jp/blog/mac/661#comments</comments>
		<pubDate>Thu, 01 Jul 2010 18:31:56 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Emacs]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/661</guid>
		<description><![CDATA[EmacsでもVimでも少しでも作業がとまると自動で保存してくれるのが、ものすごい便利だったりします。副作用がないわけではないのですが、ファイルの管理はバージョン管理のSubversionとかGitとかに任せてしまってい [...]]]></description>
			<content:encoded><![CDATA[<p>EmacsでもVimでも少しでも作業がとまると自動で保存してくれるのが、ものすごい便利だったりします。副作用がないわけではないのですが、ファイルの管理はバージョン管理のSubversionとかGitとかに任せてしまっているので、実に快適に作業できちゃうんですよね。</p>
<p>というわけで、EmacsとVim。両方の自動保存するための設定を紹介したいと思います</p>
<h1>Vim編</h1>
<p>以下の設定をVimの設定ファイルに追加</p>
<pre><code>
" 何も操作をしていないと判定される時間
set updatetime=500
set updatecount=500

" バッファの切り替えなどのときにファイルを自動で保存する。
set autowriteall
"set autowrite

" 操作がとまったときにファイルが更新されていれば自動で保存する
autocmd! CursorHold *.* update
autocmd! CursorHoldI *.* update

" ついでに操作がとまったら保存されるのでSwapファイルもバックアップファイルもいらない。

" バックアップファイルを作らない
set nobackup

" swapファイルを作らない
set noswapfile

</code></pre>
<p><code>autocmd! CursolHold *.* update</code>を<code>autocmd! CursorHold * update</code>に変更すると無名バッファで編集ができなくなるので、こんな表記に。。。。無名バッファを表すときってどうやって表現したらいいのかわからなかったので、こんな表現になっています。</p>
<p>注意：BufWritePostにコマンドを割り当てていたりすると副作用があるかもしれないです。</p>
<h1>Emacs編</h1>
<p><a href="http://0xcc.net/misc/auto-save/">こちらのサイトからauto-save-buffers.el</a>をダウンロード。以下のコードをEmacsの設定ファイルに追加してあげる。</p>
<pre><code>

(require 'auto-save-buffers)
(run-with-idle-timer 0.5 t 'auto-save-buffers)

</code></pre>
<p>「たかともは保存を忘れたようだ。」</p>
<p>いちばんの副作用は、ほかのアプリケーションを使ってるときにまで保存するのを忘れたするようになってしまったことです。</p>
<p>みなさん、気をつけてつかってみてくださいね。</p>
<p>でわでわ、たかともでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/661/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xcodeで置換文字列にタブとか改行を入力する方法</title>
		<link>http://www.st-prestage.jp/blog/mac/656</link>
		<comments>http://www.st-prestage.jp/blog/mac/656#comments</comments>
		<pubDate>Sat, 26 Jun 2010 12:34:11 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/656</guid>
		<description><![CDATA[前回の記事で正規表現の検索ができたので、Xcodeが好きになりました。すごく便利です。あとは選択範囲だけの置換をショートカット使ってできればしばらくXcodeで開発するのもいいのかなぁと思い始めてます。
すこし検索が便利 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.st-prestage.jp/blog/mac/655">前回の記事</a>で正規表現の検索ができたので、Xcodeが好きになりました。すごく便利です。あとは選択範囲だけの置換をショートカット使ってできればしばらくXcodeで開発するのもいいのかなぁと思い始めてます。</p>
<p>すこし検索が便利になったので、今度は置換も少し便利にしておきたい。Xcodeを解説しているところをみると、置換文字列に改行とかタブを入れるときはコピペで入力すると書かれているのですが、いちいちコピペしないでも入力できる方法があったりします。それは。。。</p>
<ul>
<li>Option + TAB = タブ</li>
<li>Option + Enter = 改行</li>
</ul>
<p>置換文字列を入力するときにOptionを同時に押すだけで、置換文字列にタブとか改行を入力できるようになります。</p>
<p>ファイル内検索で正規表現を使えるのを知らなかったのが、恥ずかしすぎる。。。。。というわけで、Xcodeの記事 2連発でした。まだまだ知らないことがいっぱいです。Xcode、奥深しっ！！</p>
<p>でわでわ、たかともでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/656/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xcodeで正規表現でファイル内検索する。</title>
		<link>http://www.st-prestage.jp/blog/mac/655</link>
		<comments>http://www.st-prestage.jp/blog/mac/655#comments</comments>
		<pubDate>Sat, 26 Jun 2010 10:01:02 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/655</guid>
		<description><![CDATA[いままで何をやってたんでしょうか。Xcodeのファイル内検索がパネルで表示されていたときには正規表現で検索できたのに、検索パネルから検索バーに変わってから正規表現で検索できなくなったのか＞＜とおもってがっかりしていたので [...]]]></description>
			<content:encoded><![CDATA[<p>いままで何をやってたんでしょうか。Xcodeのファイル内検索がパネルで表示されていたときには正規表現で検索できたのに、検索パネルから検索バーに変わってから正規表現で検索できなくなったのか＞＜とおもってがっかりしていたのです。</p>
<p>。。。すみませんでした。Apple様っ！！</p>
<p>というわけで、方法をメモ。</p>
<p>検索パネルでサーチバーの左にあるアイコンをクリック。</p>
<p>正規表現をチェックする。</p>
<p><a href="http://www.st-prestage.jp/blog/wp-content/uploads/XcodeSS005.png"><img src="http://www.st-prestage.jp/blog/wp-content/uploads/XcodeSS005-tm.jpg" width="300" height="244" alt="XcodeSS005.png" /></a></p>
<p>Xcodeを使い始めて、6年ぐらい、まったく情けない。</p>
<p>「できないっ！！」って結論を出す前にきちんと探しましょう♪</p>
<p>ではでは、たかともでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/655/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>flvからmp4に拡張子を変更するAutomatorワークフロー</title>
		<link>http://www.st-prestage.jp/blog/mac/651</link>
		<comments>http://www.st-prestage.jp/blog/mac/651#comments</comments>
		<pubDate>Sun, 20 Jun 2010 07:26:32 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Automater]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/651</guid>
		<description><![CDATA[動画の拡張子を手動で変更するのがめんどくさくって、作ってみました。
使い方はアプリケーションアイコンをクリックするとファイル・フォルダを選択するウィンドウがでてくるので、ファイル・フォルダを選択してあげるだけで自動的にf [...]]]></description>
			<content:encoded><![CDATA[<p>動画の拡張子を手動で変更するのがめんどくさくって、作ってみました。</p>
<p>使い方はアプリケーションアイコンをクリックするとファイル・フォルダを選択するウィンドウがでてくるので、ファイル・フォルダを選択してあげるだけで自動的にflvからmp4に拡張子を変更してくれます。</p>
<p>変更が簡単にできるようにワークフローのファイルも同梱しています。</p>
<p>フォルダを再帰的に検索することはしていませんが、ワークフローファイル内の「フォルダの内容を取得」で「見つかった各サブフォルダからも取得」にチェックを入れれば再帰的に検索することもできるはずです。お好みで変更してください。</p>
<p>またシェルスクリプトの部分だけを取り出して、フォルダアクションやサービスメニューとしてつかってあげるのもおもしろいかな？？ただフォルダアクションで使うと拡張子が変更される際にフォーカスをとられるので、注意が必要になります。ビバ、Automator♪</p>
<p><a href="http://www.st-prestage.jp/myscript/FlvToMp4.zip">ダウンロードはこちらから</a></p>
<p>でわでわ、たかともでした。</p>
<p>注意：ファイルの拡張子だけを変更しているだけなので注意してください。</p>
<p>拡張子flvをmp4に変更する利点</p>
<p>flvのファイルは映像: H.264で音声: AACのファイルをflvでくるんでいるだけということが多いので、拡張子を変更するだけでQuickTimeでみたり、QuickLookができるようになったりします。あとはCoverFlowで表示させることができたり、FrontRowで再生することができるようになったりするのもうれしかったりします♪</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/651/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Safariのダウンロードウィンドウの高機能さにびっくり？？</title>
		<link>http://www.st-prestage.jp/blog/mac/650</link>
		<comments>http://www.st-prestage.jp/blog/mac/650#comments</comments>
		<pubDate>Fri, 18 Jun 2010 05:35:11 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Safari]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/650</guid>
		<description><![CDATA[まさかこんな簡単にダウンロードができるようになるとはっ！！
「http://hogehoge.com/hogehoge.pdf」のようにリンクが貼られていないファイルをダウンロードするときってどうしていますか？？意外とめ [...]]]></description>
			<content:encoded><![CDATA[<p>まさかこんな簡単にダウンロードができるようになるとはっ！！</p>
<p>「http://hogehoge.com/hogehoge.pdf」のようにリンクが貼られていないファイルをダウンロードするときってどうしていますか？？意外とめんどくさいんですよね。右クリックしてもファイルを保存ってメニューがでてこないので、くぁぁってなります。そんなときに使える簡単ダウンロード方法を見つけました〜。</p>
<p>方法はものすごく簡単。</p>
<ol>
<li>Safariでダウンロードウィンドウを開く。(Command + Option + L)</li>
<li>ダウンロードしたいファイルのあるURLを選択する。</li>
<li>ダウンロードウィンドウにドラッグ&#038;ドロップ</li>
</ol>
<p>ただこれだけでよかったんです。いちいちターミナルを開いてwgetしなくっても、curlしなくっても、ぽいっぽいっといれていくだけでダウンロードができたんです。ダウンロードするのにめんどくさいことなんてなんにもなかったんです。「リンクしないのかっ！！」ってツッコミをいれなくってもよかったのですっ！！</p>
<p>。。。。いままでの苦労はいったい。</p>
<p>ターミナルにドロップするはずが、たまたまダウンロードウィンドウにドロップしてしまって見つけたとか、まさに運命の出会いですね。</p>
<p>ぜひ使ってみてくださいね。ツッコミしてる場合じゃないですよ？！</p>
<p>でわでわ、たかともでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/650/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cocoa.vimでXcodeのビルドを動かす。</title>
		<link>http://www.st-prestage.jp/blog/mac/631</link>
		<comments>http://www.st-prestage.jp/blog/mac/631#comments</comments>
		<pubDate>Wed, 09 Jun 2010 14:25:32 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[cocoa.vim]]></category>
		<category><![CDATA[Vim]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/631</guid>
		<description><![CDATA[EmacsからVimに乗り換えるきっかけになったプラグイン。
cocoa.vim
Vimで開発するときには必須のプラグインです。

C-x C-o or F2 = オムニ補完
Command + Option + ↑ = [...]]]></description>
			<content:encoded><![CDATA[<p>EmacsからVimに乗り換えるきっかけになったプラグイン。</p>
<p><em><a href="http://www.vim.org/scripts/script.php?script_id=2674">cocoa.vim</a></em></p>
<p>Vimで開発するときには必須のプラグインです。</p>
<ul>
<li>C-x C-o or F2 = オムニ補完</li>
<li>Command + Option + ↑ = ヘッダーファイルと実装ファイルの切り替え</li>
<li>Command + 2 = メソッド（関数)のリスト表示</li>
<li>Command + 0 = Xcodeで開く</li>
<li>ノーマルモードで K = カーソルの下の単語をドキュメントから検索</li>
</ul>
<p>このあたりはXcodeにはできるけど、Vimにはない機能をうまく補ってくれます。</p>
<p>が、</p>
<ul>
<li>Command + R = ビルドしてXcodeに移動する</li>
<li>Command + B = ビルド</li>
<li>Command + shift + K = クリーン</li>
</ul>
<p>Xcodeを使って手動でビルドしてあげると問題ないプロジェクトでも、このあたりの機能を使おうとするとなぜかXcodeがエラーをはいてました。いろいろ調べていたのですが解決方法を二つほどみつけたので紹介します。</p>
<h2>その１: AppleScriptでショートカットを直接たたく。</h2>
<p>~/.vim/ftplugin/objc_cocoa_mappings.vimを以下の通りに変更します。</p>
<p>削除、もしくはコメントアウトする部分</p>
<pre>
34行目～36行目
<code>
nn &lt;buffer&gt; &lt;silent&gt; &lt;d-r&gt; :w&lt;bar&gt;cal&lt;SID&gt;BuildAnd('launch')&lt;cr&gt;
nn &lt;buffer&gt; &lt;silent&gt; &lt;d-b&gt; :w&lt;bar&gt;cal&lt;SID&gt;XcodeRun('build')&lt;cr&gt;
nn &lt;buffer&gt; &lt;silent&gt; &lt;d-K&gt; :w&lt;bar&gt;cal&lt;SID&gt;XcodeRun('clean')&lt;cr&gt;
</code>
</pre>
<p>追加する部分</p>
<pre>
最後の方にでもどうぞ。
<code>
nn &lt;buffer&gt; &lt;silent&gt; &lt;d-r&gt; :w&lt;bar&gt;cal&lt;SID&gt;XcodeBuildRun&lt;cr&gt;
nn &lt;buffer&gt; &lt;silent&gt; &lt;d-b&gt; :w&lt;bar&gt;cal&lt;SID&gt;XcodeBuild&lt;cr&gt;
nn &lt;buffer&gt; &lt;silent&gt; &lt;d-K&gt; :w&lt;bar&gt;cal&lt;SID&gt;XcodeClean&lt;cr&gt;

</code>
</pre>
<pre>
<code>fun s:XcodeBuildRun()  call system("open -a Xcode ".b:cocoa_proj." &amp;&amp; osascript -e '"    \ ."tell application \"Xcode\" to activate \r"    \ ."tell application \"System Events\" \r"    \ ."tell process \"Xcode\" \r"    \ ."key code 36 using {command down} \r"    \ ."end tell \r"    \ ."end tell \r'")

fun s:XcodeBuild()  call system("open -a Xcode ".b:cocoa_proj." &amp;&amp; osascript -e '"    \ ."tell application \"Xcode\" to activate \r"    \ ."tell application \"System Events\" \r"    \ ."tell process \"Xcode\" \r"    \ ."key code 11 using {command down} \r"    \ ."end tell \r"    \ ."end tell \r'")

fun s:XcodeClean()call system("open -a Xcode ".b:cocoa_proj." &amp;&amp; osascript -e '"\ ."tell application \"Xcode\" to activate \r"\ ."tell application \"System Events\" \r"\ ."tell process \"Xcode\" \r"\ ."key code 40 using {command down} \r"\ ."end tell \r"\ ."end tell \r'")

</code>
</pre>
<p>実際、ビルドして実行以外は試していないのですがこれでいけるはず。。。いけなかったらごめんなさい。またこの方法だとcocoa.vimの動作が少し動作が変わってしまいます。</p>
<ul>
<li>Command + R = ビルドして実行する（iPhoneシミュレータが起動する）</li>
<li>Command + B = ビルドしてXcodeに移動する</li>
<li>Command + shift + K = クリーニングをしてXcodeに移動する。</li>
</ul>
<h2>その2: Xcodeの設定を変更する。</h2>
<ol>
<li>Xcodeでプロジェクトを右クリックして情報を見るを選択。 <a href="http://www.st-prestage.jp/blog/wp-content/uploads/LaunchBarSS004.png"><img src="http://www.st-prestage.jp/blog/wp-content/uploads/LaunchBarSS004-tm.jpg" width="300" height="217" alt="LaunchBarSS004.png" /></a></li>
<li>ベースSDKの項目を探して、iPhoneシミュレータを選ぶ。 <a href="http://www.st-prestage.jp/blog/wp-content/uploads/XcodeSS003.png"><img src="http://www.st-prestage.jp/blog/wp-content/uploads/XcodeSS003-tm.jpg" width="300" height="217" alt="XcodeSS003.png" /></a></li>
<li>アーキテクチャをNavive Architecture of Build Machineに変更する。 <a href="http://www.st-prestage.jp/blog/wp-content/uploads/XcodeSS004.png"><img src="http://www.st-prestage.jp/blog/wp-content/uploads/XcodeSS004-tm.jpg" width="300" height="217" alt="XcodeSS004.png" /></a></li>
</ol>
<p>こちらの方法の欠点はベースSDKなどやアーキテクチャを変更してしまっているので、注意が必要だったりもします。またCommand + BするにはMakefileのあるディレクトリにあるファイルを編集している必要があるようです。</p>
<p>たかともは方法2の設定をしていますが、お好みにあわせてどうぞ♪</p>
<p>ここまで書いておもったのですが、方法1でやるなら</p>
<pre>
<code>
" ビルドして実行
autocmd! FileType objc nn &lt;buffer&gt;&lt;silent&gt; &lt;d-r&gt; :w&lt;bar&gt;call&lt;SID&gt;XcodeCommand('36')&lt;cr&gt;
" ビルドするだけ
autocmd! FileType objc nn &lt;buffer&gt;&lt;silent&gt; &lt;d-b&gt; :w&lt;bar&gt;call&lt;SID&gt;XcodeCommand('11')&lt;cr&gt;
" クリーニング
autocmd! FileType objc nn &lt;buffer&gt;&lt;silent&gt; &lt;d-K&gt; :w&lt;bar&gt;cal&lt;SID&gt;XcodeCommand('40')&lt;cr&gt;

</code>
</pre>
<pre>
<code>function! s:XcodeCommand(keycode)  call system("open -a Xcode ".b:cocoa_proj." &amp;&amp; osascript -e '"    \ ."tell application \"Xcode\" to activate \r"    \ ."tell application \"System Events\" \r"    \ ."tell process \"Xcode\" \r"    \ ."key code ".a:keycode." using {command down} \r"    \ ."end tell \r"    \ ."end tell \r'") endfunction</code>
</pre>
<pre>
<code></code>
</pre>
<p>こんなコードを~/.vim/ftplugin/objc_cocoa_mappings.vimに追加してあげた方がスマートな気がします。ちゃんと動くのか不安ですが。。。。動作報告よろしくお願いします。というわけでMac ＆ iPhoneの開発者のみなさん、iPhone4にむけてがんばりましょ～♪</p>
<p>でわでわ、たかともでした。</p>
<h2>追記</h2>
<p><del>上のコードだともcocoa.vimにもともとある関数が呼ばれてしまうみたいです。「<code>autocmd! FileType ～</code>」の部分のの部分を調節して使う。もしくは方法1で削除する部分を消したあとに、上のコードをVimの設定ファイルに追加してください。</del></p>
<p>2010/06/09：方法1の追加するコードの代わりに上のコードを使うように修正</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/631/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
