Emacs
(if you are a vi person, there is a popular configuration for evil-mode called spacemacs, to give you vi keybindings)
linters: gcc and cppcheck, among others, can be integrated into Emacs with flycheck to provide on-the-fly syntax checking.
debugging: DDD graphical debugger can be integrated into Emacs with gud-gdb. DDD uses gdb as an inferior debugger, so your normal gdb command line is visible in an emacs buffer. So you will see your mouse clicks turned into gdb commands. Or if you have a debugger command too complex for the gui to handle, you can still type it at the gdb command line.
build systems: GNU Make, Autotools, etc. You can run gcc or make in Emacs compile-mode, and stepping through the errors will take you to the appropriate place in your source code to edit. (I also use compile-mode to run other linters such as flawfinder or splint that are too annoying to integrate into flycheck.)
libraries: There are other libraries beside's the C standard library that are quite useful. Many of them are packaged up in your operating system's standard repositories. For example, Glib is packaged in Ubuntu as libglib2.0-dev. You will need pkg-config for finding libraries.
version control: Git. Emacs has a standard package included for version control that supports git, but there is another one called magit that is very popular.
There are profilers such as gprof and documentation generators, such as Doxygen, though I have not used such things.
A disadvantage? to Emacs is that you will need to learn lisp to configure it properly. Although that may be an advantage because many of the beginning computer science courses have you write a lisp interpreter as lisp syntax is simple to parse. Though I don't know if that is true for CS50.
man pages: Manual pages for POSIX library calls are in manpages-posix-dev package in ubuntu.