<?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; jumptable</title>
	<atom:link href="http://uprush.net/tag/jumptable/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でシステム開発 &#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>
	</channel>
</rss>
