I am not looking for an IDE suggestion for C++ development. I have found many discussions on that and tried EMACS, GVIM and Code::Blocks. I liked Code::Blocks very much than the other two. But it looks like most of the developer community is using tools like EMACS or GVIM. Is there a reason for this? Why Code::Blocks is less used?

I found EMACS and GVIM is less user friendly. You have to put more effort to get it working, but Code::Blocks take advantage here. It is easy to start and compile. Or do I miss something?

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
If this question can be reworded to fit the rules in the help center, please edit the question.

7 Answers
7

Whatever editor you ultimately end up using, it is worth taking a few minutes to at least learn to navigate around and perform basic editing tasks in Vim, since a vi of some flavour is the most commonly available editor in especially the more specialised distros.

When you need a real small editor that you can always trust, learn the basic vi (carry it on a thumb drive with a windows binary too. It will save you from CRLF messing up your files if using notepad)
–
hackworksNov 3 '10 at 8:45

Code::Blocks is a new entrant. Vim and Emacs on the other hand have been present for much longer. They are the original text-editors. These were written when there was no GUI and have evolved with time. GUI has been later on added to these; GVim is one example. Like any other modern GUI-based IDE Code::Blocks hides the strange command-line invocations from you thereby making it more user friendly -- for those who were brought up on a heady mix of rich OS UI :-)

Code::Blocks is less used because it isn't extensible as Emacs & Vim. During my work (in Emacs) with different programming languages, i often create a new scripts that make my work much easier. Code::Blocks allows to write extensions only in C++, that requires to do lot of work.

No editor other than Emacs has a full blown programming language as its extension language. I would be happy to see Emacs using scheme or something more standard compared to Elisp though.
–
hackworksNov 3 '10 at 8:44

Lots of developers use EMACS and vim because they're excellent and powerful editing tools that, once learned, can make everyday editing tasks much simpler. Neither is specifically an IDE in the same sense as Code::Blocks. EMACS and Vim are just editors, but because of their usefulness and their longevity they've accumulated a number of plugins and extensions to simulate many of the tasks of an IDE.

As for which you would like to learn, it's up to you. If you just want an IDE that lets you jump right in, you're probably not looking for Emacs and Vim, but if you want a very powerful editor that, while taking a while to learn, will make your life easier in the end, go for Emacs or Vim.

Vi(m), Emacs are everywhere on the linux machines. They are very extendable and can satisfy any project need. As almost all projects (at least at our company) at the linux are very big projects for support you need a serious configurable tool to accomplish the task. You don't need IDE to fast create small projects. One project. One configuration. Years of work.

Code::Blocks is a nice IDE but most linux OSS projects don't want to be IDE dependant and are so written that anyone who can drive an editor and use make can build them. If you are going to be doing serious work on Linux you need to learn one of vim or emacs. This is not to say that you can't use Code::Blocks for your own projects of course - I certainly do!

Personally, I switch the IDE of choice every now and then. For example, I've used Code::Blocks for some years, but skipped it now as for some reason the editor window has got an increased latency that let me type whole phrases into the blind; and I already disabled all time consuming stuff (I anyways don't use frequently) like code completion (that is, on my Debian GNU/Linux installation; on Windows I still love code::blocks).

So, I recently stumbled over Monodevelop, and even though I am not the biggest fan of mono/.net, that IDE is really nice and extendible. It has a class browser and a filesystem browser, and some more features I personally don't use (it's primarily an mono/.net IDE, but also supports C++ really nicely). The only thing I don't like on monodevelop is that it isn't scintilla based, or that it cannot be tweaked to be like scintilla (I am a heavy user of it's copy+paste mechanisms) (*).

I usually don't compile inside an IDE, as that is often painful when it comes to distributing your app or porting it to other operating systems (I use makefiles or CMake instead). Also, having a (fullscreen) console/terminal-window handy for compilation is really nice if your app dumps a lot of log, or when your compiler dumps epic error messages.

(*) For example, you can press CTRL+D to just duplicate the marked text right behind the current cursor position. To get a glimpse on it, look at Notepad++ (win) or Scite (Linux).