Vimの折り畳み機能(SQL SELECT時に折り畳みマーカー)

Vimの折り畳み機能を使ってみます。
テキストにheadコマンドで見出しをつける」で作った、見出しあり・見出しなしのテキストファイルhoge2・hogeを使います(hoge2は、hogeに見出しを入れて、さらに見出し以外の行頭にタブを挿入したファイル)。
この2つのファイルのdiff結果は以下のとおりです(タブを無視するオプション-wを指定しています)。

~$ diff -w hoge hoge2
0a1
> ==> SECTION:00 <==
6000a6002,6003
> 	
> ==> SECTION:01 <==
12000a12004,12005
> 	
> ==> SECTION:02 <==
18000a18006,18007
> 	
> ==> SECTION:03 <==
24000a24008,24009
> 	
> ==> SECTION:04 <==
~$ 

Vimのdiff時の折り畳み機能を手っ取り早く使うには、vimdiffを起動します。

~$ vimdiff hoge hoge2

vimdiff
おっと、差分が出すぎて真っ赤になってしまいました。hoge2ファイルは、行頭にタブがあるため、全行差異が出るためです。hogeの方にタブを挿入して差分を最小にします。カーソルがhoge側のウィンドウにある状態で、これを実行します。

:%s/^\t//
:diffu

タブを削除して、diffupdateをかけました。すると以下の画像のようになります。
vimdiff2

5988行: Doe〜 とあるのが、折り畳まれている行です。このようにdiff時の折り畳み機能は、差分のない区間が折り畳まれます。

次はインデント時に折り畳む機能を使ってみます。下はhoge2のみを開いたときのVimの画像です。
vim-open
折り畳みを機能させます。

:set fdm=indent

以下のように、見出し以外の部分であるインデントされた行(行頭にタブがある行)が折り畳まれます。
vim-fdm-indent

最後に、マーカーによる折り畳み機能です。
このブログのwordpressのデータベースにアクセスして、マーカーを仕込んだSELECT文を発行します。そして、その出力をVimへパイプします。

~$ mysql -uroot -se "SELECT '{{{:',post_date,post_title,post_content,'}}}'
 FROM wordpress_db.wp_posts where post_status='publish' order by post_date asc" -p | vi -

vim-fdm-marker

折り畳みを開くとこうなります。

vim-fdm-marker-open

コメント

タイトルとURLをコピーしました