A good text editor is almost undoubtedly a developer's most valuable tool. As with nearly everything that leaves us with options, what's right for me is not necessarily what's best for you. The important thing is that you find one that does what you want it to and in a way that makes it easy for you to get stuff done.
I'm only writing about editors that I have used extensively, and there are some great ones that I am knowingly not even mentioning.
Gedit is a decent text editor and will at least get the job done. It offers syntax highlighting, bracket and word completion, a variety of snippets, and a variety of plugins. I've been using this for so long that I don't even remember what it was like before setting it up to my liking. It might be pretty basic, but sometimes that's better than offering more options than you will ever need.
Despite its lack of features, my biggest complaint against gedit is the lack of code folding. A better tree view might have been nice as well.
Brackets has been around for a little while now and has an impressive amount of extensions available. It was my go-to editor for several months, and I have to admit that I got some great usage out of it. Nearly anything you could imagine is available as an extension, and that is only in addition to the wide variety of features that it comes with.
While I used Brackets for quite some time, that doesn't mean that I was happy with it. Everything ran decently enough after it opened, but opening Brackets takes some time, it doesn't handle directories with a ton of files very well, and it takes several minutes to close and can require multiple clicks on the close button to exit.
AtomI was really excited when GitHub released a code editor. Considering how central Git is to my work flow, I was expecting Atom to be absolutely amazing! And when I finally got it installed I was… Well, more than a little disappointed.
For an editor built by GitHub and with Git integration as a central feature, I was disappointed to find almost a complete lack of Git features - no commit, push, pull, merge, etc. Atom shows changes in both the tree view and file contents, as well as showing which branch you're on, but little else. It does allow you to install packages and a few of them do provide these missing features, but I was really expecting a lot more.
Atom still provides the features you would expect from a code editor, from syntax highlighting and code folding to
fuzzyfinding. It is by no means a terrible text editor, but it set really high expectations and completely failed to deliver on what should have been its highlight.
GitHub does not provide Atom prebuilt for Linux, but it does have instructions for building it from source and Web Upd8 has pre-built Atom and allows for it to be installed via PPA (instructions here).
Atom is still the editor I am currently using. I'd say that it provides most of the great features of Brackets but still opens and closes rather quickly. It is a decent compromise between gedit and Brackets, and I'm expecting for it to get better rather quickly with updates.
I have never had need or even want to find a better FTP client than the file manager than comes with Ubuntu.
Nautilus features tabs along with your usual set of file manager features (tree view, previews, bookmarks, etc.). What makes Nautilus so great, however, is that it natively supports FTP, SFTP, and almost any other type of networked file system you've ever heard of as well as a few that you haven't. Simply put, Nautilus does it all, and it does it better than anything else!
When it comes to Git clients, Ubuntu doesn't have many options, and most of them are admittedly kinda ugly. You would think that Linux (created by Linux Torvalds) would have a special focus when it comes to Git (also created by Linus Torvalds… and specifically for the development of Linux).
The options that are available will get the job done, but I often find myself switching back and forth between a few of them depending on what I'm doing. For standard Git features (push, pull, merge, commit) any one of these will do, but each is missing one thing or another when it comes to the more advanced stuff.
In case you hadn't noticed, Git GUI is ugly! I hate to judge so much on aesthetics, but its appearance is the main reason I don't use it very much.
It is, however, a part of the Git package itself, and offers a few features I haven't seen anywhere else such as
prune and a variety of database maintenance tools. And it comes with gitk, which is quite nice for viewing commits and diffs.
Probably the most polished of Git clients, Git Cola still offers more advanced features such as cherry-pick and exporting patches. It is the Git client that I most often use, though others are better at various tasks.
It comes with DAG, which is another commit viewer with the ability to export patches or grab files from a particular commit.
Gitg is my preferred Git client for working across multiple branches or with multiple remotes. It is also the only one of these clients which has a commit viewer in the main window, though in a separate tab.
The best thing about gitg is that it allows drag-n'-drop merges and pushes, so keeping multiple branches and remotes updated is a lot easier than with any of the others mentioned.