8 ms·
Show HN: Hardtime.nvim – break bad habits and master Vim motions
- alabhyajindal 1y agoVery cool!
- nickandbro 1y agoLove it! working on similar tool tips for my project: https://vimgolf.ai https://vimgolf.ai EDIT: thanks all for the feedback! Sorry there are not more levels, but if you check back in a week am adding a level editor!
- shlomo_z 1y agoThis looks cool. Is it free?
- nickandbro 1y agoThanks, it is, right now! And will have a generous free tier once finished. The only big reason I am making a priced option is for users who want AI tips to be able to have that option. Right now, I do that by having reasoning models like o3 solve the levels and then provide tips or verifying a level can be solved with certain motions.
- linnnus 1y agoI'm always hesitant about signing up for services. would be great if there was a demo that didn't require creating an account!
- nickandbro 1y agoPoint taken! Right now I am exploring a way where users can test the service on the landing page, without signing up.
- JLO64 1y agoI wouldn’t mind signing up without a demo if there was more information about what this is exactly.
- nickandbro 1y agoGreat feedback! Will role out a update with that information
- foob 1y agoI signed up to give it a try, but when I click "Go to Levels" it takes me to https://vimgolf.ai/levels https://vimgolf.ai/levels and I get a 404 error.
- horsellama 1y agosame but clicking on the hamburger menu it shows a link to “Motions”, which seems to be the first level/demo of the game
- nickandbro 1y agoSorry, yeah I am adding more levels, and will fix that! Thanks for testing!
- thdhhghgbhy 1y agoGreat work.
- unshavedyak 1y agoThis looks awesome! Wonder if something like this could be turned into a generalized optimization engine of sorts? Ie if the problem could be generalized for a set of available movement commands relative to used commands, you could apply it to any underlying platform. Which is to say, i'd love to see this in Helix. I also toy with custom editors, and observability of available commands is high priority for me, a generalized solution here would be an elegant solve for that. It would also adapt to new features nicely.
- qazxcvbnm 1y agoA somewhat more “complete” solution that doesn’t give you hints (thus doesn’t rely on the plugin support for all of vim’s vast functionalities), but conditions your instincts to get better: increase the latency of my whole terminal (c.f. https://unix.stackexchange.com/questions/778196/how-to-add-delay-to-my-terminal https://unix.stackexchange.com/questions/778196/how-to-add-d...) (also see the comment) by running my terminal session on a ssh session into my own machine through a ProxyCommand of the command delay.
- mercer 1y agosee I just run emacs to get the same effect
- marcyb5st 1y agoI use it and helped me greatly! Thanks a lot for putting this together. There are few minor things I don't agree as bad habits. For instance, Home/End should be allowed at least when you are in edit mode as they armonize with almost any other text input (not just editors, but also the text inputs/areas on websites).
- m4xshen 1y agoThank you! Home/End are actually allowed in Hardtime default config. I'm guessing that you are using AstroNvim since its community default config disables them: https://github.com/AstroNvim/astrocommunity/blob/main/lua/astrocommunity/workflow/hardtime-nvim/init.lua https://github.com/AstroNvim/astrocommunity/blob/main/lua/as...
- marcyb5st 1y agoCorrect! Thanks for pointing that out. I never investigated and just rolled with it :)
- darkwater 1y agoI'm totally going to install it, thank you very much for developing it!
- lylejantzi3rd 1y agoThis is awesome. This might be the thing that gets me to stop being a dinosaur and switch to neovim.
- perrygeo 1y agoDespite using vim and neovim for over 20 years, I'm still apparently a caveman when it comes to navigating. I both love and hate that this plugin calls me out for it. The "Hardtime Report" is a great feature, really shows just how pervasive my bad habits are. This could either help me improve - or force me to uninstall it in anger.
- blahgeek 1y agoI’ve been using vim for 10+ years. However I honestly don’t see the downside of repeating h or j to move up/down (with the key repeat delay adjusted to a small value). It’s more intuitive than using say 15j, which involves recognizing some number in the screen and then look at the keyboard to type because the upper number row cannot be easily touch typed
- ryanmcbride 1y agoI've pretty much always struggled with this too. I have a numpad that I can touchtype easily but if I'm taking my hands off homerow I may as well use a mouse at that point.
- fwip 1y agoHuh, I don't find the number row very difficult to touch type. But then again, I do have long fingers.
- rgoulter 1y agoIt's nice to have good tools that are practical for navigating around the text. For jumping around what's on screen, I think 'easymotion' ("jump anywhere on screen by pressing two characters") & variations are best in terms of how quickly they let you navigate for how easy it is to use.
- rybosome 1y agoAgreed. I wonder if this is somewhat revealing of the mental processes of the creators. To me, if my cursor is a few lines away from another line, the easiest way for me to get there is by either using h/j a few times, or looking at the absolute line number and doing that with gg. Relative jumps are only useful to me in macros. Calculating a relative jump myself would 100% pull me out of the flow state where I just want to go up/down a few rows. I have no proof of this, but I’d guess that the creator of this pattern didn’t feel the same way.
- skydhash 1y agoThe best tip I got, was to rely more on search instead of other kind of movement. Especially when doing a bunch of editing. Things like easymotion/sneak/avy works best when reading/reviewing. While I loved multi cursor with sublime. After I moved to Vim, I’ve never needed it. It’s either search~repeat or a macro. Now I’m using emacs, and it’s mostly occur-mode and macro. Grep edit is nice for bigger refactoring.
- yegle 1y agoI'm a bit disappointed that this can only be used with NeoVim yet it claims to help you master Vim. Sorry not meant to be a criticism. Maybe this is the last push for me to switch to using NeoVim.
- ilvez 1y agoI waited as well long time, but after switching my tooling and usage has improved a lot since lot of progressive community around modern tools that NVim supports. So I encourage to take a look. I still keep vim configuration around but I've never felt the need for going back.
- mystifyingpoi 1y agoI'm making my (probably) 4th attempt in migrating from regular Vim to NeoVim, and while it's better now, the learning curve is still steep as hell. Going the kickstart.nvim route this time and boy, half of the stuff there is pure magic. Honestly feels like reading Nix incantations. Dynamic nature of Lua makes it even harder. Thankfully ChatGPT is pretty good in generating configs.
- xeyownt 1y agoWhat's the difficulty to switch from Vim to Neovim? I switched few years ago, and the switch was instant. Afaik Neovim is fully backward compatible, unless maybe for some obscure features.
- grep_name 1y agoNot the parent, but I also tried to switch around two or three years ago and was very frustrated. The draw was the 'built-in LSP' with all these new features, along with treesitter. 'Built-in LSP' turned out to mean installing and configuring three pretty involved lua plugins at the time iirc. The experience really highlighted for me how un-seamless lua was in the project compared to vimscript. I found it to be a nightmare to configure and get used to. I came away wondering how it could possibly be such a pain, and baffled as to why it was claimed to be 'built-in' when getting ALE to work on vanilla vim took way less time, and felt way more in line with the rest of the program. Ironically it actually gave me an appreciation for vimscript that wasn't there before. Eventually issues continued to kind of build up for me until I decided to just cut it. Everywhere I encountered lua felt crufty and difficult to work with, and those integrations made the concise, tight vim I'd gotten used to feel really nebulous and unweildy. I never quite got the treesitter syntax highlight to work correctly, and even when it did work having the highlighting dynamically change while typing frustrated me. I ended up slowly switching back to my old vim-compatible plugins one by one, until eventually I just went back to vim, since a lot of the neovim features that diverged from the original design philosophy bugged me and since I'd developed a strong aversion to anything involving lua in the program I wasn't getting anything out of using neovim.
- avinassh 1y agoThis looks great! Is it compatible with lazyvim's installations? Because I could not get it working and I suspect it is conflicting with some other plugin
- SuperManifolds 1y agoBeen using this plugin for a while, really helped me kick a lot of bad habits. I enjoy how it lets you add custom rules. I really struggled to make myself use I and A, and kept doing ^i $i, so I told it to yell at me when I do that until I learned
- BrouteMinou 1y agoI always find it funny when people say to not repeat h-l, w-W keys for horizontal movement. No way I am starting to count how many characters there are in front of my cursor just to have the satisfaction of typing "31-l"... I am totally going to spam some 2w 3w llll until I reach the desired position.
- skydhash 1y agoI think it's more about getting used to f-F,t-T,A,I, and <semicolon> which can be quicker especially with code. You can also add easymotion or similar plugins for the powered version of those.
- WhyNotHugo 1y agoTIL! `f` looks really useful, thanks.
- roydivision 1y agoSome nice explanations of f and t: https://stackoverflow.com/questions/12495442/what-do-the-f-and-t-commands-do-in-vim https://stackoverflow.com/questions/12495442/what-do-the-f-a...
- brewmarche 1y agoI used to be a big fan of easymotion until I discovered that / is also a motion and that with inline search enabled you can use CTRL-G to cycle through results. Example: d / foo, first foo will be highlighted, use CTRL-G to select the next one if not correct (repeat if necessary; CTRL-T cycles backwards), ENTER to delete until highlighted section. Unfortunately CTRL-G is not implemented in IdeaVIM.
- nocman 1y agoWell over 20 years of vim use, and I had to look up what f/F and t/T do. I'm pretty sure I've seen them before years ago, but I never use them. It's always interesting what others find invaluable that I try out and think "meh" afterward.
- mystifyingpoi 1y ago
- lherron 1y agoRepo name checks out. Looks awesome, will not try!
- n8cpdx 1y agoThis is really cool, I would love something like this for the VS Code vim emulation. I’m constantly trying to improve my usage but bad habits are hard to break, especially when even the bad habits feel so productive compared to not having vim.
- WhyNotHugo 1y agoWhen I started using Vim many years ago, I mapped the arrow keys to no-op. This made the biggest difference, more than anything else. It forced me to use hjkl and never the arrow keys. Everything else is a bonus that comes by itself later.
- suprjami 1y agoThat's a good start, but then you develop the same anti-pattern like typing jjjjj to go down 5 lines instead of 5j That's what hardtime solves.
- mnurzia 1y agoThis was the neovim plugin that really caused me to stick with it. I've been using this plugin for over a year, after the (short) initial period of frustration with the delays I was able to start really flying with vim motions. Now I can't imagine going back to a regular text editor.
- AdieuToLogic 1y agoThe way I like to explain vim to people new to it is; start from "the inside out" on a QWERTY keyboard and assume most people are right-handed. By that, I mean the hjkl navigation keys are the first kind of navigation people want to do and are conveniently easily typed with the right hand in a traditional "home-row" position. Next, very common editing commands are associated with home-row keys associated with the left hand; asd, with finding a character on the current line associated with f (and F for finding backward). After those, other lesser used, but still very useful, commands are associated with the rows above and below the "home-row". Finally, repeating any of these is bound to prefixed numbers, which are of course two rows above the "home-row" on a QWERTY keyboard. Modifiers such as Shift, Ctrl, and others are approximately the same distance as the numeric row, unless one binds CapsLock to be Ctrl on most modern keyboards (note that Sun's keyboard got it right and had Ctrl in the position most keyboards now have CapsLock). Interestingly enough, learning vim can often times follow the above distances from hjkl with great result.
- xeyownt 1y agoInterestingly enough, many games on PC standardized the WASD keys for moving, which might be seen as "left-handed". However when touch-typing, there isn't really a difference between left and right hands.
- nosioptar 1y agoWASD is only lefty if you don't use the mouse. Otherwise, WASD really sucks when using a lefty mouse.
- AdieuToLogic 1y ago> Interestingly enough, many games on PC standardized the WASD keys for moving, which might be seen as "left-handed". To me, WASD for avatar movement makes sense even in the context of "right-handed bias" in that if a gamer is using a mouse, odds are they are right-handed and the mouse is positioned to the right of their keyboard. And if a gamer is left handed, it's a minor inconvenience to shift the chair position such that their right hand manipulates WASD and their dominant left hand uses a mouse on the left side of their keyboard. Of course, many modern games allow custom key bindings, so a left-handed gamer could use IJKL instead of WASD if they so chose.
- johnisgood 1y agoI love the fact that it provides hints for faster Vim motion, and you get a report of your most common bad habits. Is there anything like this for Vim?
- hualaka 1y agoI didn't even realize I had these bad habits.