How I


Client-side web developer, lint freak

Tokyo, Japan

Who are you and what do you use Vim for?

My name is Kuniwak. I’m a developer of Vint, that is a Vim script Lint.

I met Vim when I was a student of Tokyo National College of Technology, and I began maintaining Linux routers as a moderator of the Internet of the college dorm. But I didn’t know programming well (and also Vim, of course) because my course is electrical engineering. I learned these things there; three-phase AC, Faraday’s law, Lenz’s law, … So I knew only 3 things about Vim; how to open a file, how to switch modes and how to save and exit.

After 5 years, I began learning about programming in earnest, and I understood how important efficient editing is. Soon after this, I said, “Goodbye, my lovely cursor keys…” I decide to live with the HJKL keys. Then Vim locked me in its key bindings.

Now, I use Vim for Web development and writing technological books.

Introduce us to your Vim config.

I’m a Lint freak, so I love Syntastic. It is a plugin for syntax checkers (recently, Vint became one of builtin checkers of Syntastic). I have been checking my code by Syntastic for all languages I use.

And I also love the color scheme iceberg.vim. I can find syntax errors easily because this color scheme uses red for only warning colors.

One more thing. I have the self-introduction command :Kuniwak. My Vim can introduce me by displaying my profile:


I wrote the article How to Start “Vim as a Name card” (this article is written in Japanese). You can stop carrying your name cards if you read it, maybe.

What have been the most useful resources for you to learn Vim?

Lint rules.

Lint rules are made of many things should know such as the language history, pitfalls and so on.

For example, the lint rule “ProhibitEqualTildeOperator” is described in Google Vimscript Style Guide tell us about 2 important things. The first one is the following pitfall of comparative operators:

The matching behavior depends upon the user’s ignorecase and smartcase settings and on whether you compare them with the =~, =~#, or =~? family of operators.

We can avoid the pitfall in advance by only reading it.

The second one is the useful operators such as =~# or =~?. Newbies will use the bad operators like =~ and fall the pitfall if didn’t know the rule.

There are too many similar cases to list them all. So I think lint rules are very useful resource to learn language.

Tell us about your project vint.

Vint is a Vim script Language Lint.

You can know why Vint was born and what problems Vint can resolve by reading this slide.

The goal to reach for Vint is:

I think the most variable feature of lints is undefined variable detections. I have always been using this feature for most languages. Vint also support it, so you can find undefined variables.

For example, the variable param is not defined in the following code:

" /tmp/hoge.vim

function! DoSomething(param)
	echo param

then, Vint can report the error by the command vint:

$ vint /tmp/hoge.vim
/tmp/hoge.vim:4:7: Undefined variable: param (see :help E738)

And the default output format is designed to be QuickFix-friendly, so you can use Vint with the cexpr command:

:cexpr system('vint ' . expand('%'))

And also, you can use Vint with Syntastic.

Most recently Vint began to support Neovim. I’m extremely grateful for the contribution (and other valiant contributions too).

Are you involved in a local Vim community?

Yes, I’m a staff of VimConf.

VimConf is an international Vim conference that have held in Tokyo in 2013, 2014 and 2015. In this conference, many Vimmers (inluding well-known contributors and plugin developers) spoke about their plugins or life-changing plugins or life hacking with Vim.

You can see slides and video records of the past VimConf:

Please contact us if you are interested in our conference!