<?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>uprush &#187; vim</title>
	<atom:link href="http://uprush.net/tag/vim/feed/" rel="self" type="application/rss+xml" />
	<link>http://uprush.net</link>
	<description>YiFeng's Blog</description>
	<lastBuildDate>Wed, 03 Feb 2010 14:34:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.3</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Vimでシステム開発</title>
		<link>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba/</link>
		<comments>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba/#comments</comments>
		<pubDate>Sun, 17 May 2009 13:55:23 +0000</pubDate>
		<dc:creator>uprush</dc:creator>
				<category><![CDATA[vim]]></category>
		<category><![CDATA[システム開発]]></category>

		<guid isPermaLink="false">http://blog.uprush.net/?p=274</guid>
		<description><![CDATA[このシリーズは、私がVimを使ってシステム開発をする時の経験を紹介します。まだ Vim の経験が少ないですが、Vim の普及に少しでも貢献できればと思います。

前書き
セッションとviminfo
vimrc
tagファイルとtaglistプラグイン（その１）
tagファイルとtaglistプラグイン（その２）
FileとBufferのExplore
Lookupfile Plugin
File Type認識
多彩なVim
検索と置換え
便利な tab pages
基本的な移動
高度な移動
補完
私のvimrc

]]></description>
		<wfw:commentRss>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Vimでシステム開発 &#8212; 私のvimrc</title>
		<link>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e7%a7%81%e3%81%aevimrc/</link>
		<comments>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e7%a7%81%e3%81%aevimrc/#comments</comments>
		<pubDate>Sun, 17 May 2009 13:53:52 +0000</pubDate>
		<dc:creator>uprush</dc:creator>
				<category><![CDATA[vim]]></category>
		<category><![CDATA[vimrc]]></category>

		<guid isPermaLink="false">http://blog.uprush.net/?p=272</guid>
		<description><![CDATA[この Vimでシステム開発 シリーズの最終章として、私のvimrcと.vimフォルダ（Windowsはvimfiles）をオープンします、ご参考に成れば嬉しい。
私のvimrcもほかの方のvimrcを元に作ったものです。vimrcをコピーしてそのまま使うと慣れないことが起こりやすい。ですから、理解した上、自分の環境と合わせてカスタマイズしてください。
VimのHTMLエクスポート機能を使って、vimrcの内容とスタイルをそのままエクスポートしたものなので、以下のvimrc.htmlは私のvimrcになります。
&#160;
　　私のvimrc
この私のvimrcと.vimフォルダ（Windowsはvimfiles）の内容のダウンロードはこちらです。

vimrcをダウンロード
vimフォルダをダウンロード

ここで、シリーズ Vimでシステム開発 が全部掲載されました。ご参考になりましたか？少しでも、Vimがもっと好きに成れば嬉しいです。
]]></description>
		<wfw:commentRss>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e7%a7%81%e3%81%aevimrc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Vimでシステム開発 &#8212; 補完</title>
		<link>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e8%a3%9c%e5%ae%8c/</link>
		<comments>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e8%a3%9c%e5%ae%8c/#comments</comments>
		<pubDate>Sun, 17 May 2009 13:52:09 +0000</pubDate>
		<dc:creator>uprush</dc:creator>
				<category><![CDATA[vim]]></category>
		<category><![CDATA[補完]]></category>

		<guid isPermaLink="false">http://blog.uprush.net/?p=270</guid>
		<description><![CDATA[殆どのIDEは入力補完機能を提供しています。優れたエディタであるVimは勿論補完機能を設けています。しかも、Vimはプログラム・ソースだけではなく、ファイル名、字引、バッファによる色々な形の補完をサポートしています。
Vimの補完を大きく分けて、OMNI補完とその他補完になります。
&#160;

Onmi補完

Onmi補完は幾つかのプログラミング言語を対応しています、例えばC，C++，XML/HTML，CSS，JAVASCRIPT，PHP，RUBYなどを挙げます。詳しいリストは「:help compl-omni-filetypes」で参照します。ここで、主にCとC++に関する補完を紹介します。
Vimは補完を行う時、ファイル・タイプによって補完関数が異なります。即ち、Onmi補完を利用するには、ファイル・タイプ認識機能を有効にしなければ成りません。以下の一行をvimrcに追加し、タイプ認識を有効にします。
filetype plugin indent on
 Cの補完
CとC++ソースのOnmi補完は、Exuberant ctagsが作ったタグファイルを利用します。Exuberant ctagsの詳細について、シリーズの Vimでシステム開発 &#8212; tagファイルとtaglistプラグイン（その１） を参照します。
Vim 7.1のソースを例として、vim71/src にて、コマンドから「ctags -R」を実行し、タグファイルを生成します。
VimMain()関数にて、「gui」を入力し、「CTRL-X CTRL-O」を押すと、Vimの状態欄に「Omni Completeion」が表示されます。これは補完を行っていることを表します。また、マッチしたタグがプルダウンに表示され、矢印キーで選択し、Enterを押せばソースに挿入できます。


デフォルトでは、補完時、Vimはプルダウンで候補を表示し、画面上部にプレビュー・ウィンドを一つ開いて候補の詳細を表示します。私は「completeopt」オプションを設定し、プレビュー・ウィンドを表示しないようにしています。
set completeopt=longest,menu
C++の補完
C++の補完をサポートするには、OmniCppCompleteプラグインが必要です。http://www.vim.org/scripts/script.php?script_id=1520 からダウンロードし、$HOME/.vim に解凍します。vimrcにて、Vi互換モードを無効にし、ファイル・タイプ認識を有効にします。
set nocp
filetype plugin on
続いて、下記コマンドでC++ソースのタグ・ファイルを生成します（ソース・ファイルは src フォルダにあるとする）。
ctags -R &#8211;c++-kinds=+p &#8211;fields=+iaS &#8211;extra=+q src
最後、Vimのtagオプションを正しく設定すれば、C++の補完が利用できるようになります。
キー・バインド
以下は私のvimrcの中の補完に関するキー・バインドです。pumvisible()関数を使ってプルダウンが表示しているかどうかを判断し、その結果によってキー・バインドを変えます。

&#34;mapping&#160;
inoremap&#160;&#60;expr&#62;&#160;&#60;C-J&#62;&#160;&#160;&#160;&#160;&#160;&#160;pumvisible()?&#34;\&#60;PageDown&#62;\&#60;C-N&#62;\&#60;C-P&#62;&#34;:&#34;\&#60;C-X&#62;&#60;C-O&#62;&#34;&#160;
inoremap&#160;&#60;expr&#62;&#160;&#60;C-K&#62;&#160;&#160;&#160;&#160;&#160;&#160;pumvisible()?&#34;\&#60;PageUp&#62;\&#60;C-P&#62;\&#60;C-N&#62;&#34;:&#34;\&#60;C-K&#62;&#34;&#160;

&#34;mapping inoremap &#60;expr&#62;       pumvisible()?&#34;\
\\&#34;:&#34;\&#34; inoremap        pumvisible()?&#34;\
\\&#34;:&#34;\&#34;



&#160;
&#34;mapping inoremap &#60;expr&#62;      [...]]]></description>
		<wfw:commentRss>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e8%a3%9c%e5%ae%8c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vimでシステム開発 &#8212; 高度な移動</title>
		<link>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e9%ab%98%e5%ba%a6%e3%81%aa%e7%a7%bb%e5%8b%95/</link>
		<comments>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e9%ab%98%e5%ba%a6%e3%81%aa%e7%a7%bb%e5%8b%95/#comments</comments>
		<pubDate>Sun, 17 May 2009 13:45:35 +0000</pubDate>
		<dc:creator>uprush</dc:creator>
				<category><![CDATA[vim]]></category>
		<category><![CDATA[jumptable]]></category>
		<category><![CDATA[mark]]></category>
		<category><![CDATA[折畳]]></category>
		<category><![CDATA[移動]]></category>

		<guid isPermaLink="false">http://blog.uprush.net/?p=265</guid>
		<description><![CDATA[前回は 基本的な移動 を紹介しました、今回はより高度な移動を紹介し、更に速やかにジャンプしましょう。
&#160;

ジャンプ・テーブルを使う

Vimにて、色んなコマンドはカーソルをジャンプ（移動）させます。Vimはジャンプ前のカーソルの位置をジャンプ・テーブルに記録し、このジャンプ・テーブルを使う幾つかのコマンドを提供しています。具体的にどういうコマンドはジャンプをさせるか「:help jump-motions」を参照します。ジャンプ・テーブルを確認するのは「:jumps」です。
&#160;
「&#8217;&#8217;」と「&#8220;」 は最近のジャンプ位置に戻ります。例えば、今カーソルは1234行にあります、「G」コマンドで4321行へ移動しました。この時、「&#8217;&#8217;」または 「&#8220;」を使って1234行へ戻ります。この二つも移動コマンドですので、4321行もジャンプ・テーブルに記録され、もう一度「&#8217;&#8217;」または「&#8220;」を 押すとカーソルは1234行に戻ります。
この二つの違いは、「&#8220;」は前回の列まで戻るが、「&#8217;&#8217;」は前回の行のはじめの空白でない文字に戻ります。
&#160;
もっと古いジャンプ場所へ戻るには「CTRL-O」を使います。これと逆に、「CTRL-I」はもっと新しいジャンプ場所へ移動します。この二つのコマンドも数字を入れて倍数を指定できます。関連ヘルプは「:help CTRL-O と :help CTRL-I」

&#160;

マークを使う

&#160;マーク（mark）はVimのより精度の高いジャンプ技術です。マーク名を指定すれば、直接該当マークへ移動できます。
Vimのマークは全て名前を持っています。この名前は一つの文字からなります。大文字と小文字のアルファベット（A-Za-z）はマーク名として使 えます。これらのマークの場所はユーザから設定できます。名前は数字と符号のマークは、ユーザから設定できません。ここではアルファベット・マークについ て説明します、数字と符号マークは「:help mark-motions」を参照してください。
&#160;
小文字アルファベット・マークのスコープはバッファです。各バッファの小文字マークは同じ名前を使っても構いません。例えば、AとB二つのファイル にそれぞれ t というマークを設定した場合、Aファイルの中で「&#8217;t」コマンドはAファイルのt位置へ移動します。同様に、Bファイルの中で「&#8217;t」コマンドはBファイ ルのt位置へ移動します。バッファ・リストから、ファイルを削除すれば、小文字マークも消えます。
大文字マークはグローバル・マークで、スコープはファイルです。AファイルにTマークを付けた場合、編集中のファイルに関らず「&#8217;T」はAファイルのT位置へ移動します。
指定のマークへ移動する時、「&#8217;{a-zA-Z}」或いは「`{a-zA-Z}」を使います。例えば、「&#8217;t」はマークtへ移動します。前回にも紹介した通り、「&#8217;」と「`」の違いは、「&#8217;」はマークした行の一番目の空白でない文字へ移動するのに対し、「`」はマークした行のマークした列まで移動します。
&#160;
マークの付け方は簡単です。「m{a-zA-Z}」を使います。例えば、「mt」はカーソルにある位置をマークtに付けます、「mT」はカーソルにある行をマークTに付けます。関連ヘルプ「:help m」。
マークを削除するには、「:delmarks」を使います。「:marks」コマンドは全てのマークを表示します。
&#160;

マーク関連のプラグイン

マークについて、よく使うプラグインは二つあります。ShowMarks と marks browserです。
&#160;
ShowMarks
ShowMarks はマークの位置をハイライトします。マークを付ければ、ShowMarksはマークの名前を表示し、マークした行をハイライトします。&#160;
ShowMarksのインストールについて、http://www.vim.org/scripts/script.php?script_id=152 からShowMarksをダウンロードし、$HOME/.vimに解凍します。
私のvimrcに、以下のようにShowMarksを設定しています。

&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#160;
&#34;&#160;showmarks&#160;setting&#160;
&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#160;
&#34;&#160;Enable&#160;ShowMarks&#160;
let&#160;showmarks_enable&#160;=&#160;1&#160;
&#34;&#160;Show&#160;which&#160;marks&#160;
let&#160;showmarks_include&#160;=&#160;&#34;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&#34;&#160;
&#34;&#160;Ignore&#160;help,&#160;quickfix,&#160;non-modifiable&#160;buffers&#160;
let&#160;showmarks_ignore_type&#160;=&#160;&#34;hqm&#34;&#160;
&#34;&#160;Hilight&#160;lower&#160;&#38;&#160;upper&#160;marks&#160;
let&#160;showmarks_hlline_lower&#160;=&#160;1&#160;
let&#160;showmarks_hlline_upper&#160;=&#160;1&#160;

&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34; &#34; showmarks setting &#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34; &#34; Enable ShowMarks let showmarks_enable = 1 &#34; Show which marks let showmarks_include = &#34;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&#34; &#34; Ignore help, quickfix, non-modifiable buffers let showmarks_ignore_type = &#34;hqm&#34; &#34; Hilight [...]]]></description>
		<wfw:commentRss>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e9%ab%98%e5%ba%a6%e3%81%aa%e7%a7%bb%e5%8b%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vimでシステム開発 &#8212; 基本的な移動</title>
		<link>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e5%9f%ba%e6%9c%ac%e7%9a%84%e3%81%aa%e7%a7%bb%e5%8b%95/</link>
		<comments>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e5%9f%ba%e6%9c%ac%e7%9a%84%e3%81%aa%e7%a7%bb%e5%8b%95/#comments</comments>
		<pubDate>Sun, 17 May 2009 13:40:07 +0000</pubDate>
		<dc:creator>uprush</dc:creator>
				<category><![CDATA[vim]]></category>
		<category><![CDATA[移動]]></category>

		<guid isPermaLink="false">http://blog.uprush.net/?p=262</guid>
		<description><![CDATA[Vim内の移動方法は非常に沢山ありますが、全部把握する必要がありません。私たちの目標はVimマスタになることではなく、効率よくファイルを編集することです。移動方法の中よく使う方法を勉強しましょう。
以下紹介するコマンドは、特に説明がなければNormalモードで使うコマンドとします。これらのコマンドのヘルプは「:help コマンド名」です。例えば、「j」コマンドは、「:help j」です。
&#160;
上下左右
最も簡単かつ最も使うコマンドのh,j,k,lから始めましょう。
h,j,k,lはそれぞれ左、下、上、右へ移動します。多くのVimコマンドと同じ、これらのコマンドの前に数字を入れて、移動の倍率を表します。例えば、「10j」は下１０行へ。
デフォルトでは、hとlコマンドはカーソルを現在の行から外さない。カーソルは行の頭にあれば、hを押しても前の行へ行きません。前の行へ行くようにするのは、「whickwrap」オプションを設定します。詳しくは「:help &#8217;whichwrap&#8217;」
Vimの作者はキーのバインドについて、色々工夫しました。ほかのh,j,k,lのキーバインドを見てみましょう。各ウィンドの間に移動のコマンドは、 CTRL-W h/j/k/l（:help CTRL-W_h）。ウィンドの位置を上下左右に移動する時は、CTRL-W H/J/K/L（:help CTRL-W_H）。

&#160;
改ページ移動
Vimの改ページ移動にもPageUpとPageDownを使えます。しかし、矢印キーと同じ、指は主編集領域から外れてしまいます。ですから、よく 「CTRL-B」と「CTRL-F」を使います。もちろん、CTRL-BとCTRL-Fの前に数字を入れれば、移動するページ数を指定できます。
&#160;
ファイル中の移動
Vimは幾つかのコマンドを用意していて、ファイルの中で簡単に移動できます。
「gg」はファイルの１行目へ、「G」は最終行へ、「20G」は２０行目へ移動します。パーセントでも移動できます。真ん中へは「50%」、75%の所へは「75%」です。詳しくは「:help N%」。
ファイルの中で移動している内に、カーソルがどこにあるか分からなくなることもあるでしょう。「CTRL-G」でカーソルを位置を表示できます。また、「set number」で行番号を表示すればわかりやすいです。詳しくは「:help &#8217;number&#8217;」。
&#160;
指定の文字へ
先紹介したコマンドは殆ど行単位で移動する時のコマンドです。行の中で移動するのは f,t,F,T コマンドです。
「f」はカーソルの右側の文字へ移動します。例えば、「fx」はカーソル右側の一個目の x へ移動します。「F」は逆で左側へ移動します。
「t」と「f」の区別は、「t」は指定の文字の前まで移動します。例えば、「tx」はカーソル右側の一個目の x の前に移動します。「T」は逆で左側へ移動します。
この四つのコマンドは行に跨がって移動しません。
コマンドの前に数字を入れて移動の倍数を指定します。「3fx」はカーソル右側３番目の x へ移動します。
「;」は前回のf,t,F,Tコマンドを繰り返し実行します。「,」は逆方向で前回のf,t,F,Tコマンドを繰り返し実行します。この二つのコマンドも数字を入れて倍数を指定できます。
&#160;&#160;
行頭と行末へ
行頭へ移動は「0」、これはアルファベットのOではなく、数字の0です。行末へは「$」です。また、「^」は行の一番目の空白でない文字へ移動します。
正規表現にて、「^」は行頭、「$」は行末を指します。Vimは正規表現と合せてキーを設定したことが分かりました。
&#160;
単語単位で移動
単語単位で移動するために、まずはテキストを一つ一つの単語に分割しなければなりません。Vimにてテキストを分割する時、「iskeyword」オプ ションに設定された文字を単語の文字とします。即ち、単語は「iskeyword」に設定された文字からなります。例えば、「iskeyword」を 「a-z,A-Z,48-57,_」にした場合、FooBar_123 は一つの単語です。FooBar-123 は三つの単語です、FooBar、-と123です。「a-z,A-Z,48-57,_」中の48-57はASCIIの数字を表します。
Vimにて、次の単語の頭へ移動は「w」です。逆に前の単語の頭へは「b」です。次の単語の末尾へは「e」で、前の単語の末尾へは「ge」です。
上記のコマンドは全て「iskeyword」オプションを使って単語の境界を決めます。空白だけを単語の境界とする幾つかのコマンドもあります。ここの 「単語」も通常の単語とは言えないでしょう、空白でない文字からなる文字列です。「W」は次の文字列の頭へ、「B」は前の文字列の頭へ移動します。「E」 は次の文字列の末尾へ、「gE」は前の文字列の末尾へ移動します。


H／M／L
この三つのコマンドは大文字です。
H、M、Lはそれぞれウィンドの上、真ん中、下に移動し、カーソルを一番目の空白でない文字に置きます。HとLの前に数字を入れて、上と下までの行数を指定します。例えば、「3H」はウィンド上部から、３行目へ移動します。
&#160;
カーソルを座標にしてスクロール
ソースを読むとき、カーソルを座標にしてスクロールする必要が出てきます。「zt」、「zz」、「zb」はそれぞれカーソルをウィンドの上部、真ん中、下 部に移動します。この移動方式のメリットは、カーソルは常に座標になり、何回移動しても位置が分からなくなることはありません。
]]></description>
		<wfw:commentRss>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e5%9f%ba%e6%9c%ac%e7%9a%84%e3%81%aa%e7%a7%bb%e5%8b%95/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Vimでシステム開発 &#8212; 便利な tab pages</title>
		<link>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e4%be%bf%e5%88%a9%e3%81%aa-tab-pages/</link>
		<comments>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e4%be%bf%e5%88%a9%e3%81%aa-tab-pages/#comments</comments>
		<pubDate>Sun, 17 May 2009 13:37:15 +0000</pubDate>
		<dc:creator>uprush</dc:creator>
				<category><![CDATA[vim]]></category>
		<category><![CDATA[tab]]></category>

		<guid isPermaLink="false">http://blog.uprush.net/?p=260</guid>
		<description><![CDATA[Vim7.0 から tab pages 機能が利用可能になった。私はよく使うtab pagesコマンドが下記の通り。



:tabnew
新しいtab pageを開く


:tabc
tab page を閉じる


C-PageUp
一つ前のtab pageへ


C-PageDown
次のtab pageへ



Vim デフォルトはファイルを 新しいウィンドーで開く。tabnew で現在のウィンドーで新タブを開くが、デフォルトでタブページでファイルを開けば便利だと思います。これは下記コマンドで実現できます。  &#160; 

gvim&#160;&#160;&#160;&#8211;remote-tab-silent&#160;&#160;filename&#160;

gvim   &#8211;remote-tab-silent  filename

&#160;

gvim   &#8211;remote-tab-silent  filename
Windows の場合
レジストリを修正する。
１．regedit コマンドでレジストリを開いて、/HKEY_CLASSES_ROOT/Applications/gvim.exe/shell/edit /command の値を「C:\Program Files\Vim\vim70\gvim.exe -p &#8211;remote-tab-silent &#34;%1&#34;」に修正する。
２．下記ソースをvim.regとして保存し、実行する。

Windows&#160;Registry&#160;Editor&#160;Version&#160;5.00&#160;
[HKEY_CLASSES_ROOT\*\Shell\Edit&#160;with&#160;&#38;Vim]&#160;
[HKEY_CLASSES_ROOT\*\Shell\Edit&#160;with&#160;&#38;Vim\command]&#160;
@=&#34;\&#34;C:\\Program&#160;Files\\Vim\\vim70\\gvim.exe\&#34;&#160;-p&#160;&#8211;remote-tab-silent&#160;\&#34;%1\&#34;&#160;\&#34;%*\&#34;&#34;&#160;

Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\Shell\Edit with &#38;Vim] [HKEY_CLASSES_ROOT\*\Shell\Edit with &#38;Vim\command] @=&#34;\&#34;C:\\Program Files\\Vim\\vim70\\gvim.exe\&#34; -p &#8211;remote-tab-silent \&#34;%1\&#34; \&#34;%*\&#34;&#34;

&#160;

Windows Registry Editor Version 5.00 [...]]]></description>
		<wfw:commentRss>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e4%be%bf%e5%88%a9%e3%81%aa-tab-pages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vimでシステム開発 &#8212; 検索と置換え</title>
		<link>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e6%a4%9c%e7%b4%a2%e3%81%a8%e7%bd%ae%e6%8f%9b%e3%81%88/</link>
		<comments>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e6%a4%9c%e7%b4%a2%e3%81%a8%e7%bd%ae%e6%8f%9b%e3%81%88/#comments</comments>
		<pubDate>Sun, 17 May 2009 13:31:22 +0000</pubDate>
		<dc:creator>uprush</dc:creator>
				<category><![CDATA[vim]]></category>
		<category><![CDATA[検索]]></category>
		<category><![CDATA[置換]]></category>

		<guid isPermaLink="false">http://blog.uprush.net/?p=257</guid>
		<description><![CDATA[Vimにての検索と置換え、複数ファイルに跨って検索（grep）と置換え、Vimtips（検索と置換え）

検索と置換え

基本な検索と置換えについて、Vim tutorにも詳しく書いてありますが、こちらではもう一度復習しましょう。
Normalモードで、「/」を入力して検索します。例えば「/foo」はfooを検索します。次へを検索は「n」をタイプします。逆方向へ検索は「N」をタイプします。
逆方向に検索するときは「/」の代わりに「?」コマンドを使います。例：?foo
カーソル下の単語を検索するには簡単な方法があります、「*」と「#」を使います。「*」は下へ、「#」は上へ検索します。
検索のヒストリから検索するには、「/」をタイプして、「&#8593;」と「&#8595;」キーで行います。
置換えは以下のように行います。



:s/old/new/g
行単位で見つかった「old」を「new」に置換えします。


:%s/old/new/g
ファイル全体で見つかった「old」を「new」に置換えします。


:%s/old/new/gc
ファイル全体で見つかった「old」を「new」に置換えします。一つ一つ確認を取りながら置換えします。



もちろん、Vimは正規表現を使っての検索と置換えが対応しています。この後も幾つか紹介しますが、正規表現をうまく使えば非常に便利になります。詳しくはヘルプを参照します。

:help&#160;03.9&#160;
:help&#160;pattern&#160;
:help&#160;usr_27.txt&#160;

:help 03.9 :help pattern :help usr_27.txt

&#160;

:help 03.9   :help pattern   :help usr_27.txt


検索に関する設定
以下は私のvimrcの検索に関する設定です、参考になればと思います。

set&#160;hlsearch&#160;&#160;&#160;&#160;&#34;検索文字をハイライト&#160;
set&#160;imsearch=0&#160;&#160;&#34;検索モードでのIMEのデフォルト状態&#160;
set&#160;nowrapscan&#160;&#160;&#160;&#160;&#34;検索でファイル終端に来たら先頭に戻らない&#160;
set&#160;ignorecase&#160;&#160;&#34;検索時大文字と小文字を区別しない&#160;
set&#160;incsearch&#160;&#160;&#160;&#34;増分検索&#160;
map&#160;&#60;F2&#62;&#160;:noh&#60;CR&#62;&#160;&#160;&#160;&#34;&#160;F2を押すと、Highlightを消す&#160;

set hlsearch    &#34;検索文字をハイライト set imsearch=0  &#34;検索モードでのIMEのデフォルト状態 set nowrapscan    &#34;検索でファイル終端に来たら先頭に戻らない set ignorecase  &#34;検索時大文字と小文字を区別しない set incsearch   &#34;増分検索 map &#60;F2&#62; :noh   &#34; F2を押すと、Highlightを消す

&#160;

複数ファイルに跨って検索（grep）と置換え

複数ファイルに跨って検索（grep）
複数ファイルに跨って検索（grep）は、「vimgrep」コマンドを使います。  &#160; 


:vimgrep&#160;/an&#160;error/g&#160;*.c&#160;&#124;&#160;copen&#160;

:vimgrep /an error/g *.c &#124; copen

&#160;
上記コマンドは、現在の作業フォルダにある全ての [...]]]></description>
		<wfw:commentRss>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e6%a4%9c%e7%b4%a2%e3%81%a8%e7%bd%ae%e6%8f%9b%e3%81%88/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vimでシステム開発 &#8212; 多彩なVim</title>
		<link>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e5%a4%9a%e5%bd%a9%e3%81%aavim/</link>
		<comments>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e5%a4%9a%e5%bd%a9%e3%81%aavim/#comments</comments>
		<pubDate>Sun, 17 May 2009 13:27:37 +0000</pubDate>
		<dc:creator>uprush</dc:creator>
				<category><![CDATA[vim]]></category>
		<category><![CDATA[highlight]]></category>
		<category><![CDATA[mark]]></category>

		<guid isPermaLink="false">http://blog.uprush.net/?p=255</guid>
		<description><![CDATA[Vimは黒と白だけではない。逆に、非常にカラフルであり、カスタマイズ色も使えます。コンソール上のVimは、コンソールの制限を受け、幾つかの色しか使えないですが、GUIのVimは自分の好みに合わせて様々な色を利用できます。

ハイライト

前回にも紹介しましたが、Vimのハイライト機能はファイル・タイプ認識を有効にする必要があります。  &#160;&#160; 


filetype&#160;plugin&#160;indent&#160;on&#160;

filetype plugin indent on

&#160;
filetype plugin indent on
ファイル・タイプ認識を有効にした上、以下の一行をvimrcに追加し、ハイライトを有効にします。  &#160; 


syntax&#160;enable&#160;

syntax enable

&#160;
これでデフォルトの色スキーマが適用されました。当然、ほかのスキーマも利用可能です。私の場合、「desert」スキーマを使っています、私のvimrcにこう書いてあります。

colorscheme&#160;desert&#160;&#160;

colorscheme desert

&#160;
http://www.vim.org にて様々な色スキーマがあります。http://www.vim.org/scripts/script.php?script_id=625 から、2007年8月までの全てのスキーマをダウンロードできます。好きなスキーマのファイルを~/.vim/color フォルダにコピーするだけでインストール完了。
また、Color Scheme Explorerというプラグインがあります、このプラグインを使ってインストールしたスキーマの配色を簡単にチェックできます。http://www.vim.org/scripts/script.php?script_id=1298 からダウンロード。
また、既存のスキーマをカスタマイズできます。例えば、私はdesert.vimを~/.vim/colorにコピーし、desert_term.vimにリネームし、以下のように編集しました（修正した内容だけ）。


let&#160;colors_name&#160;=&#160;&#34;desert_term&#34;&#160;
hi&#160;Normal&#160;guifg=#c0c0c0&#160;guibg=#294d4a&#160;ctermfg=gray&#160;ctermbg=black&#160;
&#8230;&#8230;&#160;
&#34;Omni&#160;menu&#160;colors&#160;
hi&#160;Pmenu&#160;guibg=#444444&#160;
hi&#160;PmenuSel&#160;ctermfg=7&#160;ctermbg=4&#160;guibg=#555555&#160;guifg=#ffffff&#160;
&#34;&#160;Matched&#160;brackets&#160;
hi&#160;MatchParen&#160;ctermfg=7&#160;ctermbg=4&#160;

let colors_name = &#34;desert_term&#34; hi Normal guifg=#c0c0c0 guibg=#294d4a ctermfg=gray ctermbg=black &#8230;&#8230; &#34;Omni menu colors hi Pmenu guibg=#444444 hi PmenuSel ctermfg=7 ctermbg=4 guibg=#555555 guifg=#ffffff &#34; Matched brackets hi MatchParen ctermfg=7 ctermbg=4
&#160;

コンソールとGUIのVimに異なるスキーマを使いたい場合は、vimrcをこのように設定します。


&#34;&#160;color&#160;scheme&#160;
if&#160;has(&#34;gui_running&#34;)&#160;
&#160;&#160;&#160;&#160;colorscheme&#160;desert&#160;
else&#160;
&#160;&#160;&#160;&#160;colorscheme&#160;desert_term&#160;
endif&#160;

&#34; color scheme if has(&#34;gui_running&#34;)  [...]]]></description>
		<wfw:commentRss>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-%e5%a4%9a%e5%bd%a9%e3%81%aavim/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Vimでシステム開発 &#8212; File Type認識</title>
		<link>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-file-type%e8%aa%8d%e8%ad%98/</link>
		<comments>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-file-type%e8%aa%8d%e8%ad%98/#comments</comments>
		<pubDate>Sun, 17 May 2009 13:23:15 +0000</pubDate>
		<dc:creator>uprush</dc:creator>
				<category><![CDATA[vim]]></category>
		<category><![CDATA[filetype]]></category>

		<guid isPermaLink="false">http://blog.uprush.net/?p=251</guid>
		<description><![CDATA[Vimは編集するファイルのタイプを自動的に認識し、タイプに合わせてタブサイズ、ハイライトなどを適用します。

ファイル・タイプ認識を有効にする

ファイル・タイプ認識機能を有効にするのは簡単です。下記コードをvimrcに追加すれば結構です。  &#160;&#160;&#160; 


filetype&#160;plugin&#160;indent&#160;on&#160;

filetype plugin indent on

&#160;

filetype plugin indent on

Vimのサンプルvimrcを使っているのならば、ファイル・タイプ認識もうすでに有効になっていると思います。また、「
:filetype
」コマンドで有効かどうか確認できます。
上記設定を済めば、殆どのファイル・タイプが認識できると思いますが、出来ていないファイルがあれば、手動で設定できます。例えば、main.cを main.c.bakに名前を変更すれば、タイプが認識できなくなります。以下のコマンドで、main.c.bakのタイプを「c」にします。
:set filetype=c
また、ファイルの中にタイプを明記できます。あまり使っていないので、詳しくは「:help modeline」で参照します。

&#160;

ファイル・タイプ認識の役割

ファイル・タイプ認識はどういう役割を果たしますか？異なるタイプのファイルは異なるフォーマットを持ちます。Vimはファイルのタイプを認識し、タイプに合った設定を適用します。
例えば、C言語とbashのソースはコメント形式、キーワードなどが違います。Cソースのタブを自動的に４つのスペースに変換するのは、vimrcに以下のように設定します。  &#160; 


autocmd&#160;FileType&#160;c,cpp&#160;set&#160;shiftwidth=4&#160;&#124;&#160;set&#160;expandtab&#160;

autocmd FileType c,cpp set shiftwidth=4 &#124; set expandtab

&#160;
また、Vimのハイライト機能も、ファイル・タイプ認識を有効にする必要があります。ハイライトについては次回紹介します。
&#160;
&#160;関連ヘルプ

:help&#160;filetype&#160;
:help&#160;setfiletype&#160;
:help&#160;modeline&#160;
:help&#160;&#8217;modelines&#8217;&#160;
:help&#160;&#8217;shiftwidth&#8217;&#160;
:help&#160;&#8217;expandtab&#8217;&#160;
:help&#160;autocmd&#160;

:help filetype :help setfiletype :help modeline :help &#8217;modelines&#8217; :help &#8217;shiftwidth&#8217; :help &#8217;expandtab&#8217; :help autocmd

&#160;
:help filetype :help setfiletype :help modeline :help &#8217;modelines&#8217; :help &#8217;shiftwidth&#8217; :help &#8217;expandtab&#8217; :help autocmd
]]></description>
		<wfw:commentRss>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-file-type%e8%aa%8d%e8%ad%98/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Vimでシステム開発 &#8212; Lookupfile Plugin</title>
		<link>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-lookupfile-plugin/</link>
		<comments>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-lookupfile-plugin/#comments</comments>
		<pubDate>Sun, 17 May 2009 13:20:06 +0000</pubDate>
		<dc:creator>uprush</dc:creator>
				<category><![CDATA[vim]]></category>
		<category><![CDATA[lookupfile]]></category>

		<guid isPermaLink="false">http://blog.uprush.net/?p=247</guid>
		<description><![CDATA[ファイルの開くについて、Vimは「:find」コマンドがありますが、あまり便利ではないと思います。ファイルが多い場合、検索が遅くなります。また、ファイルのフルネームを入力しなければならない、正規表現は使えないのです。
Vim標準のファイル・エクスプローラであるnetrwも紹介しました、netrwはフォルダ・エクスプロー時が便利です。ただし、すでに名前または名前の一部が分かっているファイルの場合、netrwは効率が高いと言えないでしょう。
ファイル名の一部を入力すれば、該当するファイル一覧を表示して、選択できるような機能がずっとほしかったのです。
ここで登場するのはlookupfileプラグインです。lookupfileは私が求めていたプラグインです。このプラグインを投票する時、私は「Life Changing」を選びました。

&#160;

インストール

http://www.vim.org/scripts/script.php?script_id=1581 から、lookupfileプラグインをダウンロードします。
lookupfileのバージョン1.6からは、Vim 7.1が必須となっています。私のLinuxはデフォルトがVim 7.0です。Vim 7.1をコンパイルして見たが、Vim 7.1のGUIフォントについて、私が好きなIPAゴシックが利用できなかったため、やめました。結局、lookupfileの1.4版をインストールし ました。
ダウンロードしたファイルを~/.vim フォルダに解凍します（Windowsの場合は$VIM/vimfilesまたは$HOME/vimfiles）。Vimから「:helptags ~/.vim/doc」コマンドを実行し、ヘルプを生成します。これで「:help lookupfile」でlookupfileのヘルプを表示できます。
また、lookupfileを動かすにはgenutilsプラグインが必要となります。http://www.vim.org/scripts/script.php?script_id=197 からダウンロードし、~/.vim フォルダに解凍します。
続いては、lookupfileの使用について紹介します。名前はlookupfileですが、このプラグインはファイル以外も、バッファとフォルダなどの検索もできます。
&#160;


 ファイル、バッファとフォルダの検索

lookupfileはファイルを検索時、tagファイルが必要です。前回紹介した「ctags」コマンドで生成したtagファイルも利用できますが、速度が遅い。ですから、プロジェクトのファイル一覧のtagファイルを作ればいい。
例えば、私は以下のシェルを使って、Vim 7.1 のソースのtagファイルを作成します。

#!/bin/sh&#160;
&#160;
#&#160;generate&#160;tag&#160;file&#160;for&#160;lookupfile&#160;plugin&#160;
echo&#160;-e&#160;&#34;!_TAG_FILE_SORTED\t2\t/2=foldcase/&#34;&#160;&#62;&#160;filenametags&#160;
find&#160;.&#160;-not&#160;-regex&#160;&#8217;.*\.\(png\&#124;gif\)&#8217;&#160;-type&#160;f&#160;-printf&#160;&#34;%f\t%p\t1\n&#34;&#160;&#124;&#160;\&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sort&#160;-f&#160;&#62;&#62;&#160;filenametags&#160;

#!/bin/sh  # generate tag file for lookupfile plugin echo -e &#34;!_TAG_FILE_SORTED\t2\t/2=foldcase/&#34; &#62; filenametags find . -not -regex &#8217;.*\.\(png\&#124;gif\)&#8217; -type f -printf &#34;%f\t%p\t1\n&#34; &#124; \         sort -f &#62;&#62; filenametags

&#160;
※シェルの内容について、前回の Vimでシステム開発 &#8212; tagファイルとtaglistプラグイン（その１） [...]]]></description>
		<wfw:commentRss>http://uprush.net/2009/05/vim%e3%81%a7%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e9%96%8b%e7%99%ba-lookupfile-plugin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
