Welcome to the Change Vlog episode, zero about 5.6. I'm Amstikoviak. And I'm Wind Other One. This is the Change Vlog we cover with special new and open source.
If you found us on iTunes, we're also on the web at the Change Vlog.com. We're also up on GitHub. And to get up.com slash, explore, you'll find some trending repos, some feature repos on the blog, as well as our audio podcasts. If you're on Twitter, follow Change Vlog show.
And me, Adam's back. And I'm Penguin P-E-N-G-W-Y-N-N. Fun episode this week, talk to some masters of VIM. Talk to Drew over at VIMcast, Tim Pope from Hash Rocket and Yehuda of Janice, Spain.
Nice lineup. Nice lineup indeed. Talking everybody's favorite cutting edge 1960s technology, talking next up. There you go.
So it seems to be the hot editor. I know there's some e-max lovers out there, savory email. But VIM seems to be what everybody that's waiting on the heralded TextMate 2.0 is waiting on, and they're switching over to VIM. Oh boy.
I don't even want to talk about TextMate, that's a bad subject. I'm a TextMate user, I know the UR2. A lot of people are switching over to Sublime, but it's not open source, so I'm really trying to talk about it on this podcast. Yeah, that's right.
But everybody's want to try VIM as am I. So we figured we'd have some experts and talk about setups and macros and the history of how they got into VIM. It's really interesting, I thought. Yeah.
We'll be at Reddit RubyConf next week, plug that one more time before we head up to Oklahoma, Oklahoma City. April, 21st, 22nd, going to be talking Ruby, Rails, JavaScript, and doing some titanium training. So if you haven't got your ticket yet and you want to go, be sure and get it for the sell out. Fun episode this week, should we get to it?
Let's do it. All right, we're chatting today with some VIM experts on everybody's favorite command line text editors. So before we jump into VIM, let's get some introduction. So Drew, first why don't you introduce yourself a little bit about how you get into VIM.
Hi, my name's Drew Neil, and oh god, how did it start. I used to use text makes, and then I switched to VIM when I started working at a company where I had to use Linux, I no longer had access to Mac. So I could have gone with GEdit, but I chose VIM. I'd kind of been toying with it for a long time before that, but let's just give me the push.
So I started using VIM full time, and it took me a while, but eventually I started to really love it, and I wanted to start sharing with people the tricks that I was learning. So I started the VIMCasts blog and podcast, and so that's why I'm here today. So we'll jump into VIMCasts in just a moment. Tim?
I started using VIMC about a decade ago, when Emacs was a little too hard for me. Since then I've taken the writing plug-ins, before I know it, I've written Rails.VIM, Fugitive, Surround, several others, and maintained several dozen runtime files that ship VIM. And Yuhuda, you are, I guess, trying away from the VIMC expert label, but for those that don't know you, who are you? Yuhuda, I work on a bunch of open source projects, but probably most notably jQuery and Rails.
I, my day job, these days, is mostly working on the Spark or framework. I like a lot of other people use text for me for a while, and I'm also not a person who switched to VIMC because I wanted to be able to, like, a station to a server and use it. I was frustrated by a bunch of limitations of text made that I eventually stopped talking myself out of as being home with agents, and I saw a bunch of people working productively in VIMC try a lot of many times to use it, and was frequently told that I needed to, like, dive in, go call Turkey, et cetera, and that never worked for me because I was never willing to give up like two weeks to learn VIMC, and I eventually decided that the way I would learn VIMC is to pretend it was text made and turn on all the things that let you do that, and it was actually extremely smooth. Like, within an hour I was, like, approximately as productive as I was on text made, and as a person who hacks tools and likes to customize my environment, I quickly got into building plugins, or sorry, using plugins, and then I ended up saying, like, oh, this seems like a problem.
Everybody wants to have plugins, and I guess everyone uses key pop stuff, but there's a few other things that I care about, plus I am, like, doing a few different things than 10 minutes, so there's these plugins that I want to know, wouldn't it be great if everyone might off-skits the same thing, so I ended up building a distribution of common plugins that I know might be. We're gonna jump into those plugins just a moment, but a couple episodes ago we had Dr. Nick from Engineering on the podcast, and he says he prefers text made instead of 1960s technology, so Drew, what would you say to Dr. Nick?
Well, I guess he probably uses Unix, doesn't he? Do you say? Also, how old? The VIM isn't that old, like, I guess what I would, what is the distinction between VI and VIM is it's a tool that has been around for a while, like a lot of other tools, like lists or whatever, but that doesn't mean that, like, when they created it, then the next year they were like, I guess we're done, no more, obviously, it used to be developed, so I think that's a good laugh line that people say about a lot of things, but it's always a kind of weird laugh line because all it really means is that people have been working on it for a long time.
It doesn't actually mean that it's up to that it's a lot of data like that. So Tim, you mentioned Emacs. So what, usually that's the equivalent, maybe it's a false equivalent, so people present, are you a VIM or Emacs guy, then you'll kind of snicker if you're a text-mate guy. So you mentioned Emacs, what's the difference between Emacs and VIM for you?
Nowadays, it's mostly about the modal editing, just once you get into that mindset, it's hard to go back. At the time, my difficulty approaching it was mostly just because you had to learn lists at the same time, and I always found myself editing my dot, Emacs found another editor just when I get stuck. So Drew, what was the motivation behind VIMcast? Well, when I switched to VIM, you could, as Janice, plugin or distribution rather, wasn't available.
So I spent, I don't know, it was a couple of months while I was sort of trying out plugins, discarding them, trying out something else, just trying to get comfortable. So for people starting out today, they can try out Janice and just have this really easy step to VIM. But at the time it was, I'd constantly be searching the web and trying to find stuff about VIM, and there's a lot of good stuff out there all over the place, but I couldn't really find any one place that gave a lot of the answers I was looking for. So I started VIMcast to try to be that place, basically.
So that was the motivation behind it, really. I just, I suppose the other thing is that there are some things about learning to use a text editor that I think don't work so well as a blog post. It's, you know, when it comes to learning to code, you can check out someone's open source project and you can study it, you can use it as reading matter, and you can see why they're doing certain things, and it doesn't matter what text editor or ID they were using. If someone designs a class in a particular way, it's gonna end up having those lines of code, regardless of which editor they used.
There's something about the process of going from an idea to, you know, a piece of code. It's very transient. You don't see the actual process of editing. And so people can be extremely productive with their editors, but unless someone actually sees them doing these little tricks and tips, they could die with them, you know?
The screencast format really works for showing how VIN works because there's just things which, to describe it in a blog post would just, it would just be really difficult to write and it'd be difficult to read, but in 15 seconds you can show something and people just get it. So I kind of, I know when I've picked a good topic when I go to write up the show notes and there's almost nothing for me to write because it's just, ah, you know, just watch the screencast, I can't really describe this. I highly recommend those screencasts, also the Pete code video, but you mentioned blog post a couple of times, so you got one that says, anyone that tried to, I guess everyone who tried to convince me to use VIN was wrong. What do you mean by that?
Yeah, I guess that was a troll title. So like I said before, I repeatedly found myself frustrated with TextMate and repeatedly was told by other people to use either EMAC or VIN and repeatedly was told by VIN people that I need to like turn off the arrow keys and learn to like do it correctly, quote unquote. And I think that there's probably like from a pure perspective, that's probably correct. I think if you're willing to do that, like if you could go to a two week training seminar where they're like, oh, what you're gonna do is use VIN, I think that's probably right.
But I think like a lot of people, I use my editor for my day-to-day work and I can't just be like, oh, I guess the next two weeks, I'll get nothing done because I'll be learning my editor. So I routinely would try VIN and like get told by people that I was doing it wrong and like just be like, forget it, I don't have time right now. I'm just gonna go back to TextMate despite the things that I'm frustrating about it. And I eventually was just like, no, I'm just going to not, I'm going to pretend it's time to me.
I'm going to, I don't really care about productivity right now. I care about being able to write code because I have a job. And once I did that, I realized it was very easy. It was like, VIN editors are editors, right?
So you have to sort of understand that there's this modal concept, but actually you could live in instrumental art for a while before you need to learn that there's like this other mode and it wasn't very hard. So I wrote the post in mostly art of frustration, like I am now a couple weeks in and it wasn't hard. And why did everyone, why did it feel so hard? Everybody in the world who thinks it's hard, like this is, it actually turns out to not be hard.
You know, one of the things that I love about TextMate is just the ecosystem of bundles that are around it. And, you know, I think TextMate too has become the next Duke Nukem. So one of the things that appealed to me was having my editor on any platform, but I'm going to miss all those bundles. So Tim, when you set out on this VIM approach, what was the, the plug-in landscape and what was the first plug-in you wrote?
I started flipping around writing like simple stuff early on, but I didn't really get into it until I found Rails. And then I went and checked, is there a plug-in for Rails? No, there's not. I came back in my later so one is like, well, I got to write it myself.
So 5,000 lines later, we've got Rails on them. So Yehuda, how much of Tim's plug-ins have made it into Jamus? I think, like, almost all of them. Anyone that I can put initially, I think Pat the Gen is the only one that mostly because I'm being lazy, is in there, yeah, but I keep, mostly because switching to Pat the Gen will require some like, large changes to the system, but pretty much anything that anybody uses, that's useful, has been submitted as a Pat it accepted.
There's a bunch of other stuff that is more complicated, like, I have a fork of nurturing that I hacked up to, like, look prettier and feel, work more like how I want to do it too. And I guess the thing about VIM plugins is that they're sort of like Rails plugins and that Tim's worked really well together as he uses all that, but half the work of making a plugin work well inside of Gen is just like, okay, I've inserted it. Now it breaks some other plugin. Can I fix that?
Can I remove it? Maybe there's a configuration option. So Gen is, to me, sort of like, it is like Rails itself in that it's just trying to make sure that everything is integrated well. It's not so much about like, there is a certain amount of like, which alignment plugin is the best plugin or which tab completion plugin is the best plugin and we move on until we find the right one.
But then there's also like, how we make it work well with nurturing is like a big part of it, or how we make it work well with command T. So Gen is geared primarily towards OS 10 and Mac then, it does work on Linux, correct? I don't know if that's, so the answer's supposed to be yes, but I, Carl recently tried it on Linux, I was like, this doesn't look at all, so I think there's probably some bug that makes it not work and that will be addressed rapidly. Carl is a person who is using them because he wants to use it on Linux, so making it work on Linux is a priority right now.
It initially did. So if something broke somewhere along the line. So Drew, what do you get ideas for Vincast episodes? Just through using it, you know, I'll spot myself doing something and saying, ah, that's useful and it's maybe not obvious, so I should do, Vincast about it.
When I started out, I was determined not to do stuff on plugins because I think there's so much that you need to learn about the core functionality. So the first time I covered a plugin was maybe Episode 29 or even 30 or something. Up until then, it was all core functionality. So that's how I started out.
But lately, I've started writing a book about Vinc, which is going to be published by the pragmatic programmers. And my focus there is to focus on core Vinc functionality. So as long as I'm writing this book, all my ideas about working with the core functionality, the editor, they're going into the book rather than into the screencast. So lately, I've started sort of drawing up a list of plugins that I find really useful and I want to show people how I use them.
So, yeah, I've got a big list of ideas and I just sort of pick whichever one I feel like doing at the time, usually. So I know that Tim and you here are both Rubyists and hopefully I'm not boxing them in with that term, but how about you? Yeah, I'm a Rubyist too. Lately, I've been using JavaScript more.
Pretty much full-time, in fact. So, yeah, but I mean, one of the reasons I chose Vinc, I think it reels.vinc certainly had something to do that it's so useful when you're working on a Rails project. So. Yeah, I think interestingly, so I'm also in the same position.
I do a live Ruby, I write Ruby pretty much every day, but I spend a lot more time with JavaScript these days. And it seems like the ecosystem around Ruby, probably because of Tim, is a lot more robust. Like there's issues, like you delete a line in the JavaScript mode and it takes a second because there's some bug somewhere in one of the canonical JavaScript plugins. So, maybe JavaScript just needs a JavaScript Tim or maybe, but at the end of the day VIM is nice because it has all these plugins, but there's definitely differences in quality between things that are heavily maintained by a community of users and things that are, you know, if you like me, I use Ruby, I use Ruby, I use Ruby, I use JavaScript, I want it to work with VIM, so I make it work somehow, and that's not as good.
So, how much easier or more difficult is it to write a plugin for VIM as opposed to TextMate? If you're asking me, I don't know, I've never written a TextMate plugin. So, I can answer that actually. I think it is harder, but you can do more.
So, TextMate is basically, it's very, like, you may see this input output, you just do your thing, and you shell out essentially the programs, and it's your access to what's going on in the editor is very weak, but that limitation, I think, encourages creativity. So, people like work around it in creative ways, where VIM's plugins are extremely powerful, and you can even write them in Ruby if you want, and still have access to the editor context. So, you can do it in TextMate, but then you're, like, shelling out to a re-process, and, like, looking at environment variables, and VIM, like, gives you a runtime that is sensible, awesome, but because there's more things going on, it's, if you were all you ever did was TextMate plugins, you'll perhaps be a little lost, and I think the universe could use a, like, how to write a TextMate plugin tutorial that is better than what exists right now. Maybe I just haven't seen it, and it's awesome, that exists.
Are you guys VIM color, I guess, customizers, or, do you have a preference for it, your favorite syntax highlighting in VIM as opposed to your regular terminal? I use my own vidajalk, it's based on that vibranine for TextMate. So, Janice trips with Ira Black, which I like a lot mainly, because it, I think there's a few of them like this, but Ira Black does a good job of making it not look like you're in a TextMate with editor, and I actually like the fact that Janice makes it feel more, you know, more modern, but I saw there was some new theme that was posted on Hacker News that actually looked like it might be better, and I wanted to try it out and see if it's better. Is that Solarized?
Yes. Solarized. I need to try it out for a couple days and see if it's like, obviously bad or obviously better. You know what impressed me about Solarize was the fact that it kind of turned the theme sideways, where usually you pick your editor, you pick your product, and then you pick from themes that were available for that, right?
Where Solarize is kind of the opposite approach. It's all of these different programs bundled together in one theme. Yeah, and it seems like he's spent a lot of time thinking about the theory behind it, in ways that seem sensible to me when I read his books. So Drew Ryan baits over at Railcast.
I know his text mate theme got popular because he used it in his screencast. So what about them cast? Do you have your own? I've been using the Blackboard theme, which there's a few out there.
It was the theme that I used when I used text mate, and I just got used to it. So when I switched to him, I looked around, and I think there were a few ports out there. I picked one of them, and I've been customizing it for myself. I just use it because I like it.
And it looks, well, like I say, it was the one that I used in text mate. Although, lately, I mean, one of the things that people often say at conferences, when people put up code snippets in their slides, if they use a dark background, quite often, it's very, very difficult to read for the people in the audience. So I think it's really important to have a light theme, even if you don't like using a light theme from day to day, just to have a light theme that you know is there, and you know you can switch on if you're at a conference and you're live demoing something or something like that. So one of the light themes that I liked in text mate was called Mac Classic.
And I ported that one over to Vim. And in fact, I've tended to use that one more than Blackboard just because it was kind of, while something like that is a working progress, it's only you'll find yourself working on a file with a syntax that you don't use maybe day to day and realize this one really needs some attention. So if you're developing a color theme, it's really good to just use it all the time so that you become aware of the gaps. You know, when I'm coding, I prefer a dark theme as well, but I'm also writing a book, and when I'm writing a markdown, large chunks of text for the book, I really prefer a white background or a light background just because it's easier on the eyes when I'm doing non-coding work.
How about you when you're writing for Pride Frog? Yeah, I use a light theme as well. When I'm writing pages of text, I agree, it just feels a little better somewhere. One of the things that the chat behind, so when I said, he said, you know, when you're at doors reading a book, you've got white pages with black text.
In general, you don't go out and sit in direct sunlight. That's not only too bright and too much contrast. Normally you'll try and find a shady spot so that effectively it lowers the contrast, you end up with the shadow on the page, it's no longer pure white. So one of the principles behind Solarize is to lower that contrast to make it more like reading a book in the shade rather than in the right sunlight.
So in the last few days, I've switched to Solarize and I've been enjoying it. I like to look at this light yellow background which I find quite uplifting. There's a few things that they've done quite, I guess, you know, just a few gaps, but I guess they'll make me take it all the time. So I think you said something that sounded right to me that like personalized something that I've been thinking, which is I think it's easier to get good contrast in a dark color.
So when I'm writing code, it actually is important for me to see like that as a variable, that is a class, that is a method, right? That is a string. So I want something that enables me to have a lot of colors where on a light background, you get much better contrast. So it's good for like writing big blocks of text like writing a blog post or something, but it's much worse for writing code for me because there's only like a few colors.
You have to make the text dark, right? So then you're like dark red and dark blue and dark, whatever, right? But you can't really have a lot of different colors. And so it becomes less useful.
So I agree, and I also agree that at conferences because of the contrast issue, it is like way more important to be able to have your text be readable than to have it be like this is a string. It is a green. Any sprout core plug-ins for them? Someone actually just posted some emails about that.
There aren't. Again, to me, a higher priority than that would be making the JavaScript ones work, like there's massive indentation issues, there's some weird performance stuff, maybe related to JSLink, but I have doubts. Sprout core itself is very, there are the sorts of the same things that you can do with Rails, like I'm in a controller now, so I can do certain things, you can have snippets and all that. But there's enough pain in the VIN JavaScript experience right now that if I was gonna spend time on it, I would work on that.
But I think there has been enough interest in it that I think will probably happen, like specific sprout core stuff. One of the interesting things happening for, well, for all JavaScript development, not just in VIM, at the moment, you know, the guys at Mozilla are behind this, what's it called, JS CTAGS, which is, I think it runs on Node, or it runs on V8 through Node, and that allows, well, basically CTAGS has been around for a long time and it's got support for a lot of languages, but it's always been terrible at introspecting on JavaScript code, because the language is so free and there's so many ways you can define a function and add things to a name space. And JSC tags understands almost all of them, I think it passes most of the tests that I've thrown at it. So, yeah, I'm excited about seeing that, yeah.
I think the way you should think about JavaScript is that every large framework is based on language because there is no yet class API in JavaScript, so you actually want something that knows that sc.object.expend is a class, right? And you could just try to inspect, like JS.gov gets, tries to figure it out, but at the end of the day, in JS.gov, you have to say like scope, wah, because it doesn't know that that's a class, and it can only guess so much, right? So, the way I would think, I would want there to be a CTAGS or a Spark, or a CTAGS for Mood Tools, because you want something that is like, you're essentially building a language on top of it, it's like, look, right? It's like class, what's Rock, or Mood Tools, whatever.
So, you want something that is more than just like, I see a bunch of functions in their keys, so probably that's a class maybe. You want something that knows what's Rock, or is. So, we had Ilya Gregorik on the show recently, and told him that we're gonna be talking about them. So, he reminded me of his excellent site, VIMCOF.
So, wanted to throw it out there, and see if you guys have used VIMCOF, and maybe what your high scores are. Yeah, I've used it. I'm not very good at it, actually. I think it's an amazing site.
I haven't dipped into the source code to find out how he's done it, but it just kind of strikes me as magic the way you just fire it up, and it tracks all your keystrokes, and reports them back to his web services. It's really, it's great fun. And I've learned a lot from seeing the way other people tackle these problems. So, actually, sorry, Percy.
Yeah, I was just gonna say, just like, you know, code golf, you end up doing things that you would never do, ordinarily, and I think sometimes minimizing the number of keystrokes. I don't know, you have to think really hard about coming up with a good VIMCOF solution. Whereas I think in general, day to day usage, you just want your fingers to act on your thought, and for the thing to happen. And I don't really care if it takes five keystrokes instead of three.
It's more important for me that it's repeatable with a document, for example, or something like that. So, I've definitely got entertainment from it, and I've picked up a few tricks. But I think when you look at a solution that someone uses, it's very much kind of influenced by the golfing mindset of trying to minimize your keystrokes. It's probably not something you're doing in the real world.
Yeah, I sort of have the same approach to coding. I have so much available RAM before I start slopping in my brain, and trying to remember more than a few key combinations is not, doesn't work for me. It basically makes me a worse scooter. So, to the extent that I can get muscle memory, that's great, and that those things are very, very important, to the extent that I have to be like, how do I do that thing again?
That actually is worse for me than just like doing it long-hand. And I often will do things long-hand, or like getting to a pattern, like I use visual block mode a lot, because I know how to do it, right? I know how to use it. And even though I'm sure, like every time I do it, somebody's like, oh, you can actually just type in like this five keystrokes, and we'll do the whole thing you just did in 10.
And it doesn't, like I don't have space in my brain to remember all those things, which maybe this is why I don't think I'm as an expert, actually. And I also am not very good at them both. But I actually haven't looked at it in a while, and I see you added your ability to see other people's answers, which was not there in the initial release, which makes it more interesting to me in general. It's almost like a refactor, my code, but as you said, some of these solutions get a bit esoteric, but I guess as long as it's your own process, it's not that bad.
Sometimes less is not more when it comes to code, like in Ruby inline products, and things sometimes get a bit hard to read if you don't exactly know what's going on under the hood, but for keystrokes, I guess you're the only one consuming them. And I think in particular, I think it is probably the case that it's a very personal thing. I think people who are like, you should do, you know, you should use this code notion. I think different people have a different tolerance for memorization and also a different amount of utility from repetition.
So within it's nice, it gives you a lot of tools. It's very much like Ruby and not Python, it gives you like a million ways to do it. And I feel as long as you're productive in it, you're happy, it's good. Cause I should ask your favorite terminal that you're running down in.
I use the SH, but I use MacVam. I mean, not your shell, but using MacVam, you know, using a high-term or useful terminal. No, and I actually, so again, I think this makes me arrogant, but I like getting appless to save links. So I of course know how to do the other the right way, but I actually like, this is sort of an answer to the like 1960s browser thing, right?
I think MacVam actually solves a bunch of things that are kind of annoying.vam for day-to-day usage. And so I like it. And I tend to not just be like, oh, I guess I'm in the terminal. I can just type in Vam and I tend to want to use MacVam.
So that's actually a great point. I work with that Nathan Smith, the 960 grid system guy. And so one of the things that we were talking about and moving to them, because a couple of guys on the team are Vam guys. And he said, you know what, then what I do with my OCD command S twice on every, every time I want to reload and save the page.
So I guess we have an answer for him. MacVam. I figure there's like, I guess that there's the utility in memorizing or knowing that we're having a muscle memory of colon W, but I already have like 20 years of muscle memory on Apple S, and I really don't see the utility of unmemorizing that and memorizing a different thing for Vam specifically. Yeah, I would second that actually.
Exactly. I think Vam is very much set up. It encourages you, if you are creating your own mappings, it encourages you not to use modifier keys like the command key and the control key. But I think there's cases where it's much better to do that, particularly with the example of hitting command S twice and anything where you need to do something many times, I think it's much better to create a mapping that uses the modifier key.
When this brings to mind that I use actually is, you know, when you press J, it moves you down a line, and normally you expect it to move down a display line, but Vam always moves down by a numbered line. So if you have a long paragraph that wraps it's five lines long and it's wrapped and you press the J key, it'll move you down to the line below, rather than moving it down. So I'm not describing that well. We'll move you onto the blank line below the paragraph rather than moving onto the line of text below, the line of text below.
It's especially bad if you have, if you're like writing paragraph in text. Yeah, it's quite infuriating. And the Vam, it does have the option to let you move down by a display line rather than a numbered line, but you have to hit GJ. And I find that if I need to move down five lines, basically that's 10 keystrokes, it's GJ, GJ, GJ, GJ.
How many it's like doing a drum roll? And I find it really easy to accidentally hit GJ or, you know, it's just, it's really easy to mess up. And in that case, I've got it set up. So I just hold down command and hit J and it does the display lines rather than the numbered lines.
So that's one case where I think the Vam custom of always, always typing, typing something that sounds like a word rather than doing a modifier key mapping. I think that's one case where it's much better to the modifier key. Another one I use a lot is I, there's a port of the text made indenting and the indenting blocks of code thing. So instead of doing double right angle, you do command right bracket.
I can't say this out loud at all. That's horrible. But so I, for the first like two months I used Vam, I didn't know that and I was just using the angle brackets and I thought I'm good at it. Like I'm reasonable, especially once I went down period.
But it's actually not like, it's annoying that when you do that, you like to lose what was highlighted often you want to do something with it. And I just like how the text made one works better. And of course you can implement it in a minute. So I just, I use that a lot.
And yeah, I basically, I feel like the wrong case for modifier keys is when you're in certain mode. In a certain mode, modifier keys are just like craziness. But in move mode and like a sufficient walk mode is good. Tim, you have a favorite set of modifier keys or tricks?
I'm kind of a commotion in that regard. I've got a few. I mean, basically stuff I've learned since switching to a Mac. So like when I run my test I hit command R but I learned calling W about 10 years ago and it's so hardwired now.
Yeah, so that's actually what I mean. I think like, it's good for everyone to have their own muscle memory. I actually think it's bad for the Vam community to be like, I guess it's not really Vam community. It's bad for like people who are helping people learn Vam to be like, you have commandant calling about you.
That's how you have to do it. Or like, whatever the things are, I think it's better for people to learn their own path because everyone's different. Which makes me sound like hippie, but that's not really what I'm. Anyone who used to be i-mode for their terminal when they're just messing around the shell?
I can't stand the i-mode. Yeah, without, I mean, I don't get anything I like from them. I don't get a colon line. I can't colonize anything.
I can't even tell which mode I'm in, so. Yeah, the only thing is like I confused. So I learned all of the Emacs combos, not from Emacs but from Vash and so I'm like pretty used to them. But I'm losing my muscle memory from them because I use Vam so much now.
Where before, text made is like very Emacs-y in terms of key combinations. So it's sometimes weird. I've actually mapped those in insert mode and command line mode in my Vam. That's my habit, right?
I still have control being, control being, control actually. Those I use regularly in Vam. How would the world be different if the HH's original Rails screencast had been done in Vam? I think text made has a property of being like zero seconds to pick up, like Rails actually.
And I think Vam is like, we see a lot of adoption now because Rails is majoring. So I don't think that many people actually use Vam if there's two million Rails developers. I don't think any noticeable percentage of those people actually use Vam. But I think growing up and ensuring community of Rails were moving into more mature tools.
So Yuhuah is, has reputation comes from being on the core team of Rails and jQuery. And Tim, the outcry on Twitter when I put out the call for Vam guys was great with your screen name. I guess you may have Vam tattoo or something or maybe just your plug-ins that you have reputation. But I want to know, Drew, is does every Brit just automatically go into voiceover and screencast work?
I mean, how does your accent translate into street cred? It's been quite surprising to learn that people like my voice. I mean, just like everyone, I don't like my own voice. You know, when I hear it going back to me, I'm like, well, do I sound like that?
But yeah, it's quite strange for people, people seem to like my voice, which I guess is good. And I'm just trying to make the most of that by doing more screencasts. So I guess the reason I got into screencasting is because I love teaching. And it's a good way to reach an audience.
And I really enjoy it when there's something that's difficult and which, you know, you invest some time getting your head around it, communicating that to people who haven't invested that time, making it easier for them to reach that one's understanding. I get a real kick out of that. So I do it because I enjoy teaching. I think that's the main reason.
And Vam is such a, it's famously difficult to pick up. And so there's a lot of meat there for me to get into. So I'll put you guys on the spot real quick with a couple of closing questions. So first, any command line hacks or other tool chain tips that you'd like to share with our listeners as far as creating code?
One stupid, simple one that I was reminded of earlier. I don't like the I-Vinings in the command line, but you cannot bind. I think it's bound by default and bash, and I've bound it in Z-Show as well. Control-X, Control-E to open an editor to edit the command line.
So if I'm trying to do something a little fancier when editing, and I want to relate it here, I use that fairly regularly. So I actually find it somewhat surprising that Ruby minus E and associate, like Ruby minus P are not more commonly used. Half of why people use furloughs because of those things and maps like dutifully copied the exact API for girl. And so I am often typing things to Ruby minus E blah, blah, blah.
And I think I may be the only one. Like when I found out a minus key, which is like a printing thing, I was surprised. Like I've never heard of it, and I like ask people about it, and nobody knows about it either. So I would just say like if you're going to use graph and you're like, oh, I don't really know that API, you know Ruby's regular expressions in text, so just use Ruby minus E.
It's fine. It will work great. I've got one, not for the regular command line, but for Vims command line lately, I've been using more and more of the Control-R. It opens up the next key that you press.
It'll paste from the register of the key that you press. So I've been using this more and more lately. You can, in particular, if you do Control-R slash is the register that contains your last search pattern. And I'll be playing that really useful lately.
So the other one is Control-R, Control-W, will paste the word onto your cursor. I just really would have been enjoying that lately, so. Neat. One last question.
And this is really gonna put you on the spot. Who's your programming hero? So I think Max is underrated, or maybe not, maybe he's rated well. So there's a bunch of things that Max had wrote and was interviewed on circa 2003.
I keep meaning to put a blog post up that has a list of them. But Max, around that time, I've elucidated a lot of things about Ruby, and some of them are like, he says, like, optimizer, programmer, happiness, or four humans, or whatever. And I think it's like a catch-free now, people who know Ruby now know it, but he actually enumerated exactly what it means. And I've found the way he talks about it to be very useful for designing other things, for working on Rails or Spark or like, how should you think about the problem?
And I do think he's underrated. I guess I'll have to go with Linus Torvalds. I mean, he's changed my life twice over now, first with Linningson with Git. It's just, when did he start?
I don't know if I have a hero. It's okay to say no, the reason I start asking that question is because, it's just one of, our field changes so fast. And it's one of those things where baseball players and other occupations have someone to look up to, even from an early age. And computing is one of those things that sometimes you get into later in life, and you really don't have that role model as you come up through the ranks.
I think it's still plausible to like, have Carnegie and Ritchie as role models. People who are role models in the 60s are still very relevant. Well, thanks guys, appreciate the time. And I know that I'm continuing on my own personal discovery with them as a lot of the listeners are.
And so hopefully we're smarter for it. Thank you very much.