9 ms·
Build muscle memory with your favorite editor
- chewxy 14y agoWow, this is actually fairly awesome. Works better than the vim cheatsheet I have hanging next to my monitor. That said, the site can be pretty confusing. What's the difference between practice and drill (other than slight interface difference?)
- alaithea 14y agoSeems like the drills count towards your accuracy scores, while practice does not.
- brey 14y agoIf you get something wrong, and what you type is longer than the expected answer, you end up failing the next couple of questions too. muscle memory - if you type eg "uptime" when the answer should be "free", it fails on the first character, but you're still typing, by which time it's on to the next question. which you then fail, because the answer to the next question isn't "ptime"
- nicholassmith 14y agoYeah I noticed this when I opened it and tried to cmd+t a new tab open at the same time.
- eric_bullington 14y agoYeah, this is a problem. Also, having some nice visual feedback when I get one right or wrong would be great. That said, this is an awesome service and I'm going to pay for the premium account just to support the effort. I'm in the process of switching from a tricked-out gedit along with nano to just using vim, so this is a wonderful resource. I'd highly recommend it to anyone trying to learn vim. In the course of just 10 minutes, I've already learned another 10 commands. Assuming I practice them another day or two, they'll become permanently part of my vim repertoire. EDIT: To clarify what exactly I'm using this service to do: I'm using it to eliminate the constant need to refer to a vim reference card. The muscle memory will come only from using these commands in vim, but being able to eliminate the need to constantly refer to a vim reference for new commands is a huge plus. I've already learned 10+ new commands that I no longer have to look up. PS - paid for the premium.
- deleted 14y ago[deleted]
- thekungfuman 14y agoNot only is this a beautiful and helpful web app, but it supports many different editors instead of taking part in the text editor wars.
- danso 14y agoThis is neat, but one thing it misses is the "reward." Not a gamification award, but the visual feedback from hitting a keyboard shortcut and seeing it actually happen, which helps reinforce the connection from muscle-action to program-action. Another important component is seeing the scenario. Seeing the words "Duplicate line" doesn't hit the same neurons as seeing the situation in the text-editor that toggles my brain to think, "I need to duplicate a line here". Obviously, none of these features are trivial to implement. Great work, though!
- mej10 14y agoIf it had "seeing the scenario", I would've immediately bought it and would have been willing to pay at least $15.
- jbigelow76 14y agoI agree that the visual correlation to the shortcuts is important. It's a very nicely designed and implemented idea, but I think I would need that visual component to warrant paying for it (the visual component would also justify a higher price for me as well.)
- dlikhten 14y agoFalse. Why gamify, I actually found this incredibly useful all in itself.
- deleted 14y ago[deleted]
- danso 14y agoYou misunderstood me. I said a reward, but not gamification. The reward when you complete a successful duplicate line shortcut is that you see a duplicate line. This helps associate result with muscle action. I'm arguing that this cements the memory even more.
- nicholassmith 14y agoThis is great, similar to the code drills posted a couple of days ago, pretty good way to get that crucial memory in place. Did drill, would drill again.
- vadman 14y agoI have to enable way too much stuff in NoScript to proceed when I actually click on an editor button. Giving permissions just to shortcutfoo is not enough. NoScript also shows airbrake.io, stripe.com, olark.com. I don't know what any of those are, so I'm not enabling them. So I cannot use your website, as cool as the premise sounds :/
- slig 14y agoYour loss, because it's awesome.
- dchuk 14y agoIn order: 1) exception tracking api 2) payment processing api 3) live, on-page chat tool noscript is cool and all, but those 3 above listed items are perfectly fine to permanently enable on all sites
- Ricapar 14y agoI would argue that #3 would be one I'd like to have blocked. I've never had a situation where those "Hey! Wanna chat with a salesperson!?" boxes isn't annoying.
- jlebar 14y agoI wonder if this actually teaches you the right kind of muscle memory. I have no difficulty with hjkl for navigating in Vim, but I had trouble associating those keys with the string "move <up/down/left/right> one character". Mapping from the description of the command to the key is not the kind of muscle memory I use all day.
- czzarr 14y agoeven though the project looks good, this is spot on.
- jlongster 14y agoAgreed, this is the strangest way to learn an editor. The whole point of pressing a command is to see what it actually does. Connecting that action to your muscle movements is what you want.
- zethraeus 14y agoAgreed. Perhaps a block of text/code with lines highlighted along with instructions on how/what to change them? That would give the right visual feedback and should be totally doable.
- JakeSc 14y agoYeah, it would be awesome to see prompts like: > Duplicate this line or > Move the cursor to the beginning of this line|
- humanfromearth 14y agoAgreed. Same problem here. Perhaps a visual display of what needs to be done would be a lot more useful. I have no clue of how this could be done though. At the same time if you want to build muscle memory, just use the damn editor and you get it eventually :)
- the_moon 14y agoOne thing I learned from this is that I don't know my directions. I was consistently hitting h for right and l for left.
- kecebongsoft 14y agoThis is great, I've seen a web game that you can use to practice vim schortcuts. But since this one's about building muscle memory, I don't see how this is going to be better than the actual use of the editor itself. Using the actual editor not only gives you the actual feeling but also challenge you with the real text editing tasks. CMIIW. But this is still useful if you just want to see a cheatsheet or not knowing certain shortcuts in the editor.
- BrixtonBoy 14y agoI think the point is that when starting out with a new text editor you aren't moving fast enough to use these shortcuts that often, so it's harder to internalize them. With this you just get rapid repetition, so that when it comes time to use them you have the command at the ready in your head. Of course I'm speaking from the point of view of someone just starting out using an editor. For someone that has already used any of these editors for any length of time this sit does seem kind of worthless.
- jvc26 14y agoBrilliant piece of work - nice one!
- thomasjoulin 14y agoThat's great, but you should accept all valid shortcuts. Move to beginning of line in XCode is ^A as well as ⌘←
- asifjamil 14y agoAnyone else experience out-of-whack CPU usage when loading up a tutorial?
- borplk 14y agoCan it be easily extended to add new editors? Perhaps you can let the users submit packages for their favourite editors...
- bdittmer 14y agoTry tapping ABACABB (the Mortal Combat blood code) on the homepage for some fun. Nice easter egg :)
- Groxx 14y agoI feel I must ask: do you try this on every website you come across, or do you check the source on every website you come across? Either way: thanks :D
- SuitAndThai 14y agoThis was on reddit a couple of days ago: http://www.reddit.com/r/programming/comments/wjyvw/shortcutfoocom_adds_blood_code_to_home_page/ http://www.reddit.com/r/programming/comments/wjyvw/shortcutf...
- bdittmer 14y agoI actually work with Watson, the creator :) So I cheated a little.
- tunnuz 14y agoMy vim doesn't get the ^ keypress :(
- sophacles 14y agoCool site, but a minor annoyance, is that some editors, like vim, have multiple ways of accomplishing a task. For instance move to line 4 can be done with 4G or 4gg, but only accepts 4G, which is frustrating as I've already internalized 4gg :) I'm sure there are others.
- johncoltrane 14y agoAdd :4<CR> to the list of possibilities.
- joshstrange 14y agoI like it however I am stuck on "Open last closed tab" for Sublime in chrome. Whenever I type it chrome opens the last closed tab....
- mej10 14y agoAnother issue for Emacs, C-n in Chrome opens up a new window.
- Ives 14y agoHmm, I seem to be having a font-related problem, both CTRL and ALT symbols show up as (empty) squares. I'm running Chrome 22.0.1201.0 dev-m on Win7.
- ElliotMingee 14y agoI'm a little surprised at the lack of Eclipse support, given Java is one of the most popular languages and Eclipse is the most popular Java IDE http://zeroturnaround.com/wp-content/uploads/2010/11/IDEs.png http://zeroturnaround.com/wp-content/uploads/2010/11/IDEs.pn...
- ereckers 14y agoIt's nice, but I'm not sure that's how my mind works when I'm working in VIM. I wonder how I'd react if I was put in an actual document and then prompted somehow to do the same exercises.
- viggity 14y agoIf you want better shortcut muscle memory, just unplug your mouse for a couple days. Do this once a year or so. You can thank me later.
- bangbang 14y agoIn OSX, are all dialogue boxes able to be accessed by the keyboard?
- bashzor 14y agoNot sure about OSX, but in Windows you can. This is a huge miss in Linux I find (all distributions I've tried so far), you need the mouse to get anything done without resorting to a terminal.
- jasonwebster 14y agoYes, but you have to enable it. It's not on by default. System Preferences -> Keyboard -> Keyboard Shortcuts And change the radio at the bottom to "All controls" under Full Keyboard Access.
- JadeNB 14y agoTo get to System Preferences, you can use CTRL-F2 to get to the Apple menu, CTRL-F3 to get to the Dock, or—if those shortcuts aren't set up (but I think that they are by default)—CMD-TAB to get to Finder, CMD-A to get to the Applications folder, and type a few letters to get to 'System Preferences.app'. :-) In the System Preferences window, you can start typing to select 'Keyboard' (keyboard focus is in the Spotlight menulet). You can tab to the 'Keyboard' / 'Keyboard Shortcuts' tab bar, then arrow over to 'Keyboard Shortcuts', then tab to the 'Full Keyboard Access' radio buttons. Sadly, these last few steps require that Full Keyboard Access already be turned on! The text below the radio buttons says that you can toggle the setting with CTRL-F7, but that doesn't work for me; I'm not sure if some other keybinding is interfering.
- m4rkuskk 14y ago
- gcv 14y agoNeat. But I have Emacs configured to use the command key as Meta, so this needs to be configurable in the drills.
- danielweber 14y agoI've also used too many terminals that didn't pass through Meta that I often use Escape instead. That didn't work.
- durga 14y agoAwesome! Been subconsciously looking for something like this for ages..
- jasonkolb 14y agoNo Eclipse? :( There goes a large chunk of users. You'd think this would be one of the first editors to have made the short list.
- username3 14y agoSome keys are confusing to read under the pulsing cursor. | overlaps b, k, h. e.g., h look like n. Add a shortcut key for Start Drill!
- evjan 14y agoWow, this is great!
- domodomo 14y agoHad this idea too, glad someone has executed on it so awesomely. I've been eager to get better at Sublime Text, so will start using this. Two suggestions which I think would be really awesome. !. The hard part of exercising though is getting your butt to the gym. What if you could sign up for a daily email that keeps you at it, challenging you to take it to the next level, tracks your progress, sets goals and reminds you to make them, etc. 2. It's really abstract to just hit key commands without seeing them actually do something. What if you made small animated gifs for each action your are emulating, maybe even with a full fake editor background? This way, your brain would be tricked further that you are actually performing the action represented by the keyboard shortcut.
- gruseom 14y agoThis is neat and promising. I agree with other commenters that the weakness is in telling the user what to do in the form of text like "Move cursor to beginning of line". Routing the muscle signals through text processing in the brain is slow and isn't what goes on when you actually use an editor. i.e., there's no text in a marquee in one's head telling one what one needs to do next. Since keyboard shortcuts are all about habit and speed, you definitely don't want to require any atypical or slow mental processes. For cursor movement you could show a buffer of text with some kind of target thingy that moves around, and you have to chase it using keyboard commands. That might be fun. It would also be simple to create an efficiency score based on how many commands the user used to get where they wanted to go. For text manipulation you could provide some auxiliary visual indicator of what needs doing. For example, to practice deletion, have a buffer of text and some visual indicator of a character, word, or line that needs deleting. Say it flashes (probably a bad choice, but whatever). Then the user's job is to use the right shortcut to delete the flashing thing. At first, the software could move the cursor to the right place before each new command. For more advanced users, you could tell them "First move the cursor to the right place and then invoke the right command to delete the flashing thing". As soon as they delete one bit, another bit starts flashing. You could measure how long it takes to delete everything in the buffer this way. That might be fun too.
- mck- 14y agoSee http://vimgolf.com/ http://vimgolf.com/ One for Emacs would be fun
- gruseom 14y agoThat looks fun, but also intimidating. It makes me think that maybe tracking efficiency is a bad idea for learning after all. To stop and think about whether one's doing X in the most efficient way stymies flow. Come to think of it, in Emacs I often do things inefficiently – in the sense of using many more commands than the technical minimum to do a task – because the basic commands are already "compiled" in my head. If I have to stop and grope for a less familiar command that could do the job more directly, that's like switching to interpreter mode, which is much slower. So in the short run, it can be more efficient in time to be less efficient with commands. This is the chicken-and-egg problem where one doesn't invest the effort to acquire new tricks because one's too busy doing one's job with the tricks one already knows. The goal is to get more tricks into the compiled set (muscle memory) more easily. I suspect this is a "don't make me think" kind of challenge. One has a limited budget of thinking energy and typically needs to spend it on more important things, so one doesn't have anything left to invest in getting better at Emacs or whatever, even though one knows one "should". The challenge is how to move this kind of knowledge into muscle memory using some cheaper pool of energy. This is probably a solvable problem because the commands we're talking about are so mechanical. They don't need to go through the most expensive cognitive process; our goal is to forget them on that level anyway. But I haven't seen any teaching tool with a low enough cost in this sense. The OP comes the closest, which is already impressive. And if you can learn editor commands this way, there probably are a lot of other useful things you can learn this way.
- johncoltrane 14y agoWell executed. `dw` is not "delete word", though.
- BHSPitMonkey 14y agoIt would be nice if the prompts at the end of sections could be easily keyboard-activated. (For instance, the "Start Drill" button that I have to take my hands off the keyboard to click.)
- wowzer 14y agoI really liked this. Unfortunately emacs bindings are the same as browser bindings so I kept killing my browser session and or browser tab.
- Xavura 14y agoAm I the only one that can't get this to work? First the legend shows a few of the keys as ⌥. Then, say for Sublime to cut a line it's ctrl+shift+k. It shows K. So I try hitting ctrl then shift - nothing. I try typing ctrl then shift - wrong. I try entering a caret (^) for ctrl - wrong. Just what are you supposed to do?
- coleifer 14y agoIn the absence of textual context its hard to find these drills helpful
- 5teev 14y agoNo BBEdit. sigh
- SoftwareMaven 14y agoThis really didn't work for me. I found needing to parse the command ("Move backward a word") broke the memory that I have built up over 15 years of using Emacs. Instead of naturally moving backwards with a flick of the fingers, I had to concentrate on where each finger was and on the key I was pressing. I think the goal of this is great, but as it stands, I'm not convinced it is going to help. Given it aborted my natural wiring, I doubt it will be wiring things up correctly for people who don't have the wiring (I could be VERY wrong here!). Now, take @gruseom's idea of a visual "goal" that you are chasing, and I think this could be intensely valuable.
- gosub 14y agoIt could show a typo where it wants you to move, like: Hood news, everyone!_ [Ctrl-A]
- varikin 14y agoI agree. When I use vim, I just know the key to press to move around. I don't think "move to the next word -> w". I know I want to move the cursor and my fingers know where to be but not really what key I am pressing.
- alttab 14y agoSounds like you are already there then. This gets you back into the cognition of it all which you aren't used to because you don't have to think about it. Its probably more helpful for people with less experience. I too find myself getting confused when reading about VIM because I don't think about it that much.
- commandar 14y agoJust to contrast, as somebody that's a novice-to-intermediate vim user, I really like this so far. The action verb model feels like it mirrors how I think when using vim, so at first blush, for me at least, it feels like a good fit. I don't know enough about Emacs to compare there, though.
- 14y ago
- afterburner 14y agoI feel like this is the equivalent of obsessing too much about going to the gym. What about good old "on the job training"? The shortcuts you need, you will eventually internalize... instead of using up time on an exercise like this. I mean, it might give some benefit, but is it worth the mindlessness?
- Hilyin 14y agoI found it confusing because it was using capital letters when shift wasn't implied. So I'd hit shift to capitalize like it displayed and it'd be wrong.
- Jakob 14y agoTextmate: ⌘-[ for shifting left is "History > Back" in Safari and happens every time when it's the last shortcut in drill mode, which happened to me both times I tried. Otherwise nice tool. I agree with the others about visual feedback. For Photoshop: Show the part of the palette you want instead of the name of the tool.
- suby 14y agoSeems rather pointless. If a command is useful, you'll get muscle memory from actually using it.
- pacomerh 14y agoThis is a fun project. But I'm not sure about the 5 bucks. Seems like it's begging to be rich too soon. This app is just revealing information you already have on a cheat-sheet.
- nicpottier 14y agoNeat.. kinda fun. One thing is you might want to allow people to configure the META key. I have Emacs set up so that the Command key is META, so all my muscle memory is ruined when trying to run through the drills. But I like the concept and might use it to increase my shortcut kung-fu.
- watterssn 14y agoCommand key now works as META for Emacs. Thanks for the suggestion!
- lee 14y agoThat's really fun. I love the site design, very slick. Found a "bug". Some of the keyboard shortcuts conflict with my browser shortcuts. For example, in one of the emacs drills, to move down a line (ctrl + n) it causes chrome to open a new window... so I could never complete the drill because of this.
- jay_kyburz 14y agoWhat I found missing in this is _why_ I would want to jump to a matching bracket, or insert a line before. Perhaps the game should be to transform one block of code into something different in as few keystrokes as possible. I would love to see videos of people using commands that are not a part of my current vocabulary.
- pyrhho 14y ago> Perhaps the game should be to transform one block of code into something different in as few keystrokes as possible. Related, http://vimgolf.com/ http://vimgolf.com/ but vim-specific..
- gingerlime 14y agoNice. Is there more info about how you wrote it? Which platform is this running on? Which tools you're using etc?
- thread79 14y agoI thought this was a great idea. But I simply am an idiot and can't figure out how to use it. They tell you to type these || characters and it always spits back a fail when I try it. They need more user testing feedback.
- watterssn 14y agoWow. Nothing like waking up on Monday morning to find your app at the top of Hacker News. Thanks to whoever posted this :) This is awesome feedback. It looks like the most requested feature right now is moving from reading words to a more visual representation of what's happening. This is definitely something I've thought about - but didn't want to attempt until I received exactly this type of response. Thanks! I'll definitely move this up as a top priority and hopefully have something implemented soon. Thanks for everyone else's feedback. I'll carefully read each post and email I've received and respond appropriately. Someone asked about the tech stack: backbone.js + sinatra + mongodb hosted on heroku (2 dynos). I'll try and get a blog post up with more on this plus possibly a HN postmortem if there is interest. ps. I'll get eclipse added as well :)
- bostonvaulter2 14y agoCan you send an email when/if you implement that? I think there are lots of people that would be more willing to buy it if you have that.
- rpicard 14y agoYou can also enter command mode in Vim with ^[. I spent a few minutes trying to figure out how to give you this feedback before I saw your comment here. Maybe you should list an email address or have a contact form somewhere on the site. The only thing I found was a Twitter account, and I'm not on Twitter.
- calydon 14y agoA great idea. Ctrl-shift-T is the key for repeating duplication in Photoshop, but it's also the shortcut for create the most recent tab in Chrome, so it's impossible to enter it unless you change your browser settings, which I'm not sure I want to do.
- samspot 14y agoMy pinky hurts after using this for sublime for a few minutes, and I'm getting emacs flashbacks!
- bostonvaulter2 14y agoI think a cross between this and vimgolf would be really good. Basically where you just get things you need to do like changing the paragraph formatting and you just implement them to help you get in a state of flow with your editor.
- aneth4 14y agoLove the concept, however this is much like learning a language by learning to translate. 求 -> ball -> O (actual ball) vs 求 -> O (actual ball) Classic study vs immersion. The implementation will be much harder, but for this to be effective show the manipulation, not the description.
- wim 14y agoThis looks cool. Maybe you can consider a similar format to learn languages (e.g. memorize words or grammar rules?)
- dbalatero 14y agoI only use vim, and from using this site for 3 minutes there's clearly plenty of knowledge that I'm missing. I really wish that it would teach me the commands it was drilling me on, and not just expect me to know the key strokes. I know I can pull up the shortcuts reference, but I feel like it should train and hint, then drill.