Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
10
Help us understand the problem. What is going on with this article?
@yami_beta

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

More than 3 years have passed since last update.

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
10
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
mixi
全ての人に心地よいつながりを

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
10
Help us understand the problem. What is going on with this article?