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を使わないやり方をあまり思いつきませんでした。

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

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

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.