> how do I keep myself from forgetting that I'm in a vim editor
I think actually using vim would help...
Edit: Sorry, that's a bit snarky. All I can say is that vim proficiency comes from muscle memory. Once you adopt vim and feel the "vim flow," it's really quite painful/distracting to use a modeless editor.
It's to the point where I was doing a phone interview recently where they had me code in a live editor. Because I'm so used to vim I had a really hard time just writing the code without a bunch of random-looking keystrokes. Fortunately the person on the other end recognized them as vim commands, but it was still distracting.
My goal is to become more efficient at editing files, the typing/changing/refactoring part especially. I don't want a new way of opening/saving/handling files, search/replace, version control or debugging - it would just be too much to learn all at once.
So I thought Vintageous would be a great opportunity for me to learn the text editing part of vim without burning down my ecosystem. You're right, it's probably part of what leads to my confusion. Still, I thought I'd ask, maybe someone took the same route and managed it somehow.
If you don't mind me being frank, it's really not that much to learn.
Opening? :e [filename]
Saving? :w [filename]
Handling? be more specific?
Search? /term<CR>
Find next: n
Find previous: N
Find word under cursor: *
Replace all instances? :%s/term to find/new term/g
Replace all instances on line: :s/term to find/new term/g
Replace first instance on line: :s/term to find/new term
Version control? Why do you want version control in your editor? Either way, take a look at fugitive if you must, but using the command line is better...
All of that's starting in command mode, of course.
Finally, take a look at the vim videos on http://destroyallsoftware.com - they're what got me to say "yeah, I need to spend some time on this..."
Vim's been my main text editor for a while now, but I think it's misleading to suggest a shallow/gentle learning curve.
It's not the sheer amount of stuff to learn so much as it is that you have to know a lot of it at once and then get it in muscle memory in order to not break flow while you're trying to do even simple things.
It's been over 20 years since I first picked up vi. I still remember that I was murderously angry at whoever had invented it for the first month or two. It was only after that period of suffering that I found I rather liked it.
For each of these actions there's not much to learn, but it piles up, and my whole development process grinds to a halt if I have to look up yet another thing.
With handling I meant stuff like syntax coloring, tab completion, tabbed views, side-by-side views, line lengths that adapt to the Terminal windows' width - the small things.
Thanks for the list of commands, maybe it'll push me over the edge to do the right thing. Destroy All Software looks interesting, but that's quite a lot of money.
Oh wow, he really changed his pricing model. It used to be a $10/mo subscription w/ access to all videos. Sorry about that!
> maybe it'll push me over the edge to do the right thing
Oh, there's no "right thing" here, there's just efficient and inefficient. Don't let some asshole like me tell you "you're doing it wrong!"
I hear you on the frustrating process breakdown during the learning curve. However, if you want to learn it I promise that it's much quicker to go the painful route and just dive in. Start off with just the basics, then every time something feels repetitive, go look it up. When you go to look something up, start with the internal help system, then move on to Google. Do ":help help" to learn how to use the help system.
For me it took about a day before I wasn't stopping every 5-10 minutes to look something up, a week before I wasn't stopping every hour, and I still run into stuff every couple of days where I say to myself "okay, this is too repetitive, what's the magic vim way?"
Something that also helped me - if you want to be fast, remember that the slowest thing you can do is read. So in terms of movements, it's bad to just keep tapping 'j/k' until you see what you want. That's like the O(n) approach. Then there's search with an incomplete key. That's like O(logN). But then there's search with a good key that you know will hit what you want first try - that's O(1). Then there's the command-t plugin and/or the :vim command...
Also, either get used to using ctrl-c instead of ESC, or remap your capslock key to ESC. I prefer the latter. Not sure how to do it on Windows, but on Linux see xmodmap, and on OS X see PCKeyboardHack.
Syntax highlighting/indenting: add the following to ~/.vimrc
filetype on
filetype plugin on
filetype indent on
syntax on
Tabs - see :help tabpage.txt, though I prefer windows (see below).
Completion's a bit weird in vim, but for starters there's always ctrl-n/ctrl-p in edit mode. For more advanced stuff, see Omni completion: http://vim.wikia.com/wiki/VimTip1591
For side-by-side split views, check out :help windows. Ctrl-w, n creates a new horizontally-split window; Ctrl-w, v creates a new vertically split window; Ctrl-w, c closes the current window; Ctrl-w, j/k/h/l switches to the next window up/down/left/right; Ctrl-w, J/K/H/L moves window to the extreme.
As a cheat, I've got the following in my .vimrc for nice split screen (window) buffers that automagically resize based on which one is currently in focus (taken from destroy all software):
set winwidth=84
" We have to have a winheight bigger than we want to set winminheight. But if
" we set winheight to be huge before winminheight, the winminheight set will
" fail.
set winheight=5
set winminheight=5
set winheight=999
Wow, okay... this is a lot longer than I initially intended. Anyway, good luck!
I think actually using vim would help...
Edit: Sorry, that's a bit snarky. All I can say is that vim proficiency comes from muscle memory. Once you adopt vim and feel the "vim flow," it's really quite painful/distracting to use a modeless editor.
It's to the point where I was doing a phone interview recently where they had me code in a live editor. Because I'm so used to vim I had a really hard time just writing the code without a bunch of random-looking keystrokes. Fortunately the person on the other end recognized them as vim commands, but it was still distracting.