I know it’s silly, but Vim is single-handedly responsible for people thinking I “code fast” in interviews. I always chuckle when someone notes how fast I can manipulate code and I think about the learning-wall I hit when first picking up Vim.
I have to be honest, seeing some content on YouTube and noticing some folks presumably putting things on the screen in the same speed as they were thinking is what got me into it.
I've had a TREMENDOUSLY DIFFICULT time getting fully up and running with it in terms of workflow, but the text navigation alone has absolutely made me code not necessarily faster, but in a MUCH more enjoyable way. After a while it became difficult to imagine navigating a piece of code without some of VIM's core ideas, even if in my case it is down to mostly the feature-set related to easily navigating a file.
Alas, for me then the VScode-Vim extension is doing the trick, but since you mentioned the learning wall, curious if you know any resources or can suggest a path to move past it nowadays.
Definitely agree about the enjoyable part. I don’t necessarily think vim has made me more efficient than normal keyboard+mouse, but I definitely find text editing a lot more enjoyable. It makes a really big difference in my state of mind during the day.
- Disabling my arrow key bindings and unplugging my mouse for a week (as part of a combined vim/i3/vimiuim learning experience/experiment)
- Playing Vim Adventures, a puzzle game based on Vim's controls
The three days of godawful productivity has paid off a thousandfold- especially when I later became temporarily disabled (broken bones in both arms) and couldn't use a mouse for a while.
Is the vim-vscode extension good? I love vim on the terminal but I tried thr extension once and felt like I was trying to shovel one system into another system. Maybe I was just doing it wrong...?
Note that I haven’t used it in two years, but this is the same problem I had with the extension and experimenting with things like evil mode in emacs. There was also a problem where VSCode would update and the vim extension would break or get laggy until the extension devs caught up. It may be better now, but both experiences drove home the fact the I really just felt more comfortable in vim.
I can't speak to the more advanced stuff and feature set, but if all you are looking for is some of the keyboard-based navigation, registers, marks, etc., it seems to do these quite well (in my case, at least)
Could you share some of the videos? I’m getting better at Vim but maybe some videos showing “whats possible” would be great to focus some of my learning.
If you take the time to invest in building a rock solid foundation, it looks like nothing's happening for a long time. Critics complain. "Why aren't they doing anything?" "This is taking too long." "We're paying you to build a skyscraper, not dig a hole!"
Then suddenly, a skyscraper shoots up in what seems like no time at all.
Too many people want the penthouse without committing the required time to dig deep into the Earth and pour a solid foundation.
Or I can code to within 95% of the speed of a Vim expert in any other editor and my skills are transferrable to almost any platform. And, as is always mentioned and then always brushed off by the Vim avout, code manipulation/editing is almost never the bottleneck for anything but the most trivial of problems.
Since we’re not typists, of course the speed of text input is not the bottleneck, but thinking, getting motivated, etc.
But that’s not what Vim is (only) about. Editing text with Vim a pleasurable experience unlike any other. See the parent’s comment on that as well.
It is, however, the steepest wall I’ve had to climb usability wise. Probably akin to Blender, where everything is different from what you would expect at first, but, hopefully, for a good reason.
People use vim for purposes other than code editing. Being able to think about a document in terms of it's logical structure is often beneficial, may that be the structure of a sentence in prose or fields of a record in a CSV file.
If you are only developing software, vim isn't the best program for the job. By default, it is missing important features of an IDE. Customizing it to fill those gaps is difficult. Yet if you're working of different types of text files, the skills that you learn in one domain are transferrable to another domain. If you are proficient at editing documentation and data files in vim, you're probably going to prefer it for editing code since you are building upon pre-existing skills.
It's not all about speed. Vim keybindings match more closely to how I reason about code(such as replacing text within brackets. Using a mouse is a distraction from cognitive flow.
I spend most of my time in JetBrains' IDEs and never have to use the mouse, it's fully keyboard-driven. While there's no direct alternative to ci(, you can select everything inside the brackets with a single key press and then start typing. Unlike text editors (like vim), it actually understands your code and lets you operate on the underlying AST (for example, you can move code blocks, expressions, or whole functions around with a single key combo). So for me vim seems like a downgrade.
> It's just simple arithmetic. If you spend more time hammering out code, then in order to keep up, you need to spend less time doing something else.
> But when it comes to programming, there are only so many things you can sacrifice! You can cut down on your documentation. You can cut down on commenting your code. You can cut down on email conversations and participation in online discussions, preferring group discussions and hallway conversations.
A great snippet of a Yegge article from 2008. I don't even use Vim, but your mindset seems pretty toxic and it's unlikely that your 95% is actually 95% when all of the sacrifices you have to make are taken into account.
I've only used vim for three years and it's been a fantastic experience. Every time I'm in a normal editor I long for vim. I think the most important video I watched about vim was about text completion in a thoughtbot meetup [0]. There I learned about ctags, the jumplist and ways to complete words, sentences, lines and blocks of code.
The thoughtbot series on vim is great. I'm really glad I found this video early in my Vim career. I've got a very minimal vimrc as a result and just try to lean into the vim builtins
Just tell yourself that vim is really actually vi wearing a snazzy new hat, and that you’re the spring chicken in a romance with a distinguished yet energetic 45 year old partner.
You........ You just took my weird feelings about this to an extreme new level....... Guess it's gonna be another night of contemplating my life choices, huh.
I’ve never understood that argument. That’s like saying you prefer to walk everywhere because your car (which you already own) might not always have a full tank of gas.
Much of the reason Vi(m) is still in use today is because it’s guaranteed to be on pretty much any *nix box. When it’s 3AM and you’re trying to rewrite /etc/lstab from scratch and the network won’t come up… there’s no way you’re installing emacs or nano.
It’s just habit at this point. eMacs, vim, nano, etc was not allowed to be installed on so many systems I’ve used, and not having permissions to install them, I just stick with vi and the muscle memory I have for its keybindings.
Honestly, ex mode would be such a good idea … if it didn’t clear the entire goddamn screen when it started up! The whole point of using a line editor is that it shouldn’t take up the entire screen.
OK, today is the day I donate to the children in Uganda. If I'd donated a penny every time I'd seen the vim splash screen, I'd have probably donated tens of thousands of dollars by now.
Doing less work on Xcode and working more on servers made me appreciate vim alot!
I don't use any plugins (tried it back then with neovim and found the editor itself slow to load) and make me memorize folder structure a whole lot more since I'm using tmux alongside it.
I love the fact that I can hop on any system that has vim and I'm ready to go.
I’m grateful to Vim because it taught me that I can write plain text. Previously, I was under the assumption that I need to create a Word or Google Doc. I wonder how many others are in the same situation I was in…
I never thought about this until you mentioned it but my love for markdown only came after I learned vim.
Vim is easily my most used application; I use it for my task list, to write notes when learning new topics and even to journal my personal thoughts.
Prior to this I used applications like evernote, google keep, google docs etc. I think the only advantage of those tools had was easy sync notes between devices but I solved that with syncthing[0].
I was opposite with Markdown—I started using it with Obsidian, then fell in love with vim. Now I love Markdown even more and use vimwiki instead of Obsidian.
I've been looking for a Personal Knowledge Base (?) for a while and have started using Obsidian. I love the idea of the tags, backlinks, and Graph view but the editor itself leaves much to be desired (besides the fact that it's not vi(m)); whoever came up with the default color scheme (medium/light grey on dark grey) needs to be shot.
So how do they compare? If I can do everything I want with vim(wiki) I won't bother with Obsidian.
I hear that VSCode is going to incorporate backlinks and will be a better Obsidian than Obsidian is.
Initially, I used vim emulation within Obsidian, but later realized that I didn’t need to know about backlinks very often—I just wanted a simple wiki, so I started using vimwiki. The main downside for me is that you can’t (to my knowledge) use folders without changing links ([[folder/note]] instead of [[note]] in Obsidian), so all my notes are in one directory with no subdirectories. I also don’t think renaming files in vimwiki updates links in other files like in Obsidian. Because I prioritize using my own vim config over many of the features in Obsidian, I use vimwiki. Whenever I need something that Obsidian can do that vimwiki can’t, I just open Obsidian. I love owning my notes in plaintext :)
Well it occurred to me after reading this thread that I could edit my Obsidian vault via vim. Of course, that's only for basic text editing capabilities everything else has to happen inside Obsidian.
I was a dvorak user for years, and the standard vim key-bindings were not a problem. I mean, j and k are still right next to each other, and h is still to the left of l. Most of the other commands are mnemonic like (i)nsert (d)elete, so the location of the key relative to others isn't all that important. I always use both left and right control keys, so no chord is a stretch.
(like many people, I went back to QWERTY because I was losing QWERTY speed and was tired of looking like an idiot when using other people's computers. But sometimes I turn dvorak back on for fun and I'm surprised how I still have muscle memory for common words, even after years.)
Can't say that I'm using Vim effectively, but at least the basic keys are fine.
Basic movement keys are split into two hands. J / K (up & down) are still next to each other and are operated with the left hand. H / L (left & right) are still close together and are operated with the right hand. It actually feels better to use and easier to remember than the one-row arrow cluster on QWERTY.
W / B (to next word & to previous word) are close together and are operated by the right hand. I actually use W B much more than H L and it feels great.
Y / P (copy & paste) are next to each other which is great.
Ctrl B / F (page up & down) are a bit counter intuitive because of the position (page up is below page down). Ctrl U / D (half page up & down) are fine.
A I O (various ways to enter insert mode) are clustered into left hand home row. S C R (various ways to replace text) are clustered into right hand.
I started using vim about 5 years ago, and switched to Dvorak 2 years ago. It was painful at first, but so was everything with Dvorak. The muscle memory takes over eventually and now it’s very comfortable. The only thing I still occasionally use QWERTY for is games.
I never bothered to learn HJKL navigation since I nearly simultaneously started using Dvorak, Vim and DreymaR's incredible Extend layer. The Extend layer is a software XKB mapping where holding Caps Lock lets me use arrow keys, Home/End, Backspace/Delete, PgUp/PgDown etc. Directly from my home row position. It is responsible for tripling my editing efficiency as it lets me make instant corrections and jumps anywhere.
Been using both vim and dvorak for nigh on 20 years now (started learning both in university), and have zero problems with the default keymappings, including hjkl navigation--once it becomes muscle memory you can get used to anything.
I use neo2. The keys for hjkl are totally scattered and left and right switched. Still, working in qwerty or without vimbindings seems like hell. Keep at it, it will become muscle memory.
if you avoid the hjkl thing all the other keys are mnemonic for the most part... if you are on mac os you can remap caps-hjkl(well the dvorak equivalent if it doesn't mess up) to arrow keys system wide and get that
Vim is what got me into using terminal emulators, the shell, and linux. I started trying to use it because a mentor of mine said "it makes coding fun again." It's the reason I moved from Windows to WSL, and from WSL to Linux. It's the reason why I started learning about core utils. When using vim, it feels natural (and even inevitable) to use the shell and cli tools.
Happy birthday, Vim! Thanks to everyone who has worked on that project.
I've used vim for a while now, although not a power user I'm certainly capable. One of my favorite experiences with vim was remote pairing about a decade ago with another developer. He lived a couple of states over, and we paired by sshing into the other person's machine and using vim on a byobu session. It was also fun because both of us had different habits using vim and got to learn some stuff from each other.
It's pretty amazing that vim has remained relevant for that long, outliving so many other editors. On top of that, it continues to evolve. Even in the ~5 years that I've used it, huge progress has been made. The fact that coc.nvim works so well, even in vanilla vim, is crazy.
One of the best things about PyCharm and friends is the vim bindings. They are much closer to actual vim than other IDE plugins. This is the main reason reason I made the switch to using an IDE for Python development.
It's a plug for my vi quickstart tutorial that I first wrote for two Windows sysadmin friends of mine. They had been asked to additionally manage a few Unix boxes, and had asked me to make a small tutorial that could help them quickly learn enough vi to get by on Unix.
After using it, they told me it was helpful for that purpose.
Still rocking vim since 1997 and love it. But old age's getting to me and I'm now finding myself reaching for either Visual Studio or JetBrains CLion for my coding more and more these days.
I first started using vi in late 80's at the university on a shared multics mainframe. Then I stopped using vi after graduating, only to pick Vim in 2012. How times have changed, running vi from a dumb vt100 terminal to now running vim on a pc with nearly infinite processing power, with gobs of cores, memory, and storage that was considered unimaginable in the 80's.
Vi and vim has truly stood the test of time (along with C, emacs, Linux, etc)
I'm glad that this post led to the group of you all that took the opportunity to donate! Didn't think it would get that much traction, so it's especially nice to see some good come from it.
Been working with vim for 2 or 3 years. Now, when I don’t have it on any kind of text entry fields I get a bit disappointed. Happy birthday you revolutionary odyssey.
Changed my life when I accidentally typed :qa instead of :qall and it still quit all my buffers. As stupid (and short) as it sounds, it feels much more fluent and of course I learned that abbreviations worked! I love vim!
I dated a girl called "Vi" last year (pronounced "Vee"). I explained why I thought her name was a bit amusing and ended up showing her Vim. She thought I was bonkers: "why don't you use your computer like a normal person?!" She was funny; too bad things didn't work out.
i started using dtach so i could abandon tmux & use vim as my outtermost multiplexer, as my container.
one of the only things i havent dug into is how to leave a :term open without keeping a window open. this is more porblematic because im not a vim tabs user. so i end up with a bunch of super mini-sized splits eith a couple random terminals.
but in general- never going back. the way on is through. these other tools just murky it up, vim is better.
switching threads, recently reflected on my lifelong idlings of perhaps getting a debian tattoo. still has great appeal. but even now feels like debianistas are pretty closed ranks. that the boundary between insider & outsider is very high. & that don't jive well.