This question came from our site for computer enthusiasts and power users. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

This question appears to be off-topic. The users who voted to close gave this specific reason:

"Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – Tadeusz Kopec, adeneo, glts

This route is great if you eventually have to work on a system without other tools available. Most Linux distributions will come with the toolchain and 1 or more of these command line editors installed. It's also beneficial to have a good understanding of these tools, as programs like the Eclipse CDT use these as a back-end, and you will be able to understand error messages brought forth which will make debugging easier.

+1 for going command line. It is the best way to learn the compile, assemble and link processes, which will prove invaluable later.
–
sybreonNov 26 '09 at 2:38

3

Agree. An IDE an make a beginner appear to be more productive initially, but it's largely an illusion because they never learn the basics required for true mastery.
–
DaveParilloNov 26 '09 at 5:42

And also good when you can't get X to start!
–
James MorrisJan 10 '10 at 15:48

+1 for Emacs. Not so for viper-mode. Good answer though. :)
–
Noufal IbrahimJan 12 '10 at 14:14

Totally disagree. Editor/command line skill does come in handy, but it's a completely orthogonal skill. That's like answering "what tools should I use to learn to make chairs?" with "you should learn to use a milling machine first so that you can repair your own tools when they break". It's definitely great to know how to use the low level tools, but maybe he really only has time to learn to make chairs.
–
sblomApr 25 '10 at 22:07

Someone else suggested vim, emac and nano, but I wouldn't suggest them. For Vim and Emacs you'd spend more time learning how to use the editor than how to program, and nano is just like Gedit except you can't use the mouse to select where you want the cursor to be.

I do agree with the idea of doing things the Linux way (tm), which would be a text editor and makefiles. They're very easy if you start off looking at a simple one. Look at this if you're interested. They're nice because it's generally easier to build Linux packages if you have a Makefile. (If you're going the simple editor and a Makefile route, I suggest Gedit because it does syntax highlighting).

If you're not interested in learning how to write makefiles, I suggest Eclipse, KDevelop (if you use KDE) or Netbeans (my favorite -- similar to Eclipse).

A part of becoming more productive at programming is learning your editor to begin with, especially in a Linux environment. Contrary to popular belief, using the mouse to select cursor position is much slower than if you leave your hands on the keyboard the entire time and know the shortcuts to navigate a document. This is a basic video of some vim usage: youtube.com/watch?v=FcpQ7koECgk&feature=related I've seen people much faster than that too. It gets scary.
–
John TNov 26 '09 at 2:23

1

+1, even though I don't completely agree with your answer, you raise good points. Your comment about some editors is only partially true. emacs & vim have minimal effort required to perform basic tasks. Over time, you can eventually become far more productive in vim, than say gedit. Also, An IDE IMHO requires far more effort to learn how to use than an editor like vim.
–
DaveParilloNov 26 '09 at 5:48

My comment about not being able to use the mouse to navigate was only directed towards nano. I realize that vim and emacs have commands for moving the cursor quickly. I've never had trouble using an IDE. They have the same sort of complexity as vim or emacs, but they're much easier to use because there's menus instead of remembering a bunch of a commands.
–
Brendan LongNov 27 '09 at 22:53

Emacs and vim are 'different' from IDEs. They're extensible in a way that I can't really express. The effort you put in into learning how to use them will repay itself multifold.
–
Noufal IbrahimJan 12 '10 at 14:16

Since writing this answer, I found out about nanorc files. With that, you can get things like auto-indent, syntax highlighting and there's a setting to let you use the mouse to click around.
–
Brendan LongJun 1 '10 at 19:01

Using an IDE for programming is perhaps a bit faster at the beginning. But this is a double-edged sword. You will grow into a lazy programmer who doesn't know the basics, the internal things behind the curtain.

By using a text editor and the Linux console you will progress slower, but you will learn a lot of additional useful tricks. You will also grow into a humble programmer, who thinks more before typing some code, before copypasting some code, before running a test/build process just for the sake of it. At some point it might become obvious for you that an IDE would speed up your development process, without getting into your way. Then you could try to switch to an IDE. But even then you'll observe some of the advantages of using simple tools: you can hook them together the way you want.

I would also like to mention a third approach, that is somehow different from "IDE vs text editor". It is called Literate programming. I won't claim it is absolutely better, but it certainly has some advantages. Consider having a look at leo, that is a great tool for this job.