George V. Reilly

Opening Vim at the right place

If you know exactly which line you want to go or which pattern you want to search for, Vim provides a couple of command-line options that can help: +NUM goes to line number NUM, while +/PAT searches for the first occurrence of PAT. It's also possible to execute an Ex command with +CMD, such as "+set fenc=latin1". You can supply up to ten + options.

vim +23 ~/.bashrc
vim '+/ASIN\|ISBN' template.rst
vim "+set fenc=latin1" some.csv

Running PyCharm on Yosemite

I did a clean install of OS X 10.10 on my home laptop a week ago. I tried to launch PyCharm 4.0.4 on it today. It im­me­di­ate­ly failed. Every time.

When I looked in the System Console, I saw:

1/25/15 7:46:00.557 PM pycharm[1160]: No matching VM found.
1/25/15 7:46:00.711 PM[1]: (com.jetbrains.pycharm.58252[1160]) Service exited with abnormal code: 1

The JetBrains website wasn't very helpful when I looked there. In time, I found a Stack­Over­flow answer that put me on the right track (and reminded me that I had previously solved this problem about a year ago, at work). PyCharm and some of the other JetBrains IDEs require JDK 1.6, as continue.

Win64 Vim 7.2.182

I updated the Win64 binaries of Vim at vim-win3264 from Vim 7.2.000 to 7.2.182.

I'm amazed that the original binaries were downloaded over 11,000 times since last August.

Exuberant Ctags and JavaScript

Exuberant Ctags is an essential complement to Vim: it generates an index of symbol names (tags) for a set of source files. In Vim, just place the cursor on a function name and type C-] to go to its definition.

Ctags works well for most of the languages that I deal with, but falls down badly on modern JavaScript. Its built-in parser simply doesn't handle de­c­la­ra­tions like these:

Sizzle.selectors.filters.animated = function(elem) { // ...
ajaxSetup: function( settings ) {

I came across Unbad's workaround earlier tonight. His code didn't work for me, so I hacked on it until it did:

--regex-js=/([A-Za-z0-9._$]+)[ \t]*[:=][ \t]*\{/\1/,object/
--regex-js=/([A-Za-z0-9._$()]+)[ \t]*[:=][ \t]*function[ \t]*\(/\1/,function/
--regex-js=/function[ \t]+([A-Za-z0-9._$]+)[ \t]*\(([^)])\)/\1/,function/
--regex-js=/([A-Za-z0-9._$]+)[ \t]*[:=][ \t]*\[/\1/,array/
--regex-js=/([^= ]+)[ 

reStructuredText syntax highlighting

Vim has had syntax high­light­ing since version 5.0 in 1998. It quickly became in­dis­pens­able. It's hard to go back to looking at mono­chro­mat­ic source code after you've become accustomed to syntax high­light­ing.

The syntax high­light­ing is tied into Vim's support for col­orschemes, which define colors for the fun­da­men­tal syntax groups like Number, Comment, and String. The syntax high­light­ing for a particular language defines custom syntax groups for specific language features, such as cppEx­cep­tions or htmlEndTag,

The custom syntax groups are linked to the underlying fun­da­men­tal syntax groups. Hence, if you change your col­orscheme, your syntax high­light­ing is updated au­to­mat­i­cal­ly.

The re­Struc­tured­Text syntax high­light­ing in Vim 7.2 has some short­com­ings, in my opinion. For example, continue.

Dramaturgy: Vim

So how do I go from the Project Gutenberg etext to LaTeX?

Here's the Gutenberg text for the pictured fragment:


THE BISHOP OF DOWN AND CONNOR: I here present your undoubted emperor-
president and king-chairman, the most serene and potent and very puissant
ruler of this realm. God save Leopold the First!

ALL: God save Leopold the First!

WITH DIGNITY) Thanks, somewhat eminent sir.

to your power cause law and mercy to be executed in all your 


Perusing Eric S. Raymond's blog recently, I noticed his claim that as a one-time maintainer of GIFLIB, just about every cellphone and browser has some of his software running in it.

That got me thinking about my own reach and where software that I've con­tributed to can be found.

‘Oh that a man's reach should exceed his grasp, or what's a Heaven for?’

—Robert Browning

I spent seven years on the IIS (Internet In­for­ma­tion Services) de­vel­op­ment team at Microsoft. By any measure, that's a successful product, running one-third of all websites. There are over 100 million registered websites. Many of them are parked and many others see negligible volume, but that's millions, perhaps tens continue.

Vim 7.2 is released

Fifteen months after the release of Vim 7.1, Bram announced the release of Vim 7.2 last weekend. No major new features, just the con­sol­i­da­tion of more than 300 patches. He also included a mention of the new dis­tri­b­u­tion point for Win64 binaries, the vim-win3264 project that I set up at Google Code.

Bram has no way of testing the Win64 version, so I'm providing the official build at vim-win3264. I will no longer provide Win64 binaries for Vim from my own site. The Vim 7.2 sources compile the Win64 binaries cleanly (unlike the 7.1 release). I'll provide occasional in­ter­me­di­ate releases up there too, for both Win32 and Win64.

I'm rather surprised to continue.

Odds and Ends #7

Mis­cel­la­neous links.

Vim on Win64 updated

I have updated the Win64 port of Vim. It now includes a working installer, a working "Edit with Vim" shell extension, and the first 195 patches for Vim 7.0. Get it while it's hot!

Previous »