This is just the beginning, glad to listen useful comments, to find methods to make external code (Linux, etc.) more readable...
You're not supposed to read such code in Notepad. You can, but it's waste of time, at least unless you know the code relatively well.
First, you want end editor that can do syntax highlighting. It's also helpful your editor can do stuff like show matching parens or jump to them (typically works for those braces as well), and automatically indent code (as in, select a block of code and tell it to indent it properly). Some also like the ability to fold certain parts, though I've found it more useful for editing textual documents than code.
I also couldn't live very long without having incremental search: when you edit the search query, it'll keep finding the first place that still matches. Typically you can hit esc to get back where you started, or enter to actually stay at the match. Ofcourse you often then tell it to find the next match, and such. Once you get used to this, you start using it for general movement within a file just as much as actually finding stuff.
After your code looks pretty, and is colored in a way that allows you to immediately see what is a comment, what is a constant, and what is a keyword, and how parens match, and you can quickly move around within a single file, the next thing is to figure out how to make sense of project with huge source trees with hundreds of files.
And the solution to that is
grep. Yes. When you need to find a certain function, you'll just grep for it's name, in all files, recursively for the whole source tree, until you see a line that looks like a prototype. Then you open that file, and search for the prototype within that file. If the coding standard is half-way sane, it's possible to identify prototypes from a single line. Ofcourse you can search for other stuff as well, like defines or whatever, and grep gives you full regex if you need them.
If you can issue the grep-commands from within your editor easily, this can be a really fast way to move around. I usually don't do this, but simply keep a shell and the editor next to each other, using the editor to browse files, and the shell to find the correct file. Ofcourse it helps if your editor can do tab-completion or some similar stuff on filenames, so you can easily open files with complex paths.
....
The short version: grep && (vim || emacs)
The real problem with goto is not with the control transfer, but with environments. Properly tail-recursive closures get both right.