Demo of my patch

Last month, I opened a Pull Request to Vim which added incremental highlight feature — highlight all matches while incremental searching. One of most missing feature of Vim. And it’s merged today (Patch 8.0.1238)!

At the same time, I’m the author of the Vim plugin called incsearch.vim, which provides incremental highlight feature. It’s one of my favorite plugins I ever created and is beloved by lots of Vim users.

This post is story about “incsearch”. This is farewell to incsearch.vim.


I went to Gopherfest 2017 in San Francisco and it was really great experience! I live in Japan and I just happened to be around here in this week, so it was great timing :)

Gopherfest 2017:

There was a live stream too.

I enjoyed especially @francesc’s talk about “State of Go” which shows lots of cool changes between Go 1.8 and upcoming 1.9.

I like this one ;)

It was also interesting to listen @rob_pike’s talk about upspin project. I feel interface of upspin looks cool.

I was happy to come Gopherfest 2017!!!

Start contributing to Go by small steps

I didn’t know much…

I talked about “Idiomatic Go Readability” at Go 1.8 release party in Tokyo.

Here is the Google slide.

I really enjoyed the release party and I’m happy to see Go 1.8 is released!

Enjoy Go!

I’ll introduce how to represent sum/union/variant(-like) type in Go first.
Then, I’ll introduce ‘gosumcheck’, which is a static lint tool which checks all possible cases of type-switch.

This is a post for Hatena Engineer Advent Calendar 2016 (Japanese).

Sum Type in Go

So, what is sum/union/variant type? From Wikipedia,

In computer science, a tagged union, also called a variant, variant record, discriminated union, disjoint union, or sum type, is a data structure used to hold a value that could take on several different, but fixed, types.

Example from Wikipedia: (binary tree)

datatype tree = Leaf
| Node of (int * tree *…

This post is for 1st day of [Go Advent Calendar (3)](

I’ll introduce several Golang tips which I guess is not popular but definitely it’s useful at least for me.
Each tips are somewhat small to write one post for them, so I’ll introduce them by this post all at once.

1) gopkgs — List Go packages FAST by using the same implementation as goimports

gopkgs outputs list of Go packages. go list … does the same thing but go list is too slow for daily usage.
On the other hand, gopkgs is fast because it uses same implementation as goimport.
goimport and gopkgs are fast because they take care .goimportignore …

Conference of the vimmer, by the vimmer, for the vimmer


This is my report of #vimconf2016 which was held in Japan on 2016/11/05 (Sat). About one hundred vimmers participated in this conference.

I went to vimconf as a presenter and talked about vimlparser written in Go. I also enjoyed watching others talks and talking with lots of talented vimmers.

This is an “international” conference for Vim

#vimconf is an international conference. vimconf was held 4th times including vimconf2016 (vimconf2013, vimconf2014, vimconf2015). All of them are held in Japan and talks were in Japanese, but vimconf definitely aims to be an international conference.

A lot of slides are written in English, so I think you can enjoy…

I’d like to introduce reviewdog! An automated code review tool working with any lint tools and supports local run as well.

“reviewdog” provides a way to post review comments to code hosting service, such as GitHub, automatically by integrating with any linter tools with ease. It uses any output of lint tools, with translation if required, and post them as a comment if the file and line are in diff of patches to review. reviewdog also supports run in local environment to filter output of lint tools by diff.

Introduce go-vimlparser

I developed go-vimlparser, which is the Vim script parser written in Go. It’s the fork of, which is the Vim script parser written in Vim script (wow!).

ynkdir/vim-vimlparser provides Vim script, Python, and JavaScript vimlparser. Vim script implementation is the original one. Python and JavaScript implementations are generated by (ad-hoc) VimL to Python/JavaScript translator.

Python and JavaScript implementation may be fast enough, but… I like golang these days and vimlparser implementation written in Go should be faster, easy to use by type support(completion, doc, etc…) and easy to provide binary tools to users for CI or editor support. …


V!mm!shment Th!s World!

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store