読者です 読者をやめる 読者になる 読者になる

行末にセミコロン;をつけて改行するキーバインド

長かった。。。これがやりたかったんだー!!!
やっと書けた。たったの一行だけど、うれしいなぁ。。。

inoremap ;; <C-O>$;<CR>


最初はカレント行をとってきて、うしろにセミコロンつくるようなfunctionつくって=で呼び出そうとしてた。
それをとかとかにマッピングしようとしたんだけど、挿入モードの時はコントロールキーとの組み合わせのキーバインド
上手く動かなかった。


ここまでの副産物として、vimスクリプトの文法も勉強できました。
vimrc基礎文法最速マスター - 永遠に未完成
Vimスクリプト基礎文法最速マスター - 永遠に未完成


vimのヘルプも引くようになったし。たくさん引くので、

" ヘルプを引きやすくする
nnoremap <C-h> :<C-u>help<Space>
nnoremap <C-h><C-h> :<C-u>help<Space><C-r><C-w><CR>

がとても役に立った。。。ありがとうヘルプ!
いままではだれかの.vimrcのコピペだったけど、やっと自分でできた。

追記

・・・すごくうれしくて、周りのvim使いのみんなにいったら、


「これ、すでに行末にセミコロンあったときにはセミコロン2個になっちゃうんだけど。。。」


と、ぶーぶー反響があったので、くやしくて改良してみた。

function! IsEndSemicolon()
  let c = getline(".")[col("$")-2]
  if c != ';'
    return 1
  else
    return 0
  endif
endfunction
inoremap <expr>;; IsEndSemicolon() ? "<C-O>$;<CR>" : "<C-O>$<CR>"


これでよし。
functionとの勉強になった!