LoginSignup
1

More than 5 years have passed since last update.

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

Posted at

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

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

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1