LoginSignup
4
5

More than 5 years have passed since last update.

Vimに空気を読んで引用符記号を自動補完してもらう

Last updated at Posted at 2016-03-11

Vimでは以下のように設定すれば対応する括弧や引用符を自動補完してくれる。

inoremap { {}<Left>
inoremap [ []<Left>
inoremap ( ()<Left>
inoremap " ""<Left>
inoremap ' ''<Left>

括弧に関して言えばこれで良いが、引用符("と')の場合は引用を閉じようとしているのに補完されてしまうケースがあり煩わしい。
そこで簡単な関数を用意して、既に対応する引用符が存在する時には補完を行わないようにした。(Vimに空気を読んでもらった)

function! QuotesCompletion(char)
    let counter = 0
    let line = getline(".")
    for i in range(strlen(line))
        if line[i] == a:char
            let counter += 1
        endif
    endfor
    if counter % 2 == 0
        return a:char.a:char."\<Left>"
    else
        return a:char
    end
endfunction

inoremap <silent> <expr> " QuotesCompletion("\"")
inoremap <silent> <expr> ' QuotesCompletion("\'")

現在いる行において引用符が偶数個だったら補完して、奇数個だったら既に対応する引用符があると判断して補完しない。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5