<?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 &#187; Mac</title>
	<atom:link href="http://www.st-prestage.jp/blog/category/mac/feed" rel="self" type="application/rss+xml" />
	<link>http://www.st-prestage.jp/blog</link>
	<description>のんびり更新中</description>
	<lastBuildDate>Wed, 25 Aug 2010 15:51:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>選択範囲を ()  や HTML タグで囲む Emacs</title>
		<link>http://www.st-prestage.jp/blog/mac/782</link>
		<comments>http://www.st-prestage.jp/blog/mac/782#comments</comments>
		<pubDate>Wed, 25 Aug 2010 15:51:51 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/782</guid>
		<description><![CDATA[Emacsに選択範囲を囲むようなコマンドがないなぁ〜と思い、作ってみたら意外と便利だったので、紹介します。
以下のコードをEmacsの設定ファイルに書いて、M-x st-insert-pair として、ミニバッファに入力 [...]]]></description>
			<content:encoded><![CDATA[<p>Emacsに選択範囲を囲むようなコマンドがないなぁ〜と思い、作ってみたら意外と便利だったので、紹介します。</p>
<p>以下のコードをEmacsの設定ファイルに書いて、M-x st-insert-pair として、ミニバッファに入力します。</p>
<ul>
<li>puthashの左側の文字列 (&#8221; とか { [[ とか）を入力した場合、puthash の右側が自動で補完。</li>
<li>HTML のタグ ( &lt;p class="hoghoge"&gt; とか) を入力すると、閉じタグが補完されます。</li>
<li>そのほかの文字列を入力した場合は入力した文字列が補完されます。</li>
</ul>
<p>リージョンを選択していない場合、補完後にカーソルが入力した文字列と補完された文字列の間に置かれます。リージョンを選択してから M-x st-insert-pair した場合は リージョンを囲むように入力した文字列、補完される文字列が入力されます。またカーソルは補完された文字列の後ろに置かれます。</p>
<p>(define-key global-map (kbd "C-l") 'st-insert-pair) などキーマップすると便利かと思います。といいつつ、作ったばっかりなのでたかともはまだキーマップしていないのですが。。。Emacsに選択範囲を囲む機能ってないですよね？？</p>
<p>でわでわ、たかともでした。</p>
<pre><code>
(defvar st-wrap-hash
  (let ((hash (make-hash-table :test 'equal)))
    (puthash "[" "]&#8221; hash)
    (puthash &#8220;&lt;&#8221; &#8220;&gt;&#8221; hash)
    (puthash &#8220;(&#8221; &#8220;)&#8221; hash)
    (puthash &#8220;{&#8221; &#8220;}&#8221; hash)
    (puthash &#8220;[[" "]]&#8221; hash)
    (puthash &#8220;((&#8221; &#8220;))&#8221; hash)
    (puthash &#8220;{{&#8221; &#8220;}}&#8221; hash)
    (puthash &#8220;&lt;?php&#8221; &#8221; ?&gt;&#8221; hash)
    hash))

(defun st-insert-pair ()
  (interactive)
  (cond (mark-active
         (let ((beg (region-beginning))
               (end (region-end))
               (string-value (read-string &#8220;Text around region: &#8220;)))
           (st-wrap-insert beg end string-value)))
        (t
         (let ((string-value (read-string &#8220;Text: &#8220;)))
           (st-nonwrap-insert string-value)))))

(defun st-create-right-tag (text)
  (save-excursion
    (let ((begin-point 0)
          (insert-list))
      (while (string-match &#8220;\\(&lt;[^ ]+\\)[^&gt;]*&gt;&#8221; text begin-point)
        (push (format &#8220;%s&gt;&#8221; (replace-regexp-in-string &#8220;&lt;&#8221; &#8220;&lt;/&#8221; (match-string 1 text))) insert-list)
        (setq begin-point (match-end 1)))
      (let ((insert-text (mapconcat &#8216;identity (nreverse insert-list) &#8220;&#8221;)))
        insert-text))))

(defun st-nonwrap-insert (string-value)
  (insert string-value)
  (cond ((gethash string-value st-wrap-hash)
         (insert (gethash string-value st-wrap-hash))
         (goto-char (- (point) (length (gethash string-value st-wrap-hash)))))
        ((string-match &#8220;&lt;.*&gt;&#8221; string-value)
         (insert (st-create-right-tag string-value))
         (goto-char (- (point) (length (st-create-right-tag string-value)))))
        (t
         (insert string-value)
         (goto-char (- (point) (length string-value))))))

(defun st-wrap-insert (beg end string-value)
  (goto-char beg)
  (insert string-value)
  (goto-char (+ end (length string-value)))

  (cond ((gethash string-value st-wrap-hash)
         (insert (gethash string-value st-wrap-hash)))
        ((string-match &#8220;&lt;.*&gt;&#8221; string-value)
         (insert (st-create-right-tag string-value)))
        (t
         (insert string-value))))
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/782/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emacs で QuickLook を快適に使う設定</title>
		<link>http://www.st-prestage.jp/blog/mac/778</link>
		<comments>http://www.st-prestage.jp/blog/mac/778#comments</comments>
		<pubDate>Sat, 21 Aug 2010 04:06:32 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/memo/778</guid>
		<description><![CDATA[fset を使う方法や拡張子に対して関連づけをしていく方法などあるのですが、
実行時に少し待たされてしまうのでどうにかしようと設定してみました。
以下のコードを Emacs の設定ファイルに追加して dired-mode [...]]]></description>
			<content:encoded><![CDATA[<p>fset を使う方法や拡張子に対して関連づけをしていく方法などあるのですが、<br />
実行時に少し待たされてしまうのでどうにかしようと設定してみました。</p>
<p>以下のコードを Emacs の設定ファイルに追加して dired-mode に入り、<br />
スペースを押すと QuickLook の画面でファイルをみることができます。</p>
<pre><code>
;; Emacs で QuickLook
;;; スペースキーをトリガーに設定

(add-hook 'dired-mode-hook
          '(lambda ()
              (define-key dired-mode-map (kbd "SPC") 'my-quick-look)))

(defvar quick-look-command "qlmanage -p %s &gt;&#038;/dev/null")

(defun my-quick-look()
  (interactive)
  (if (get-process "quicklook")
      (if (string= (car (last (process-command (get-process "quicklook"))))
                   (format quick-look-command (dired-get-filename)))
          (delete-process "quicklook")
        (delete-process "quicklook")
        (start-process-shell-command "quicklook" nil
                                     (format quick-look-command (dired-get-filename))))
    (start-process-shell-command "quicklook" nil
                                 (format quick-look-command (dired-get-filename)))))

</code></pre>
<p>使い方はスペースを押すと QuickLook。<br />
QuickLook されているときに同じファイルの上でもう一度スペースを押すと QuickLook が消える。<br />
QuickLook されているときに別のファイルの上でスペースを押すと<br />
表示してるQuickLook が消えて、あたらしい QuickLook の画面が開く。</p>
<p>外部プロセスを使って表示しているので Emacs の動作が重くなったりはしないはずです。</p>
<p>問題は QuickLook の画面を表示したまま dired を抜けてしまうと、×ボタンをマウスで押す必要があります。<br />
QuickLook をよく使う場合は、dired-mode を抜けるタイミングに Hook を作成して、</p>
<pre><code>
(if (get-process "quicklook") (delete-process "quicklook") nil)

</code></pre>
<p>みたいにするといいかもしれません。<br />
しかし、QuickLook って便利ですね~♪</p>
<p>でわでわ、たかともでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/778/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vim のプラグイン、これだけは入れたいっ！</title>
		<link>http://www.st-prestage.jp/blog/mac/771</link>
		<comments>http://www.st-prestage.jp/blog/mac/771#comments</comments>
		<pubDate>Sat, 21 Aug 2010 03:38:17 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/?p=771</guid>
		<description><![CDATA[Vim の拡張は Vim.org に登録されているものなど検索すると、大量に出てくるのですが、
そんな中で、たかともが「これだけは入れておきたいっ」というプラグインを紹介したいと思います。
1.neocomplcache [...]]]></description>
			<content:encoded><![CDATA[<p>Vim の拡張は Vim.org に登録されているものなど検索すると、大量に出てくるのですが、<br />
そんな中で、たかともが「これだけは入れておきたいっ」というプラグインを紹介したいと思います。</p>
<p>1.neocomplcache.vim おすすめ度 ☆☆☆☆☆<br />
   Web: <a href="http://github.com/Shougo/neocomplcache">http://github.com/Shougo/neocomplcache</a><br />
   DLL: git clone git://github.com/Shougo/neocomplcache.git</p>
<p>補完用のプラグイン。自動で補完候補がでてくるので、打鍵数がかなり少なくなる。また補完候補の絞りこみもできたり、カスタマイズすればするほどに手になじむプラグイン。</p>
<p>2.unite.vim おすすめ度 ☆☆☆☆☆<br />
   Web: <a href="http://github.com/Shougo/unite.vim">http://github.com/Shougo/unite.vim</a><br />
   DLL: git clone git://github.com/Shougo/unite.vim.git</p>
<p>Vim版Anything。バッファの選択やらファイルの選択など、Vimの使いにくい複数ファイルを開く動作なども簡単に♪現状でもかなり便利なのですが、まだまだ開発中ということでどんな機能がつくのか楽しみなプラグイン。</p>
<p>3.quickrun.vim おすすめ度 ☆☆☆☆<br />
   Web: <a href="http://github.com/thinca/vim-quickrun">http://github.com/thinca/vim-quickrun</a><br />
   DLL: git clone git://github.com/thinca/vim-quickrun.git</p>
<p>コードをその場で実行するためのプラグイン。ちゃんと動くかどうか :QuickRun で確認しつつ開発がしたりできる。Objective-C のコードを書いてるときに範囲選択して :&#8217;< ,'>QuickRun perl すると、選択範囲をPerlのスクリプトとして実行できたり、ないと困ります>< </p>
</p>
<p>ではでは、たかともでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/771/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Objective-C &#12398;&#12513;&#12477;&#12483;&#12489;&#12434;&#35036;&#23436;&#12377;&#12427;&#12383;&#12417;&#12398;&#36766;&#26360; Emacs</title>
		<link>http://www.st-prestage.jp/blog/mac/767</link>
		<comments>http://www.st-prestage.jp/blog/mac/767#comments</comments>
		<pubDate>Thu, 19 Aug 2010 20:01:04 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/?p=767</guid>
		<description><![CDATA[Emacs &#12391; AutoComplete &#12434;&#12388;&#12363;&#12358;&#12392;&#12365;&#12395;&#20415;&#21033;&#12394;&#12424;&#12358;&#12395;&#36766;&#26360;&#12434;&#20316;&#12387;&#12390;&#12415;&#12414;&#12375;&#12383;&#12290; &#12463;&#12521;&#12473;&#21517;&#12420;&#21336;&#35486;&#12398;&#35036;&#23436;&#12399; etags &#12420; company-xcode &#12434;&#20351;&#12358;&#26041;&#27861;&#12391;&#35036;&#23436;&#12391;&#12365;&#12427;&#12398;&#12391;&#12377;&#12364;&#12289; &#38263;&#12356;&#12513;&#12477;&#12483;&#12489;&#12434;&#12373;&#12367;&#12387;&#12392;&#35036;&#23436;&#12377;&#12427;&#12424;&#12358;&#12394;&#26041;&#27861;&#12364;&#35211;&#12388;&#12363;&#12425;&#12394;&#12363;&#12387;&#12383;&#12398;&#12391;&#12289; &#36766;&#26360;&#12395;&#12424;&#12427;&#35036;&#23436;&#12395;&#38972;&#12427;&#12371;&#12392;&#12395;&#12375;&#12414;&#12375;&#12383;&#12290; &#36766;&#26360;&#12398;&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;&#12399;&#12371;&#12371; &#20351;&#12356;&#26041;&#12399; (add-to-list 'ac-dictionary-directories "~/.emacs.d/share/dict") (push 'ac-source-dictionary ac-sources) (setq ac-modes (applend ac-modes 'objc-mode)) &#12392;&#12375;&#12390; ac-dictionary-directories &#12391;&#25351;&#23450;&#12375;&#12383;&#12487;&#12451;&#12524;&#12463;&#12488;&#12522;&#20197;&#19979;&#12395; &#36766;&#26360;&#12501;&#12449;&#12452;&#12523;&#12434; objc-mode &#12392;&#12356;&#12358;&#21517;&#21069;&#12391;&#20445;&#23384;&#12375;&#12390;&#12367;&#12384;&#12373;&#12356;&#12290; &#12354;&#12392;&#12399; Objective-C &#12398;&#12501;&#12449;&#12452;&#12523;&#12434;&#38283;&#12356;&#12390;&#35036;&#23436;&#12377;&#12427;&#12384;&#12369;&#12391;&#12377;&#12290; &#27880;&#24847;&#28857; &#31354;&#30333;&#12420; &#12300;:&#12301; &#12434;&#20837;&#21147;&#12377;&#12427;&#12392;&#35036;&#23436;&#12364;&#32066;&#12431;&#12387;&#12390;&#12375;&#12414;&#12358;&#12398;&#12391;&#12289;&#12300;:&#12301; &#12364;&#20986;&#12390;&#12367;&#12427;&#25163;&#21069;&#12391; C-s &#12394;&#12393;&#12391;&#32094;&#12426;&#36796;&#12415;&#12434;&#12377;&#12427;&#12371;&#12392;&#12290; &#12399;&#12376;&#12417;&#12398; &#8211; (void) &#12398;&#12424;&#12358;&#12394;&#36820;&#12426;&#20516;&#12434;&#34920;&#12377;&#37096;&#20998;&#12391;&#12399;&#35036;&#23436;&#12373;&#12428;&#12414;&#12379;&#12435;&#12290; &#24341;&#25968;&#12398;&#37096;&#20998;&#12364; arg1 &#12392;&#12363;&#12395;&#12394;&#12387;&#12390;&#12414;&#12377;&#12290; &#20363;&#12360;&#12400;&#12289;&#20197;&#19979;&#12398;&#12513;&#12477;&#12483;&#12489;&#12434;&#35036;&#23436;&#12377;&#12427;&#22580;&#21512; - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath - (void) [...]]]></description>
			<content:encoded><![CDATA[<p>Emacs &#12391; AutoComplete &#12434;&#12388;&#12363;&#12358;&#12392;&#12365;&#12395;&#20415;&#21033;&#12394;&#12424;&#12358;&#12395;&#36766;&#26360;&#12434;&#20316;&#12387;&#12390;&#12415;&#12414;&#12375;&#12383;&#12290;<br />
&#12463;&#12521;&#12473;&#21517;&#12420;&#21336;&#35486;&#12398;&#35036;&#23436;&#12399; etags &#12420; company-xcode &#12434;&#20351;&#12358;&#26041;&#27861;&#12391;&#35036;&#23436;&#12391;&#12365;&#12427;&#12398;&#12391;&#12377;&#12364;&#12289;<br />
&#38263;&#12356;&#12513;&#12477;&#12483;&#12489;&#12434;&#12373;&#12367;&#12387;&#12392;&#35036;&#23436;&#12377;&#12427;&#12424;&#12358;&#12394;&#26041;&#27861;&#12364;&#35211;&#12388;&#12363;&#12425;&#12394;&#12363;&#12387;&#12383;&#12398;&#12391;&#12289;<br />
&#36766;&#26360;&#12395;&#12424;&#12427;&#35036;&#23436;&#12395;&#38972;&#12427;&#12371;&#12392;&#12395;&#12375;&#12414;&#12375;&#12383;&#12290;</p>
<p><a href="http://www.st-prestage.jp/myscript/objc-mode.zip">&#36766;&#26360;&#12398;&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;&#12399;&#12371;&#12371;</a></p>
<p>&#20351;&#12356;&#26041;&#12399;</p>
<p><code>
<pre>
(add-to-list 'ac-dictionary-directories "~/.emacs.d/share/dict")
(push 'ac-source-dictionary ac-sources)
(setq ac-modes (applend ac-modes 'objc-mode))
</pre>
<p></code></p>
<p>&#12392;&#12375;&#12390; ac-dictionary-directories &#12391;&#25351;&#23450;&#12375;&#12383;&#12487;&#12451;&#12524;&#12463;&#12488;&#12522;&#20197;&#19979;&#12395;<br />
&#36766;&#26360;&#12501;&#12449;&#12452;&#12523;&#12434; objc-mode &#12392;&#12356;&#12358;&#21517;&#21069;&#12391;&#20445;&#23384;&#12375;&#12390;&#12367;&#12384;&#12373;&#12356;&#12290;</p>
<p>&#12354;&#12392;&#12399; Objective-C &#12398;&#12501;&#12449;&#12452;&#12523;&#12434;&#38283;&#12356;&#12390;&#35036;&#23436;&#12377;&#12427;&#12384;&#12369;&#12391;&#12377;&#12290;</p>
<p>&#27880;&#24847;&#28857;</p>
<p>&#31354;&#30333;&#12420; &#12300;:&#12301; &#12434;&#20837;&#21147;&#12377;&#12427;&#12392;&#35036;&#23436;&#12364;&#32066;&#12431;&#12387;&#12390;&#12375;&#12414;&#12358;&#12398;&#12391;&#12289;&#12300;:&#12301; &#12364;&#20986;&#12390;&#12367;&#12427;&#25163;&#21069;&#12391; C-s &#12394;&#12393;&#12391;&#32094;&#12426;&#36796;&#12415;&#12434;&#12377;&#12427;&#12371;&#12392;&#12290;</p>
<p>&#12399;&#12376;&#12417;&#12398; &#8211; (void) &#12398;&#12424;&#12358;&#12394;&#36820;&#12426;&#20516;&#12434;&#34920;&#12377;&#37096;&#20998;&#12391;&#12399;&#35036;&#23436;&#12373;&#12428;&#12414;&#12379;&#12435;&#12290;</p>
<p>&#24341;&#25968;&#12398;&#37096;&#20998;&#12364; arg1 &#12392;&#12363;&#12395;&#12394;&#12387;&#12390;&#12414;&#12377;&#12290;</p>
<p>&#20363;&#12360;&#12400;&#12289;&#20197;&#19979;&#12398;&#12513;&#12477;&#12483;&#12489;&#12434;&#35036;&#23436;&#12377;&#12427;&#22580;&#21512;</p>
<p>- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath</p>
<ul>
<li>- (void) &#12414;&#12391;&#12399;&#35036;&#23436;&#12373;&#12428;&#12394;&#12356;</li>
<li>tableView &#12392;&#20837;&#21147;&#12377;&#12427;&#12392;&#35036;&#23436;&#20505;&#35036;&#12364;&#12391;&#12390;&#12367;&#12427;&#12290;</li>
<li>C-s &#12375;&#12390; SelectRow &#12394;&#12393;&#12391;&#32094;&#12426;&#36796;&#12415;&#12434;&#12377;&#12427;&#12290;</li>
</ul>
<p>&#19978;&#12398;&#12424;&#12358;&#12394;&#25163;&#38918;&#12395;&#12394;&#12426;&#12414;&#12377;&#12290;&#12371;&#12428;&#12434; tableView: &#12414;&#12391;&#20837;&#21147;&#12375;&#12390;&#12375;&#12414;&#12358;&#12392;&#35036;&#23436;&#12364;&#12391;&#12365;&#12414;&#12379;&#12435;&#12290;&#12414;&#12383;&#23455;&#38555;&#12395;&#35036;&#23436;&#12373;&#12428;&#12427;&#25991;&#23383;&#21015;&#12399;&#20197;&#19979;&#12290;</p>
<p>- (void)tableView:(id)arg1 didSelectRowAtIndexPath:(id)arg2</p>
<p>arg1 &#12392;&#12363; arg2 &#12394;&#12393;&#12395;&#12394;&#12387;&#12390;&#12356;&#12427;&#12398;&#12391;&#12289;&#12513;&#12477;&#12483;&#12489;&#20869;&#12391;&#24341;&#25968;&#12434;&#21442;&#29031;&#12377;&#12427;&#38555;&#12395;&#12399;&#27880;&#24847;&#12375;&#12390;&#12367;&#12384;&#12373;&#12356;&#12290;</p>
<pre><code>
- (void)tableView:(id)arg1 didSelectRowAtIndexPath:(id)arg2 {
  // arg2 &#12399;&#20363;&#12391;&#12356;&#12358;&#12392;&#12371;&#12429;&#12398;(NSIndexPath *)indexPath
  int aRow = [arg2 row];
  // arg1 &#12399; (UITableView *)tableView
  [arg1 deselectRowAtIndexPath:arg2 animated:YES];
}

</code></pre>
<p>&#12371;&#12398;&#12424;&#12358;&#12394;&#26360;&#12365;&#26041;&#12434;&#12377;&#12427;&#12424;&#12358;&#12395;&#12394;&#12426;&#12414;&#12377;&#12290;</p>
<p>&#12414;&#12383; class-dump &#12434;&#20351;&#12387;&#12390;&#12513;&#12477;&#12483;&#12489;&#12398;&#21454;&#38598;&#12434;&#12375;&#12383;&#12398;&#12391;&#12289;C &#12420; C++ &#12391;&#26360;&#12363;&#12428;&#12383;&#12501;&#12524;&#12540;&#12512;&#12527;&#12540;&#12463;&#12398;&#12513;&#12477;&#12483;&#12489;&#12364;&#21454;&#38598;&#12373;&#12428;&#12390;&#12394;&#12356;&#12394;&#12393;&#12289;&#12414;&#12384;&#12414;&#12384;&#21839;&#38988;&#12399;&#12356;&#12387;&#12401;&#12356;&#12398;&#36766;&#26360;&#12391;&#12377;&#12364;&#12424;&#12363;&#12387;&#12383;&#12425;&#20351;&#12387;&#12390;&#12415;&#12390;&#12367;&#12384;&#12373;&#12356;&#12397;&#12290;</p>
<p>&#12391;&#12431;&#12391;&#12431;&#12289;&#12383;&#12363;&#12392;&#12418;&#12391;&#12375;&#12383;&#12290;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/767/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>もっとおいしいObjective-Cのメソッド補完 Anything.el</title>
		<link>http://www.st-prestage.jp/blog/mac/762</link>
		<comments>http://www.st-prestage.jp/blog/mac/762#comments</comments>
		<pubDate>Sun, 08 Aug 2010 20:05:55 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Emacs]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/762</guid>
		<description><![CDATA[Anything.elが楽しいです♪
というわけで、ちょっとだけですが前回の記事からAnything.elをつかったObjective-Cのメソッドの補完をバージョンアップをさせてみました。何行か追加しただけなのですが、 [...]]]></description>
			<content:encoded><![CDATA[<p>Anything.elが楽しいです♪</p>
<p>というわけで、ちょっとだけですが<a href="http://www.st-prestage.jp/blog/mac/746">前回の記事</a>からAnything.elをつかったObjective-Cのメソッドの補完をバージョンアップをさせてみました。何行か追加しただけなのですが、結構使い勝手がよくなった気がします。</p>
<pre><code>
;; anything-c-source-stClass-dumpの設定
;;        stClass-dumpをanythingから使う key-mapはObjctive-Cの設定参照

(defvar anything-make-objc-method-command "stClass-dump %s")

(defun anything-c-make-objc-method-init ()
  (start-process-shell-command "stClass-dump" nil
                               (format anything-make-objc-method-command
                                       anything-pattern)))

(defvar anything-c-source-stClass-dump
  '((name . "stClass-dump")
    (candidates . anything-c-make-objc-method-init)
    (action . (("InsertMethod" . anything-c-make-objc-insert-method)
               ("InsertAction" . anything-c-make-objc-insert-action)))
    (requires-pattern . 3)
    (delay)))

(defun anything-c-make-objc-insert-method (line)
  (let ((selected-line (string-match " *\\(\\+\\|-\\) ([^)]*)\\([^;]*\\)" line)))
    (insert (match-string 2 line))))

(defun anything-c-make-objc-insert-action (line)
  (let ((selected-line (string-match " *\\(.*\\)$" line)))
    (insert (match-string 1 line))))

(defun anything-objc-complete ()
  (interactive)
  (anything-other-buffer '(anything-c-source-stClass-dump)
                         "*anything-objc*"))

</code></pre>
<p>追加した機能は一つだけなのですが、画像の候補を選んでタブを押すと</p>
<p><a href="http://www.st-prestage.jp/blog/wp-content/uploads/vimscreen1.png"><img src="http://www.st-prestage.jp/blog/wp-content/uploads/vimscreen-tm.jpg" width="300" height="230" alt="vimscreen.png" /></a></p>
<p>こんな感じでActionが選択できるようになります</p>
<p><a href="http://www.st-prestage.jp/blog/wp-content/uploads/vimscreen001.png"><img src="http://www.st-prestage.jp/blog/wp-content/uploads/vimscreen001-tm.jpg" width="284" height="300" alt="vimscreen001.png" /></a></p>
<p>ここでInsertActionを選択すると、前回と同じで選択した項目がそのまま入力されます。</p>
<p><a href="http://www.st-prestage.jp/blog/wp-content/uploads/vimscreen003.png"><img src="http://www.st-prestage.jp/blog/wp-content/uploads/vimscreen003-tm.jpg" width="300" height="81" alt="vimscreen003.png" /></a></p>
<p>ここでInsertMethodを選択した場合</p>
<p><a href="http://www.st-prestage.jp/blog/wp-content/uploads/vimscreen004.png"><img src="http://www.st-prestage.jp/blog/wp-content/uploads/vimscreen004-tm.jpg" width="300" height="116" alt="vimscreen004.png" /></a></p>
<p>候補を選択してそのまま決定すると、InsertMethod が選択されます。 InsertAction を選択する場合は C-e もしくは TAB で候補を出してから InsertAction を選択してください。</p>
<p>一番上の画像のように -C UIApplication と指定すると UIApplication を含むクラスに絞った検索ができるようになっています。</p>
<p>ついでにiPhoneの開発しかしない &#038; UIKit.framework のメソッドだけ補完できればいいという人は、以下のように書き換えるのもおすすめです。</p>
<pre><code>
(defvar anything-make-objc-method-command "stClass-dump %s")
  ↓
(defvar anything-make-objc-method-command "stClass-dump -i uikit -C %s)

</code></pre>
<p>この設定だと一番上の画像のように「UIKit.framework内の文字列 &#8220;UIApplication&#8221; を含むクラスで &#8220;application&#8221; を含むメソッドの検索が、「UIApplication -f application」と検索するだけで出てくるようになります。楽ちんなのです。ぜひ使ってみてくださいね。</p>
<p>でわでわ、たかともでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/762/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vimでウィンドウの移動を少し楽にする設定</title>
		<link>http://www.st-prestage.jp/blog/mac/750</link>
		<comments>http://www.st-prestage.jp/blog/mac/750#comments</comments>
		<pubDate>Sun, 08 Aug 2010 10:52:37 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/750</guid>
		<description><![CDATA[Emacsの記事ばっかりでVimからEmacsに乗り換えたのか？？と思われると寂しいので、Vimのウィンドウを便利にする設定の紹介です。。。。といってもたいしたことはしていないのですが。
Vimの設定ファイルに以下を追加 [...]]]></description>
			<content:encoded><![CDATA[<p>Emacsの記事ばっかりでVimからEmacsに乗り換えたのか？？と思われると寂しいので、Vimのウィンドウを便利にする設定の紹介です。。。。といってもたいしたことはしていないのですが。</p>
<p>Vimの設定ファイルに以下を追加します</p>
<pre><code>

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)

nnoremap &lt;silent&gt; &lt;TAB&gt; &lt;C-w&gt;w

</code></pre>
<p>現在のステータスバーの設定がある人はそこに<br />
<code>[%{winnr('$')&gt;1?''.winnr().'/'.winnr('$'):''}]</code>の部分を追加します。</p>
<p>上記の設定をするとステータスバーが以下の画像のような表示になります。</p>
<p><a href="http://www.st-prestage.jp/blog/wp-content/uploads/vimscreen.png" title="vimscreen.png"><img src="http://www.st-prestage.jp/blog/wp-content/uploads/vimscreen.png" alt="vimscreen.png" /></a></p>
<p>一番左に表示されているのが分割ウィンドウの番号なので、ノーマルモードで 「移動したいウィンドウの番号&lt;TAB&gt;」 と入力すると、そのウィンドウに移動することができます。もしタブに割り当てするのは。。。という場合は、「移動したいウィンドウの番号&lt;C-w&gt;w」 で移動することができます。上の画像のウィンドウに移動するときは「1&lt;TAB&gt;」</p>
<p>よかったらつかってみてください。</p>
<p>でわでわ、たかともでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/750/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emacs で Objective-Cのメソッドを補完する。Anything.el</title>
		<link>http://www.st-prestage.jp/blog/mac/746</link>
		<comments>http://www.st-prestage.jp/blog/mac/746#comments</comments>
		<pubDate>Sun, 08 Aug 2010 09:58:12 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Emacs]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/746</guid>
		<description><![CDATA[Emacs テクニックバイブルを手にいれたかた、どれぐらいいるんでしょうか？
たかともはいまだに購入を迷っています。知っていることも多いというのが一番の悩み。最後の方のAnything.elの章はものすごく手元にほしいの [...]]]></description>
			<content:encoded><![CDATA[<p>Emacs テクニックバイブルを手にいれたかた、どれぐらいいるんでしょうか？</p>
<p>たかともはいまだに購入を迷っています。知っていることも多いというのが一番の悩み。最後の方のAnything.elの章はものすごく手元にほしいのですが、それだけのために購入していいものかというところです。</p>
<p>そんなわけでAnything.elを使ってObjective-Cのメソッド名を補完するanything-c-sourceを作ってみました。</p>
<p>導入にあたって必要なもの</p>
<ul>
<li><a href="http://www.codethecode.com/projects/class-dump/">class-dump</a></li>
<li><a href="http://www.st-prestage.jp/myscript/shellscript/stClass-dump.zip">stClass-dump</a></li>
<li>anything.el</li>
</ul>
<p>Anything.elはもう導入できているものとして、class-dump,stClass-dumpについては、<a href="http://www.st-prestage.jp/blog/mac/740">この記事を参照にインストールしてください。</a>ということで、あとはEmacsの設定ファイルにコードを追加していくだけになります。</p>
<pre><code>
(add-hook 'objc-mode-hook
    (lambda ()
        (define-key objc-mode-map (kbd "C-;") 'anything-objc-complete)))

;; anything-c-source-stClass-dumpをつくる。
(defvar anything-make-objc-method-command "stClass-dump %s")

(defun anything-c-make-objc-method-init ()
  (start-process-shell-command "stClass-dump" nil
                               (format anything-make-objc-method-command
                                       anything-pattern)))

(defvar anything-c-source-stClass-dump
  '((name . "stClass-dump")
    (candidates . anything-c-make-objc-method-init)
    (action . anything-c-make-objc-insert-action)
    (requires-pattern . 3)
    (delay)))

(defun anything-c-make-objc-insert-action (line)
  (let ((selected-line (string-match " *\\(.*\\)$" line)))
    (insert (match-string 1 line))))

(defun anything-objc-complete ()
  (interactive)
  (anything-other-buffer '(anything-c-source-stClass-dump)
                         "*anything-objc*"))

</code></pre>
<p>使い方</p>
<p>iPhone開発に使う場合</p>
<ul>
<li>-i ： iOS SDKに含まれるフレームワークをすべて表示</li>
<li>-i フレームワーク名 : フレームワーク名を検索</li>
<li>-i フレームワーク名  -a : フレームワークに含まれるメソッド・プロパティを検索</li>
<li>-i フレームワーク名 -f : フレームワークに含まれるメソッド一覧</li>
<li>-i フレームワーク名 -f hoge : フレームワークに含まれるメソッドでhogeを含むものを検索</li>
</ul>
<p>Mac開発に使う場合は -i を -m に変更してください。</p>
<p>選択した項目はカーソル位置に挿入されるようになっています。また以下のように設定しておくとメソッド名をほとんどみられるようになっておいしいかもしれません。</p>
<pre><code>
(setq anything-candidate-number-limit 30000)
(setq anything-lisp-complete-symbol-set-timer 500)
(setq anything-mp-highlight-delay nil)
(setq anything-mp-highlight-threshold nil)

</code></pre>
<p>まだ設定したばかりですが、 「-i uikit -f numberOf&#8230;」のように検索して、メソッドを選択していくような使い方を想定しています。＝他の機能はおまけ。よかったら試してみてください。そのうち「-(void)hotehote」をそのまま入力するのではなくて、 [hogehoge addSubView:]のような形での入力もできるように仕様と思っています。</p>
<p>でわでわ、たかともでした。</p>
<p>おまけ： anything の入力をするときに /Applications/Safari.app などすると Safariで使っているメソッドが見られるようになっています。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/746/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vim で他のウィンドウをスクロールさせるスクリプト</title>
		<link>http://www.st-prestage.jp/blog/mac/744</link>
		<comments>http://www.st-prestage.jp/blog/mac/744#comments</comments>
		<pubDate>Sun, 08 Aug 2010 03:55:51 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/744</guid>
		<description><![CDATA[Emacsをいじっていて、すごく楽だったのが別の分割ウィンドウをスクロールさせるコマンド
ちょっと横に開いたファイルをみるときとか、かなり重宝したのでVimでもできないかなぁ〜と探してみたのですが、見つからなかったのでさ [...]]]></description>
			<content:encoded><![CDATA[<p>Emacsをいじっていて、すごく楽だったのが別の分割ウィンドウをスクロールさせるコマンド</p>
<p>ちょっと横に開いたファイルをみるときとか、かなり重宝したのでVimでもできないかなぁ〜と探してみたのですが、見つからなかったのでさくっとスクリプトを書いてみました。</p>
<pre><code>

nnoremap &lt;C-`&gt; :&lt;C-u&gt;call g:ScrolOtherWindow(1)&lt;CR&gt;
inoremap &lt;C-`&gt; &lt;Esc&gt;:&lt;C-u&gt;call g:ScrolOtherWindow(1)&lt;CR&gt;i
nnoremap &lt;C-~&gt; :&lt;C-u&gt;call g:ScrolOtherWindow(0)&lt;CR&gt;
inoremap &lt;C-~&gt; &lt;Esc&gt;:&lt;C-u&gt;call g:ScrolOtherWindow(0)&lt;CR&gt;i

function! g:ScrolOtherWindow(direction)
    let current = winnr()
    if a:direction == 1
        wincmd w
        execute "normal \&lt;C-d&gt;"
        execute current . "wincmd w"
    else
        wincmd w
        execute "normal \&lt;C-u&gt;"
        execute current . "wincmd w"
    endif
endfunction

</code></pre>
<p>たしか元のウィンドウに戻るコマンドがあったと思ったのですが、探すよりもこれぐらいなら書いてしまった方が早いかな？なんておもったので、winnr()を使って現在の分割ウィンドウに戻るようにしてしまいました。実際には Control + `・Control + ~ を使わずに Option + `・Option + ~ に割り当てて使っています。好きなキーバインドに割り当てて使ってください。</p>
<p>うむ、だんだんVimが便利になってきた♪</p>
<p>ちなみにこのスクリプトをつくったのはVimShellで<a href="http://www.st-prestage.jp/blog/mac/740">前回の記事で紹介したclass-dumpを拡張したもの</a>をつかったときにウィンドウを移らずにチェックしたかった。それだけだったりします。意外と便利だと思うのでよかったらVimの設定ファイルにいれてみてください。</p>
<p>でわでわ、たかともでした</p>
<p>・・・というか、もともとこの機能あったらごめんなさい＞＜ Vimをバカにしてごめんなさい</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/744/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Objective-Cの長いメソッド名に悩まされないのですっ！！</title>
		<link>http://www.st-prestage.jp/blog/mac/740</link>
		<comments>http://www.st-prestage.jp/blog/mac/740#comments</comments>
		<pubDate>Sat, 07 Aug 2010 19:21:43 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/740</guid>
		<description><![CDATA[Objective-Cのメソッド名って長くって覚えられない。そんな自分のためにclass-dumpというシェルスクリプトを利用して、簡単にメソッド名を検索できるスクリプトを作ってみました。といってもclass-dumpに [...]]]></description>
			<content:encoded><![CDATA[<p>Objective-Cのメソッド名って長くって覚えられない。そんな自分のためにclass-dumpというシェルスクリプトを利用して、簡単にメソッド名を検索できるスクリプトを作ってみました。といってもclass-dumpにちょっとオプションを追加しただけのスクリプトですが。</p>
<p>インストール方法</p>
<ol>
<li>まずはここから<a href="http://www.codethecode.com/projects/class-dump/">class-dumpというシェルスクリプトをダウンロード。</a></li>
<li>PATHの通った場所にclass-dumpを移動。PATHの通った場所はターミナルで「echo $PATH」で確認してください。</li>
<li>次にここから<a href="http://www.st-prestage.jp/myscript/shellscript/stClass-dump.zip">stClass-dumpをダウンロード</a></li>
<li>class-dumpを移動させたフォルダにファイルを移動させる。
</li>
<li>ターミナルで「cd 移動させたフォルダ」「chmod +x class-dump stClass-dump」とコマンドを打つ。</li>
</ol>
<p>これで準備は完了です。</p>
<p>class-dumpに追加したオプションとして -i と -m があります。</p>
<dl>
<dt>-i オプション</dt>
<dd>iOS SDKに含まれるフレームワークからの検索</p>
<dt>$ stClass-dump -i</dt>
</dd>
<dd>iOS SDK に含まれるフレームワークをすべて表示</dd>
<dt>$ stClass-dump -i フレームワーク名 (拡張子はいれない、大文字小文字は無視します）</dt>
<dd>指定したフレームワークを検索</dd>
<dt>$ stClass-dump -i フレームワーク名 -a</dt>
<dd>指定したフレームワークのメソッド名、プロパティをすべて表示</dd>
<dt>$ stClass-dump -i フレームワーク名 -f hoge</dt>
<dd>指定したフレームワーク内のメソッドでhogeを含むメソッドを検索</dd>
</dl>
<dl>
<dt>-m オプション</dt>
<dd>Macのフレームワークからの検索。使い方は -i オプションと同じです。</dd>
</dl>
<dl>
<dt>-m オプションも -i オプションつけずに使った場合</dt>
<dd>class-dumpと同じ挙動になっています。</dd>
</dl>
<p>-i -m オプションをstClass-dumpコマンドの後につけた場合、それぞれフレームワークを検索してclass-dumpに渡しているだけのスクリプトなので、-i -m オプション以外はclass-dumpのオプションがそのまま使えるようになっています。詳しい使い方を知りたいときは class-dump &#8211;helpでもしてみてください。</p>
<p>class-dumpの機能としてバイナリファイルに含まれているヘッダーを出力できるようになっています。</p>
<p>$ stClass-dump /Applications/Safari.app/Contents/MacOS/Safari などするとSafariで使われているクラスやメソッドがみれて楽しいですよ〜。ためしてみてください♪</p>
<p>たかともが、いちばん使うのは $ stClass-dump -i uikit -f hoge 。</p>
<p>$ class-dump /Developer/Platform/iPhoneOS なんちゃら〜 -f hoge が長い。。。という理由、それだけ。</p>
<p>みなさんも使ってみてくださいね。</p>
<p>でわでわ、たかともでした。</p>
<p>追記1: もしSDKのバージョンがかわったらファイルのFWFOLDERの部分を直してください。別のフォルダを追加したい場合もFWFOLDERに追加すれば使えるので、外部のフレームワークを入れているフォルダがあれば、そのフォルダも追記してください。</p>
<p>追記2: バグ？</p>
<ul>
<li>フレームワークの指定が1つしかできない。2つ以上のフレームワークの串刺し検索はできない。</li>
<li>Cocoa.framaworkが検索できない。AppKit、Foundation、CoreDataを指定して使ってください。</li>
</ul>
<p>1つめのフレームワークの指定に関してはスクリプトを変更することで対応できるのですが、2つめのCocoa.frameworkに関してはclass-dump自体がCocoa.frameworkを指定したときに検索ができないので、対応できません。ただし、Cocoa.framework自体はAppKit、Foundation、CoreDataをインポートしているものなので、AppKit、Foundation、CoreDataを指定して検索することで参照することはできるようになっています。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/740/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emacs テクニックバイブル 〜作業効率をカイゼンする200の技〜</title>
		<link>http://www.st-prestage.jp/blog/mac/739</link>
		<comments>http://www.st-prestage.jp/blog/mac/739#comments</comments>
		<pubDate>Tue, 03 Aug 2010 01:49:32 +0000</pubDate>
		<dc:creator>たかとも</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Emacs]]></category>

		<guid isPermaLink="false">http://www.st-prestage.jp/blog/mac/739</guid>
		<description><![CDATA[本日が発売日♪ 
Anything.el という elisp を作った方が書いた本なのですが、
目次をみてみたのですが、目次だけで自分のEmacsが強化されていきそうな気がします。
とくにAnything.elはカスタマ [...]]]></description>
			<content:encoded><![CDATA[<p>本日が発売日♪ </p>
<p>Anything.el という elisp を作った方が書いた本なのですが、<br />
目次をみてみたのですが、目次だけで自分のEmacsが強化されていきそうな気がします。</p>
<p>とくにAnything.elはカスタマイズの幅が広く、知らないことも多いので<br />
1章をまるまるこのelispについて解説があるのはうれしいです。</p>
<p>早く手に入れたい＞＜<br />
しかし予約するのを忘れてしまって、どうしようか。。。</p>
<p>これからEmacsを使い始める人、<br />
というよりはEmacsをすでに使っていて、もう一歩踏み込んだ使い方をしたい。<br />
そんな人にはぴったりな本だと思われます。</p>
<p>いや、まぁ目次みただけですけど。</p>
<p>手に入れた方は感想を聞かせてくださいね。</p>
<p>でわでわ、たかともでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-prestage.jp/blog/mac/739/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<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>
	</channel>
</rss>
