You can also assign keyboard shortcuts for menu items in System Preferences->Keyboard. If you select the Keyboard Shortcuts tab, you’ll see the list of all keyboard shortcuts, both universal and on a per-application basis, and if you hit the “+” button on the bottom left of the list, you can add your own. This is also a good place to see many of the “built-in” keyboard shortcuts, which you can remap if you’d like (e.g., F10 is usually “Exposé all application windows,” but I’ve remapped mine to F10+Shift+Command+Option). Note that some apps such as those in MS Office and Foxfire do many weird things with menus and don’t use the OSX-native menu controller; the Office apps have some sort of command that will list everything, and I think Firefox has some extension (or about:xxx command) that lists its shortcuts.
Note: You have to spell the menu item correctly, so you should remember that the ellipsis is a single character produced by Option+Semicolon. It will search all menus for the menu item you specify, even pop-up menus in dialogs.
Also, note that in addition to CTRL+F2 to “activate” keyboard control of menus, CTRL+F3 activates the dock in a similar manner. Why do this when Command+Tab cycles through apps? The CTRL+F3 allows you to select anything in the dock, even applications that aren’t running, along with whatever folders, aliases or documents you’ve put in the dock.
A list of keyboard shortcuts (incomplete, but it also lists some legacy Unix vi and emacs commands that work in various places in OSX) is at Shortcuts | Rixstep Learning Curve.
First, you can run vi and emacs from a terminal window (duh). But some apps (those using the NSText API) support a bunch of commands from vi and/or emacs. The supported commands are mostly a concatenation of the lists for “NSText” and “Terminal.app” from the above link. Both TextEdit and Terminal use the NSText API, and TextWrangler either uses NSText or mimics it because they’re nice guys. So, for example, Escape-then-B moves the cursor back one word, CTRL+a moves to the beginning of the line/paragraph, etc.)
Word processing apps (e.g., MS Word) usually don’t use the NSText API, but generic text editors typically do. Also, note that their “Menu” list seems to be a mixture of Menu items that work universally and/or the Finder and/or whatever mysterious program they were running when they updated the list. Some are useful.
BTW: “NS” in NSText stands for “NextStep,” the Unix-based OS created at Next, the Next (heh) company Steve Jobs founded after being fired from Apple. Do many people remember that Steve Jobs was ousted from Apple just as they turned to the dark side, resulting in Jobs starting Next & Pixar? (Whether Jobs’ return cemented them in the dark side or redirected them towards the light is the subject of debate…)