7 ms·
I'm a big fan of tmux* and vim but there's a limit to the complexity of system that you can develop efficiently with vim. A good graphical IDE used by a skilled
by casca 15y ago
I'm a big fan of tmux* and vim but there's a limit to the complexity of system that you can develop efficiently with vim. A good graphical IDE used by a skilled operator will be more likely to generate correct, consistent code faster.
If you're using vim and think you're developing as well and as fast as you can, you're probably wrong.
* 17 years of screen and I've finally switched over to tmux. None of the features were sufficiently compelling for me to change, but it's so much faster
- moconnor 15y agoIf you're using vim without all the features of a graphical IDE, you're missing the right plugins. I used Delphi for years, then Visual Studio for years, then Eclipse for a while, then QtCreator for years. I've haven't found anything in any graphical IDE that can't be succinctly reproduced in a text-only environment like vim. I can imagine a whole load of awesome features that would require a truly graphical output. They just haven't been written yet.
- Sindisil 15y agoI respectfully disagree, or partially, anyway. I've been developing software in Vim, Netbeans, and Visual Studio (with about a year or so of Eclipse thrown in for good measure). I've worked on projects in all three ranging from tiny 1kloc one-offs to several million line systems, using C, C++, Java, Bash, and a smattering of Perl and Python. For Java and C++ code bases beyond a few thousand lines, I certainly agree that language aware tools are invaluable. It's sad that C++'s nature makes such tools so difficult to build. Going from Netbeans/Java to Netbeans or VS C++ is like going back in time - not quite laser scalpel to flint knife, but sometimes it feels like it! Fortunately, I spend the bulk of my time in C, where I find myself at least as effective in Vim as in either Netbeans or VS. Granted, I obviously do use a few additional tools - primarily ctags and make. If vim only had fully language aware navigation and search, I think I'd be just as effective in it as in any IDE. Exuberant ctags comes close, but just isn't quite there, and cscope is just too clumsy and slow.
- moconnor 15y agoFor code navigation / completion, you could try eclim / clang_complete.
- Sindisil 15y agoYup, it's at the top of my pile of things to try when I need to take a break. Though there's something that feels ... wrong with eclim in particular. Not that it'll stop me from using it if it works well!
- qdog 15y agoI haven't noticed cscope being all the slow, other than having to rebuild the database. I use all the C-Spacebar-<letter> commands, it's second nature to find all the callers of a function for me now.
- moconnor 15y agotmux: is it faster because it's more efficient about sending updates to the terminal, or are you talking about server-side resource usage? I certainly wouldn't say no to a more responsive terminal.
- casca 15y agoI'm talking about the time between keystrokes and visual response. To make the switch-over even easier, rebind to C-a instead of the (sensible) tmux default of C-b. Put this into your ~/.tmux.conf: set -g prefix C-a unbind C-b bind C-a send-prefix bind-key C-a last-window
- yangyang 15y agoNeither are sensible for anyone who uses Emacs keybindings (at the shell or in Emacs). I have my prefix key set to C-t, which is tolerable.
- Ogre 15y agoBeing an emacs user, C-a was never practical. I always set mine to ` (backtick). Except when writing shell scripts, it's surprising how little it actually comes up, and learning to type it twice when you actually want one is not hard. It reduces by 1/3rd the number of keys involved in switching "tabs" or doing other stuff. Unlearning typing it twice for when you're not in screen is the hard part.
- jrockway 15y agoBut C-t is a useful Emacs keybinding. I use C-z. Pressing C-z z when you want to suspend the running app is not particularly disruptive.
- orthecreedence 15y agoI have to disagree here. I've been programming for about 17 years now (since I was 8) and I've used a lot of different types of editors across different languages. I have to say that my LEAST favorite of all editors are the ones that try to do anything for me. Code completion, auto-closing quotes or tags, etc etc... it frustrates and distracts me to no end. After spending a little under a year learning vim, I've found that while I make the occasional error in command mode, nothing has helped me "think in code" quite as well. I'd say most of my time is spent thinking while programming anyway, but when I am typing, nothing has made me faster than vim. "Small" things like "hmm, I don't like what's in this block" can be as slow as reaching over to the mouse and selecting a bunch of code by hand, trying very hard to be precise, or typing "ci{". Which is easier? Perhaps I've been missing out on all these years on the true power of IDEs and not using them to their full potential, but when it comes to programming, I like to be the one typing, not some fool machine. Do I occasionally make mistakes? Of course. Is my overall output better because I have fewer distractions? Absolutely. Of course, that's just me. I know plenty of people who are a lot faster with autocomplete and auto-quote closing and everything else.
- qdog 15y agoI use vim+cscope+screen. I used to operate solely out of a putty window (The company I work for uses windows on the desktop and really, all I need is that one putty window). I might look into tmux, screen is kind of buggy under cygwin. There are plenty of code-completion plugins, and I used to have tab-completion enabled, but I never got around to adding it on my latest environment and don't miss it. Of course, cscope is mostly useful for c/c++/java, but I've used the ruby vim map just fine. I operate on a codebase that's probably past a million lines of code. Maybe not all useful lines, I haven't seen them all ;)