パーセント「%」キーで対応する括弧へカーソルを移動する
vimエディタではプログラミングをする時に便利な機能がいくつか用意されており、 その中には、あるプログラミングコード中の 「{」に対応する閉じ「}」、「[」に対応する閉じ「]」、「(」に対応する閉じ「)」を見つけ出す機能があります。 (Windows, Mac)
概要
vimエディタではプログラミングをする時に便利な機能がいくつか用意されており、
その中には、あるプログラミングコード中の
「{」に対応する閉じ「}」、「[」に対応する閉じ「]」、「(」に対応する閉じ「)」を見つけ出す機能があります。
「%」によるカーソル」移動の使い方
下のコードで、2行目の「{」の上にエディタのカーソルがある時に % キーを入力すると、
対応する6行目の閉じ「}」にカーソルが移動します。
1: // JavaScript
2: function js_func() {
3: // 何らかの処理
4: // 何らかの処理
5: // 何らかの処理
6: }
↓( % キーを押す。)
1: // JavaScript
2: function js_func() {
3: // 何らかの処理
4: // 何らかの処理
5: // 何らかの処理
6: }
この機能は次のような場合に便利です。
- 複雑なプログラムコードで対応する閉じ「}」を探す時、
- 変数のスコープを知りたい時、
- ある関数の終わりの位置、もしくは開始位置に移動したい時
Note
vimエディタの初期設定では、次の組み合わせに対応しています。
この組合せであれば、対応する括弧にカーソルを移動できます。
- {}
- []
- ()
「matchpairs」変数
vimエディタの、この「%」でカーソルを移動できるペアの組み合わせは
「matchpairs」という変数で管理されています。
「matchpairs」変数がどのような設定になっているかを知るには、
vimエディタで次のコマンドを入力します。
:set matchpairs
↓(コマンドの実行結果)
「%」でカーソル移動できる新しい組み合わせを追加する
「%」でカーソル移動できる新しい組み合わせを追加するには、
vimエディタの設定ファイルで「matchpairs」変数を変更します。
設定例
新たに「<」と「>」の組合せを追加する場合の例としては、次のようになります。
:set matchpairs=(:),{:},[:],<:>
Note
組合せを追加するだけであれば、 次のコードでも問題ありません。
:set matchpairs+=<:>
動作確認
設定を追加して、vimエディタを再起動したら、 下のようなサンプルコードで正しく動くか確認してみてください。
1: // XMLタグ風 2: <text 3: attribute1="" 4: attribute2="" 5: attribute3="" 6: >
- 2行目の「<」の位置で「%」キーを押したら、6行目の「>」の位置に、
- 6行目の「>」の位置で「%」キーを押したら、2行目の「<」の位置に、
移動できれば設定成功です。
複数文字のペアへの対応
「matchpairs」変数を設定するだけでは、
2文字以上のキーワードの組み合わせには対応できません。
例えば、下のようなシェルスクリプトのコードがあるとして、
2行目の「if」と、5行目の「fi」との間を % キーで移動するようなことは
「matchpairs」の設定では実現できないのです。
1: # shell script 2: if [ -f hogehoge.txt ] 3: then 4: cat hogehoge.txt 5: fi
もし
- 複数文字での組合せを使いたい、
- 正規表現を使いたい
という時には「 matchit.vim 」というvimスクリプトがあるので、
そのスクリプトを使えば実現できます。
Recent Comments
ありがとうございます!
http://nanasi.jp/articles/howto/editing/visualcursor-endtoend.html · 7 years ago
知りませんでした。有難うございました。
http://nanasi.jp/articles/howto/file/open-with-format.html · 9 years ago
<c-f>1ページ分、下にスクロールする<c-b>1ページ分、上にスクロールする
どっちも逆です。
http://nanasi.jp/articles/howto/user-manual/user-manual-motion.html · 10 years ago
set 使用時に : で閉じるのを忘れて右往左往してました。
http://nanasi.jp/articles/howto/file/modeline.html · 10 years ago
やっぱり日本語の方が早いっす。
http://nanasi.jp/articles/howto/help/help_ja.html · 11 years ago