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
を使わないやり方をあまり思いつきませんでした。
他にも良くないアンチパターンがたくさんあると思います。コメントにて指摘していただけるとうれしいです。
あと、このプラグイン、作ったもののあまり使いませんでした...。