Posted at

vim-easymotionに慣れたいので最初のキーを自動化してみた

More than 1 year has passed since last update.

vim-easymotionと言うものがあります。これは、少ないキーでカーソル移動を実現するプラグインです。また、視覚的にわかりやすいというメリットもあります。移動先を視覚で強調してくれるためです。

ただ、このプラグインをインストールしてもなかなか慣れませんでした。慣れなというのは、具体的にはあまり使うことがなかったのです。

その理由を考えた時、最初のキータッチが面倒であることを思いつきました。よって、入力がなくて一定時間経過した時にvim-easymotionで設定した最初のキー(easymotion-bd-wl)を実行するプラグイン?を作ってみました。


~/.vim/plugged/vim-easymotion-auto/plugin/vim-easymotion-auto.vim

""" setting {{{

"" on plugin
"let g:air_vim_easymotion_auto = 1
"" set keymap
"nm <Leader>f <Plug>(easymotion-auto-start)
"nm <Leader>ff <Plug>(easymotion-auto-stop)
"" }}}

if !exists("g:air_vim_easymotion_auto")
let g:air_vim_easymotion_auto = 0
en

if g:air_vim_easymotion_auto >= 1
set updatetime=3000
let s:air_get_line = getline('.')
let s:count = 0
let s:two_count = 1
en

fu! s:air_easy_test()
if mode() == "n"
let s:count += 1
let s:air_test_line=getline('.')
if s:air_get_line != s:air_test_line
call feedkeys("\<Plug>(easymotion-bd-wl)")
let s:air_get_line=getline('.')
en
en
endf

fu! s:air_vim_easymotion_auto_start()
aug air_easy_test
au!
au CursorHold,CursorHoldI * call s:air_easy_test()
aug END
endf

com! EasyMotionAutoStart call <SID>air_vim_easymotion_auto_start()
com! EasyMotionAutoStop au! air_easy_test

nn <Plug>(easymotion-auto-start) :EasyMotionAutoStart<CR>
nn <Plug>(easymotion-auto-stop) :EasyMotionAutoStop<CR>

if g:air_vim_easymotion_auto >= 1
call <SID>air_vim_easymotion_auto_start()
en


内容に関してはvim-pluginとしての出来は全然よくありません。

一つは、call feedkeys("\<Plug>(easymotion-bd-wl)")の部分で、feedkeysを使わないやり方をあまり思いつきませんでした。

他にも良くないアンチパターンがたくさんあると思います。コメントにて指摘していただけるとうれしいです。

あと、このプラグイン、作ったもののあまり使いませんでした...。