4
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

lexima.vim を使っている人向け便利キーマップ

Posted at

Insert モード中のカーソル移動

Insert モード中にカーソル移動をしたい場合,以下のようなキーマップを設定すると,CTRL-l で undo を分割せず右へ移動できます.

inoremap <C-l> <C-g>U<Right>

lexima.vim による括弧の自動補完

lexima.vim は,閉じ括弧を自動で入力してくれるプラグインです.
しかし lexima.vim で括弧の補完をしている場合,上記の CTRL-l で閉じ括弧から抜けると,undo が分割されてしまうことがあります.

例えば, cgn で変更中に lexima.vim で補完された括弧から抜けるため CTRL-l を押した場合,ドットリピートで変更を繰り返すことが出来なくなってしまいます.

ctrl-g_U.gif

lexima.vim の括弧補完を cgn で使うためのキーマップ

cgn で lexima.vim の括弧補完とカーソル移動を含む変更を,ドットリピートで繰り返すためのキーマップが以下になります.

inoremap <C-l> <C-r>=lexima#insmode#leave(1, '<LT>C-G>U<LT>RIGHT>')<CR>

以下の gif のように,ドットリピートでも補完された括弧がちゃんと入力されます.

ctrl-g_U_lexima.gif

lexima.vim では,閉じ括弧を補完した後に同じ閉じ括弧を入力すると,重複せずに括弧の外にカーソルが移動する機能を持っています.

Before        Input         After
------------------------------------
(|)           )             ()|

lexima.vim の README より引用)

紹介したキーマップはこの機能を利用して <C-l> を入力した際に,以下のような条件に応じた移動を実現しています.

  • カーソルの右隣が lexima.vim で補完された閉じ括弧の場合
    • lexima#insmode#leave() でカーソルを移動
  • それ以外の場合
    • <C-g>U<Right> で移動

注意点

lexima#insmode#leave() は help に載っていないため,将来的にこの手法が使えなくなる可能性があります.

環境

  • MacVim 8.0.46
  • lexima.vim v1.2
4
10
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
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?