Humanity

Edit the world by your favorite way

空白をスキップして縦に移動するマッピングを提供する Vim プラグイン作りました

github.com

空白をスキップして縦移動するマッピングを提供するシンプルなプラグインを作りました。
言葉で説明すると分かりにくいと思うのでそれぞれスクリーンショットを貼ります。

non-blank mappings

関数定義・if・while などブロック・ステートメントの対応する始まり・終わりに飛びたい時などに使ってます。

" マッピング例
nmap sj <Plug>(columnskip:nonblank:next)
omap sj <Plug>(columnskip:nonblank:next)
xmap sj <Plug>(columnskip:nonblank:next)
nmap sk <Plug>(columnskip:nonblank:prev)
omap sk <Plug>(columnskip:nonblank:prev)
xmap sk <Plug>(columnskip:nonblank:prev)

Python とかでは役に立たない…ように見えるかもしれませんが、「上 (下) に空白をスキップしてぶつかる行まで飛びたい」という風に考えると割と便利に使えています。

first non-blank mappings

トップレベルに定義した関数等の始まり・終わりに飛びたい時などに使ってます。

" マッピング例
nmap ]k <Plug>(columnskip:first-nonblank:next)
omap ]k <Plug>(columnskip:first-nonblank:next)
xmap ]k <Plug>(columnskip:first-nonblank:next)
nmap [k <Plug>(columnskip:first-nonblank:prev)
omap [k <Plug>(columnskip:first-nonblank:prev)
xmap [k <Plug>(columnskip:first-nonblank:prev)

どんな時に便利か

個人的には編集する言語に限らず汎用的に使えるマッピングを導入したい派なので、 textobj-function などの言語ごとにしか使えないマッピングはあまり導入したくはなかったりします(この言語では使えるか使えないかを考えるのが面倒)。
なのでインデント・空白等、なるべくどのテキストフォーマットでも使える構造に着目した結果、このようなマッピングを作りました。

どちらも vimrc で温めていたもので、ふと紹介したらプラグイン化してほしいとの事だったので今回プラグイン化しました。ぜひご利用ください。