What brought me to thinking about this is the following scenario. I’m editing a file in vim, and I want to vertical split a different file and work with it. :vps path/to/a/file I write. Crap, what I really wanted was :vsp instead. So I do a :vsp !*. I suppose I could have hit :, up-arrow, and edited my command-line, but that’s no longer my natural response, because I have an innate comfort with command-line manipulation in my shell of choice.
The same problem happens to a greater degree. I somehow grew up to be a software engineer working in a Windows environment, which means I’m writing code in Visual Studio. Visual Studio is one of the best development environments on the market. Microsoft is terrible at a lot of things, but one of the things they realized is that if they make the best development tools on the planet, developers will write software for the platform. Make the intellectual cost of entry and the day-to-day chores easier, and more people will do it. I don’t care what anybody says, there is no better environment in which to debug code than Visual Studio.
The problem is, Visual Studio is in sore need of a good text editor. The built-in text editor seems alright at first, but it’s all but useless. More often than not, I shell out to vim constantly to do most routine editing and refactoring. This unfortunately creates another control paradigm conflict, when I find myself trying to use vim keystrokes to do things inside of the Visual Studio text editor when I have little other choice (it does happen from time to time).
The context switch from one control paradigm to another is expensive. It’s not a problem I know how to solve. The shells, editors, and other applications have all evolved differently. For various reasons, they have become the canonical way to do things in their particular problem, but the areas that overlap with other products (such as command-line editing, history manipulation, searching, when and how to use regular expressions) are for some reason also always different. It’s a shame.
Certain things start showing up in both; I know I can use a forward slash to search forward in either vim or firefox, but then it’s just a quick fleeting temptation, because hitting two slashes doesn’t cause a repeated search, nor will n and N do what I expect. In some ways, having only some of the common UI paradigms makes it worse because one wants to lapse into full usage, only to run into a brick wall.