Modern IDEs have very sofisticated interfaces to allow code navigation and editing. Although these facilities are very useful (specially when working with external libraries), there are somethings that are just easier to do in more traditional editors, such as UNIX ed.
One of these things is keeping the context of several parts of your code. I learned this kind of trick a few days ago when working with a large source code file.
Simulating Literate Tools
A similar tactic is used by people who use Literate Programming.
Literate programming is the methodology of software development where documentation and coding are done at the same time. Moreover,
in literate programming documentation drives the development. The main idea is that programming should be similar to writing, in the sense that code should be entered only when we describe how it works.
To make literate programming work, we need a system that can move code from the place where it is written to the place where it needs to be used.
For example, if we define how a variable is used, we might need to define in one place, and write the code in another place, depending on how the language treats the initialization of variables.
One way to do this is using the “tangle” program in the standard TeX distribution. The problem with this solution, though, is that you need to write your code in a completely different format, which is hard to use with other development tools.
An option to this style development method is presented by the use of the ed editor. The great advantage of ed over other editors is that it works with regular expressions, and only the current line is of interest.
Thus, you can mix different lines when working in the same document.
For example, suppose you are writing a function. One way of simplifying the task of writing the program is keeping a marker for the end of variable definitions as well as a marker for the current code position. With ed, you can move between these positions using the quote command (‘).
Thus, if you have markers a and b, you can just do: ‘a to move to the code definition part, and ‘b to move to the coding part. If you are defining some code that will use a variable, you can just move between these markers. It is a very simple operation that makes it much more convenient to write code. This can be used with language such as C++, where member functions have to be listed in a class declaration as well as an in the body of the source file.