''' Opening ''' Here we are talking about whether doing SoftwareDevelopment with commandline and using text-mode editors(like Vim) can be more powerful then using IDEs. Q: I'm not clear on what you are mentally comparing? "Vim with some plugins" ''is'' an IDE. Is the discussion here really about user interfaces that require a mouse vs those that don't? Text mode vs graphics mode? A: Even though Vim offers all kinds of IDE feathers, I'll beg we do not call it a IDE here, Let's just call it ''Vim''. and the IDEs I am talking about are those monolithic IDEs with GUI interface. So my main point here is: Q: DO we really need a mouse to do development? A: My answer is *NO*. I mean if you grab your mouse, You are practically using other people's configuration and work flows, surely this seems to be a shortcut if you work on something simple, but we do know in real world programming, things won't be done under fast and simple rules. So GUIs are designed for people IN HURRY, who do not have enough time to to customization, and they will regret if later they really try hard to be good and professional coder.--PeterWang Q: What we can really get from IDEs(like eclipse)? A: I love Vim and believe that if you grab your mouse to do development, you are reducing your efficience. I have been coding with Vim for 3 years, and I've tried some IDEs(e.g QtCreator), but whatever I find useful in these IDEs, I can extend vim with some plugins to do that faster(since we are in text mode). ''' dual-mode IDE ''' ''Many IDEs have full keyboard accessibility. Perhaps not as terse as what you can do in vim or emacs, but at least it's a start. Many have proposed dual-mode IDEs that have pull-down menus and dialogs for those who want it, as well as command mode for those who want it. What would you lose by doing that? -- MichaelSparks'' IDEs with keyboard shortcuts are really nice, and one shall love them. But I even though they provide full feathered command mode, I really doubt its flexibility.---we are still forced to use other people's work flow, I means using a high level IDE command line is the same as using the mouse clicks, we are still blind to what is really happening underneath. Trust me, I am also lazy, and definitely not addicted to hacking everything down to the buttom, but GUIs are for me bring more trouble than ease. --PeterWang ''' Power IDE ''' IDEs are for me aren't about GUI vs. CUI or keyboard shortcuts. IDEs allow me to think (and work) with the code not as "just text", but as a connected syntax. One super-simple (but IMHO significant) example: I can rename a variable without worrying that all the other places in my code-base that happen to include that string will also be changed. For me, that's a huge difference. - GeoffSobering While I am saying IDEs force people to use the conf and workflows of others, I won't deny that those *workflows* can be smart, that's why I always want to try IDEs to see whatever nice feathers they have, I won't use them directly inside that IDE, instead if I find something I really love, I will try to figure out how to do the same with Vim. And use VimAsIde. I believe there is nothing of real value that a IDE can do and Vim can not.--PeterWang "If you know something really neat and efficient in your IDE that you love and you believe Vim can not do" - Sure, here are a couple of examples: * Find/rename all the references to a particular method/field in a large (1000 klocs+) software system. * The above when the name is a common one (i.e. used in multiple classes). * The above when there are a number of methods with the same name, but different signatures. * Rename all the occurrences of a particular for-loop index variable (when there are a number of for-loops in the file that use the same variable name). * Find instances where a particular variable is assigned. * Highlight a block of code and perform an "extract method" refactoring. * Give immediate feedback on a syntax error or incorrect field/method name (immediate = right after the identifier is complete). And, just to be clear - I like vi for editing. I used it exclusively for over 10 years, to the extent that the basic commands are burned into my muscle memory so that even through I only use it occasionally these days, I still don't have to think about it. - GeoffSobering Now, the discussion start to be really meaningful, and thanks guys! @ GeoffSobering : I usually use cscope to do the find/rename in my projects, but since cscope does not know about what a object is, so things won't be done as gracefully as you can do in your IDE(BTW.What IDE do you use?) That's sad, anybody have a good idea to do this neatly in Vim? as to highlighting and warning beautifully, that is one area that vim can never match GUI-based IEDs. I love all the feathers you mentioned here, But I still want to stress the benefits of staying "low level", you can do customization and extension freely and easily. Let me give a example: I love Git (GitVersionControl), and love to use all kinds of GitWorkFlow. My point is when your try to use some complex tools, IDEs can never make you feel fully free and comfortable with it. --PeterWang ''' The I DONT CARE approach ''' {If keystrokes vs mouse-clicks has a measurable effect on your productivity, your development process is unbalanced. It suggests most of your effort goes into typing and editing, with relatively little on productive thinking and innovation. It should be the opposite. Perhaps you need to consider languages or approaches that permit greater automation.} {Whether I grab a mouse or not (and I've used everything from raw command-line to full-bore GUI-based IDEs, and everything in between), it is such a negligible percentage of my overall creative effort that I consider it to be inconsequential.} comment: I agree on the point that one should be warned the addiction to automating everything can probablely slow down your work in a bigger way. All good programmers are lazy, and somethings you need to stay stupid to be necessarily stable.--PeterWang ''' The EFFICIENCY IS KING approach ''' I started programming with punched tape and cards. On-line editing was a blessing, but used a plethora of editors until I found the Turbo Pascal IDE. It improved my work. The point of an IDE is to help programmers work more quickly and commit fewer bugs. If your tool kit does it for you using vi, vim, emacs, or whatever, you have what matters. Just try new things; someday you may find a better tool. -- EdwinEarlRoss ---- About the mouse versus keyboard aspect: There is at least one fundamental text mode where the mouse ''is'' more powerful than the keyboard: Selecting multiple options among multiple candidates. Especially so if there are no obvious sorting and/or filtering criteria (or equally: if describing the filter takes too long). Examples: * Selecting images for a presentation/design * Selecting search engine hits (yes, I too open tabs for candidates) * Selecting files to backup/archive/delete * ... About the following predefined workflow: Yes I agree. That is still the holy grail of GUI-building: To create a composable scripting language for GUIs. Currently you always have to write very complex plugins where you use a GUI-builder to create your own custom non-integrated 'my workflow' GUI-layout. I mean it is not really difficult to do so in e.g. Eclipse. But is not really composable in any dynamic scripting language way. I remember having seen something about this on LambdaTheUltimate but cant find it anymore, sorry. ---- See Also: MouseScriptDisconnect, CuiVersusGuiEfficiency ---- AugustTen