For the vim -> Sumblime switchers out there on HN, what caused you to switch?
I use vim exclusively but I'm not a religious zealot about technology. I've noticed all my students are using Sublime these days. Is it just the latest TextMate (i.e., the best GUI option if you don't like command-line editors) or are there truly features that will convert command-line folks to the GUI?
I'm really hoping for an editor like Brackets (Adobe) to take off, which has really good support for cross editor-browser communication for web development.
I've tried a few times and just can't do it. The completion isn't actually that great (not that VIm completion plugins are very good either) and Vintage mode is at best a poor-mans VIm emulation. There is no sane way to control splits with the keyboard and block selections just don't work well. Search and replace functionality is also not great compared to my experience with VIm. Too many deal breakers for me.
I recently tried switching from Vim to Sublime, but its window splitting just didn't work for me. In Vim, I make :sp and :vsp splits for quick edits all the time. Sublime's splits were cumbersome and didn't have (easy) side-by-side views into the same file.
You likely will still not be convinced, but some of those issues (off the top of my head, at least the splits with keyboard) seem to be addressed by Vintageous (and some [plugins][0] for it).
The thing that really makes it stand out is the multiple cursors. You can go very deep with them because everything that happens in the editor happens in parallel for each cursor. They each have their own clipboard, any scripts you run happen once per cursor. "Find all" can be made to select all the matches. You can do some crazy stuff. I love it.
However, if you've customised and become proficient in vim to any serious extent it likely won't be that impressive to you.
I prefer GUIs strictly for better window manager and system copy-paste integration, but I think that is irrelevant to vim/Sublime, as you can (and I do) use gVim or MacVim. I like vim movement and editing commands a lot, but I'm not much of a configuration fiddler - I fiddle if I must, but I find no joy in it. I switched to Sublime because it gives me adequate (if somewhat mediocre) vim commands, plus other fiddle-free features that I had to fiddle into my vim, most notably command-t file fuzzy-finding (which also works much better, on top of being fiddle-free). I also really like the command palette (which I haven't seen a vim corollary for) and the package manager (which is much easier than the various alternatives in vim IMO).
edit: For balance, it also has its annoyances, and I sometimes wonder if I should switch back.
Real command-line folks will not easily move away from command-line apps, since one of their greatest advantages is that they run in a ssh shell from any terminal. For people who often log in remote servers for more than a few minutes a day, this is a dealbreaker :)
I've used Vim for years and recently switched to Sublime for Rails because of the fuzzy search. When working with so many different files, it significantly increases your productivity, such that it is a net gain despite losing Vim's editing paradigm. I tried Vim plug-ins that emulate fuzzy search, but they didn't work very well.
I wanted to be able to search the files in the current project (I believe it determines this by recursively going up the directory structure until it finds .git or some other version control directory), but have those files weighted according to how recently they'd been opened. And the MRU (most recently used) mode would count all recently opened files, not just the ones in the current project.
The ease of which it is to get started with Sublime Text may be a factor. It's nice not having to worry about managing plugins and custom settings. Though I see no reason to switch if you have taken the time to customize vim to your liking. Once you get a decent package management system for it (Pathongen, Vundle) it's hard to beat.
As someone who just started another attempt at picking up vim (actually vintageous in this case) last week: how do I keep myself from forgetting that I'm in a vim editor?
It'll happen every so often that I'm in the middle of something, switch to Sublime and just start typing - as it's second nature. By the time I notice whats going on, I typed half a dozen characters. I'll curse, undo the random commands, get into insert mode and will effectively have lost my train of thought.
It may sound ridiculous, but it's actually the biggest hindrance to adopting vim for me. Am I the only one with this problem?
> 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!
You just need to use vim for a while, and then it becomes second nature that "normal mode" is a powerful set of chordless commands at your ready disposal. Once you get used to vim then the problem becomes that you constantly hit escape after typing a block of text, which can wreak quite a bit of havoc in certain contexts ;)
I think vintage and vintageous can be configured to be in insert mode or in command mode by default. (I prefer command mode, but I think you might prefer insert mode -- as then you could just start typing.)
I'm very much hoping they allow find in Visual mode. I enabled Vintage mode in ST 2 a little while back and love it, but visual find would be very handy.
This works a lot better than the included "Vintage" mode.
I've spent the majority of the past 15 years in vi(m), and have recently switched to Sublime for working on projects with many, many files, plus mouse support.
As psuter pointed out there is Evil mode for Vim. There's Viper mode too, which I believe is older. This isn't a new thing. Vim as an editor isn't anything special....infact it kind of sucks. The script/plugin/extension ecosystem is nice but that seems to be in spite of vimscript. Evil mode in Emacs is pretty nice.
Evil mode is one of the better Vim emulation layers for non-Vim editors...and there are quite a few.
Sublime Text has a much better GUI front-end than gvim or MacVim. So for someone who doesn't want to work in a terminal and wants to use a GUI based editor, they may feel that a fully featured vim mode in Sublime Text would offer the best of both worlds: rich keyboard-controlled text editing and a beautiful front-end GUI.
I just use vim inside tmux, but that's mostly because I have to write a significant amount of code on a remote machine via ssh.
Also, I will say that even as a dedicated vim user I wouldn't be thrilled to use vim without a large number of plugins that more or less just offer features something like Sublime Text can offer natively, like a decent file tree browser. So a vim mode in Sublime Text can make the barrier to entry lower by reducing the need for the modern programmer to load up vim with plugins.
The combination of using vim and having to debug stuff in awkward places (on boats in rough seas, 20ft in the air on hydraulic scaffolding, in garages) with text-only interfaces (serial terminals), has totally changed me. I went from having 4 monitors to working on a 13" rMBP.
My personal preference is vim in a quake-style terminal (yakuake on linux or iTerm2's hotkey window in OS X) with a minimal amount of transparency so that I can "read through" the terminal and see whatever's in the browser/document window behind. After getting this set up, it's going to take a lot for me to switch back to an IDE full time.
And yeah - gotta love screen/tmux.
I personally try to use a minimal number of plugins. Command-t is the only one I use daily. I gave eclim a shot for java stuff, but ultimately found I didn't use it very often. It's better to just not fight "the vim way," though I definitely see how that's a barrier.
I still love using multiple monitors (I currently dedicate an entire 27" monitor to a single full-screen terminal with tmux as the "window manager"), but it is really nice having the know-how to do the full development cycle from a terminal. I used to be afraid of command-line stuff and I think it really held me back in some ways. Because I used the terminal only when forced to I never could remember how to actually use it beyond the most trivial stuff, which just made it more frustrating when I had to. And I never could find a true tiling window manager on OS X that I liked; tmux works great for that out of the box. I still want to experiment with an xmonad-based workflow on Linux, but I haven't really had a reason to yet.
My job forced me to get over that, and though I can still appreciate a good GUI-based editor I don't feel any need to switch to one anymore.
...which is something people have done [1]. The goal of these extensions is usually to have the best of both worlds. E.g. block selections in an editor you can script with elisp.
Vim's modes are quite powerful and easy to get used to.
To some extent it is probably people not learning their new editor completely and another part is sometimes the vim-way is just easier/quicker.
Being able to escape insert mode and start modifying the text is great to a vim user things like editing inside quotes `ci"` are easy to do without a mouse, as is moving around the file without leaving home row.
I am a dedicated Vim user, but I would assume people looking for an IDE instead of an editor, with tab-complete, file browsing etc but don't want to install and configure the myriad plugins required to get Vim into this state; would prefer Sublime.
I use vim exclusively but I'm not a religious zealot about technology. I've noticed all my students are using Sublime these days. Is it just the latest TextMate (i.e., the best GUI option if you don't like command-line editors) or are there truly features that will convert command-line folks to the GUI?
I'm really hoping for an editor like Brackets (Adobe) to take off, which has really good support for cross editor-browser communication for web development.