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

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

$
0
0

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

Viewing all articles
Browse latest Browse all 5608

Trending Articles



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