Last week, I finished the first version of MacVimSpeak, the app I’ve been working on the last few weeks at the Recurse Center. Here’s a demo of the app:
MacVimSpeak allows you to “say” Vim commands to your computer and have them execute in your chosen flavor of Vim. The app is native OS X and doesn’t know/care about what Vim you use: you can use MacVim, Vim in the terminal, Sublime with Vim bindings, whatever you choose.
The app is in large part a port (in particular, the commands!) of AshleyF’s VimSpeak which runs on Windows from Visual Studio and uses native Windows speech recognition. MacVimSpeak also uses [Mac, in this case] native speak recognition, and to use the app, if you don’t yet have accessibility for dictation installed, you may need to download (about 1GB) those tools so speech recognition can happen on your computer and not send data to Apple for translation. The app itself is about 5MB.
How does it work?
The app has a grammar of known commands mapping to the convenient keyboard commands in Vim, which generally map to words. For example, the word “change” executes the keystroke for “c”, saying “change 3 word” will execute “c3w”. Commands that use numbers (i.e. motion commands) are added for numbers up to and including 20.
I can expand more on this in a post about building the app, but the app listens for these Vim-related words/phrases, and there are about 5000 options, which you can see and scroll through by clicking the “show” on your microphone (that Search bar doesn’t work, fyi):
The entire project is open sourced on Github (from the beginning!), and is MIT licensed and open to contributions.
You’ll enjoy it more if you use a good external microphone and setting showcmd in your Vim instance so you can see what Vim is getting from you. Right now the app mutes other audio while running, but I’m open to exploring fixing that or making that optional if someone is interested 🙂
Thanks to AshleyF’s VimSpeak for the inspiration, a bunch of RCers for various pairing/help (Malko, Viraj, Damien, Aditya, Alan, Patrick).
The speech icon in the logo is by Stephen JB Thomas from The Noun Project.