{hook}で登録した関数を、{when}で指定したタイミングで呼び出すことができる。{hook}は文字列stringまたは関数参照Funcrefで指定。文字列で指定する場合、定義された関数名である必要がある。フック関数が取る引数は{when}の指定によって異なる。{when}には、どのタイミングでフックするかを指定。'before'と'after'を指定可能。戻り値はフックのID。後述するフック削除関数で該当フックを削除できる。登録されているフックを削除する。{id}で削除対象のフックを指定。{id}はoperator#user#add_hook()関数の戻り値を指定。登録されているすべてのフックを削除する。{when}は省略可能。{when}が省略された場合、登録されているすべてのフックを削除する。{when}に'before'が指定された場合、登録時に'before'で登録したすべてのフックを削除する。{when}に'after'が指定された場合、登録時に'after'で登録したすべてのフックを削除する。実現してみたいと思います。ヤンク時にフック関数を呼び出すために、operator-userを使用して、オペレータでヤンクするoperator-yankを作りました。(当たり前ですが、operator-userのフック機能は、operator-userをベースとしたoperatorでしか使えません。Vim標準のoperatorでは残念ながらフックは使えません。これら関数をそれぞれフックとして登録しています。これを判定して、特定のoperator(ここではoperator-yank)のみ動作させるフックを記述しています。operator操作後のカーソル位置移動を行っています。次に、「ヤンク対象をハイライト」機能の設定を書いてみます。気持ちで感じてください。matchaddにより、ハイライトしています。規定時間たったらハイライトを消すために、地味にVim8.0のtimer機能を使っていたりします。matchadd()はウィンドウ単位であり、別ウィンドウでハイライトを削除しようとしてエラーになります。上記によって、行単位および文字単位での操作対象をハイライトできるようになっています。ブロック単位でのハイライトはめんどうなので実装していません。最後に実際に試したデモを載せておきます。ヤンクしてもカーソル位置が移動していないのがわかると思います。ヤンク対象が赤背景で一瞬ハイライトされるのもわかると思います。operator-userを入れていれば、今すぐ気軽に試せるので便利です。operate作ってるやん」としばらく呆然としてました。こちらはヤンクのみが対象なので、ネタがボツにならなくてすみました。(ホッまとめ以上が、VimConf2016の延長線でできたネタでした。2016の13日目の記事を終わります。08:23VimConf2016の延長線で出来たネタTweet広告を非表示にするもっと読むコメントを書く2016-11-12VimConf2016に参加しました2016/11/5(土)に株式会社ミクシィで開催されたVimConf2016に参加してきたので感想レポートを書きました。ラーメン今年は、午前中の集まりもあったみたいだけど、前日の終電帰りの疲労により不参加。今年は運営側でも、発表者でもなく、一参加者として参加したので、かなり気楽に出発し、12:00くらいに会場下についた。すごい煮干ラーメンを食した。名前の通り煮干がきいてて、こってり系で美味しかった。ラーメンに対する熱意がすごかった。チャンスがあれば食べてみることをおすすめします。kaoriyaさん家宝にします。Go界隈で著名なtenntennさんが発表されに来ていたのが印象的だった。個人的に楽しみだった。いう交流が増えていくのは良いなぁと思った。発表していただきたいと思った。気になったところをいくつかピックアップしました。etc)であり、改めて、vim-jpすごいなぁと感じた。golang関係の発表が3つもあってgolangの勢いを感じた。golangとVimの親和性良い。考察の深さがすごく、感動した。発表中はただただすごいとつぶやいていた。nodeもなかなか速い。Vimのhelp翻訳人が足りない問題。参加するとVimの有名人とたくさん知り合いになれて便利そう。これで参加費2,000円とはお得以外のなにものでもなかった。懇親会では割と色々な人(といっても知り合いばかりだったのが反省点)と話せてとても満足でした。以下、酔っていてあまり覚えていないけど、私の懇親会の様子です。haya14busaさんと一緒に、vim-mode-plusのネタを聞きにt9mdさんに突撃するなどした。programming)などをした。daisuzuさんとdaisuzuさんの職場の方、kaoriyaさん、k-takataさんと職場でのVimの話などをした。aomoriringoさん、ryunixさんとともに寿司行脚をした。aomoriringoさん、ujihisaさん、色々な方とVRの未来について語った。2次会?として、参加者の何人かと渋谷でビックカメラ⇒本屋とブラブラしていました。言っても、私は徹夜カラオケ参加は厳しかったのでここで撤収。徹夜カラオケも盛り上がったようです。私も行きたかったなぁ...以下2次会?の様子の写真で締めとします。熱い発表ばかりでかなりVim熱が高まったので非常によかったです。株式会社ミクシィさん、本当にありがとうございました。2015の13日目です。pluginについてご紹介します。背景みなさんはカーソル位置からスクリーン上に見える範囲の特定の行への移動はどのように操作されていますでしょうか?Vimmerは十人十色なので、様々なやり方があると思います。pluginを使うマウスが大好きでマウスを使う他にも色々あるかと思います。私は、上記の中で以下を組み合わせてやりたい派です。kで調整するというスタイルです。効率化という意味ではベストではないかもしれませんが、素Vimでの操作も考えると別に悪くはなさそうです。個人的に1点課題に感じているところがありました。それが以下の部分です。5jや5kなどcount指定で距離を詰めて移動する方これ、やりたいと思っていますが、実は現状できていません。現状どうやっているかというとこれです。したほうが効率的だと思うのです。長年の手癖は早々直せないもの。pluginを作ってみました。vim-gothrough-jkvim-gothrough-jkの機能は以下です。kをタイプした時の移動幅が5になる。kに戻るか(現状デフォルトは4000)以下に動作のスクリーンショットを載せます。3回下に移動した後に、移動幅が5になり、3回上に移動した後に移動幅が5になっていることがわかるかと思います。kを押しっぱなしでないと発動しないくらいでいいかと思います(デフォルトは150ミリ秒)。環境によってカスタマイズすることを推奨します。kを使わないと近い距離に移動する際に移動しづらくなる。矯正もかなり進むのではないかと思っているので、私はしばらくそれで運用してみるつもりです。pluginvim-hardtime名前を失念してしまいリンクを貼れず申し訳ないのですが、(Lingr上でryunixさんに教えていただきました。ありがとうございました。kを連続タイプしないよう矯正できます。pluginの着想は、ここから来た部分が大きいです。矯正にもなるような機能は無いかなぁと考え、現状の仕様にしました。kで、移動幅を変更するという点でかなり似ています。Requestですますか悩んだのですが、用途もやりたいことも(多分)微妙に違うので、新規に書き起こすことにしました。plugin、vim-gothrough-jkの紹介でした。本題とはそれますが、Vimレベルが上がるのでvimrc読書会に参加することをおすすめします。私は最近あまり顔を出せていませんが、毎週土曜日23時からやってます。2015の13日目の記事を終わります。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。