Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

括弧閉じ閉じ

$
0
0

正月に勢いだけで作ったscriptのエントリを勢いで投稿してるんだけど、実はその他に年末にも作ってたのがあって、結構いい感じだったんでなんとなく投げておきます。歳の話はするな。

ソース

closer.vim
function! closer#closeBracket() abort
    let brackets = split(&matchpairs,'[:,]')letb:pos= getcurpos()letb:returnBracket=''let isHit =0while search('['.escape(join(brackets,''),'\.*^$]~/').']','bW')>0&& isHit ==0letb:bracketIdx=match(brackets, matchstr(getline('.'),'.',col('.')-1))ifb:bracketIdx % 2==1
            norm %
        elseletb:returnBracket= brackets[b:bracketIdx+1]let isHit =1endifendwhilecall setpos('.',b:pos)returnb:returnBracketendfunction

何これ

バッファ内を遡りながらmatchpairsに登録してあるもので、直近のまだ閉じてない(と思われる)括弧を見つけて閉じます。

括弧閉じるのにバッファ検索するスクリプト奴ー

僕のvimの使い方の問題なんですが、基本的にスクリプトキディの域を出ないのでむしろmarkdown筆頭に文章打ちとして使うことのほうが多いんです…で、全角括弧を閉じるのって必ず変換が伴うめんどくさい手順なので出来るだけラク出来ないものか、ということです。幸いmatchpairsはマルチバイトの文字も問題なく食べてくれるので思想信条が許す限り1は突っ込んでおきました。

丁度インサートモード中の<C-b>は空いているのでここが適役だと思うんですけどね。


  1. とりあえずsjisのマルチバイトの括弧だけあれば… 


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>