Introduction to hnb
Introducing hnb
hnb is an hierarchical notebook, that is an editor that focuses on editing and managing information in a hierarchical manner. This type of editor is also known as outline editors.
hnb was written as a personal itch of the author, he knew no other such program and thought out how he wanted it to work. Some of the additional features in hnb have been inspired by other similar programs.
I, that is Øyvind Kolås <pippin@users.sourceforge.net> use hnb to maintain my contact list, my to-do lists, my calendar, writing documentation and reports.
Installing hnb
Unix
prepackaged binaries
prepackaged binaries for hnb exist for some operating-systems/distributions, these might not be the latest versions.
Andras Bali maintains a Debian package of hnb, which can be installed by issuing
apt-get install hnb
Patrick Li maintains a Free-BSD ports package of hnb, I don't know how to install it on Free-BSD.
compiling
hnb comes packaged in a tar.gz file, this file contains a Makefile, hopefully installing hnb is as simple as:
make
su
<enter root password>
make install
platform specific workarounds
SuSE Linux:
SuSE Linux doesn't install ncurses as curses, which ncurses actually does by default if it is allowed to. Changing the CFLAGS line in src/Makefile to -lncurses instead of -lcurses makes hnb compile on SuSE
OS X / Darwin:
the preprocessor that OS X uses doesn't work properly. Adding -no-cpp-precomp to the Makefile should make it compile properly on OS/X as well
Starting hnb
When you start hnb it automatically loads the default database, ~/.hnb and lets you edit it, this is to make it convenient to have your personal information like contacts and to-do list readily available.
If ~/.hnb doesn't exist a sample database will be loaded instead
The full commandline usage for hnb is
hnb [options] [filename] [-e 'comand' ['command' ['command' ..]]]
options:
-h or --help show recognized options
-a or --ascii use tab indented ASCII for loading/saving database
ASCII doesn't remember attributes like to-do status, done etc.
-o or --opml use OPML DTD for loading/saving database
-x or --xml invoke hnb as a XML editor
--hnb use hnb DTD for loading/saving database, this is the default unless you've changed it in the preferences file
running commands
by running
hnb -e 'go_root' 'oexport_htmlcss test.html'
hnb will load the default database, go to the start of the database, and export it with the htmlcss filter to a file called test.html
In the latest version hnb also contains a menu that can be invoked by pressing F9, for advanced commands the commandline (F5) is preferred.
Quitting hnb
By pressing ESC, hnb will ask you whether you want to save or not, if you press ESC again hnb will return to normal operation.
Importing data
To import the contents of another file, you press ^L (Ctrk+L), you will then get a list of choices of format to import from.
Choose the desired format
Enter the relative or full path of the filename you want imported.
hnb will add that file under the current level.
Exporting data
To export the current tree to another file.
press ^E (ctrl+E)
Choose the desired format
Enter the relative or full path of the filename you want to write to.
Printing
hnb doesn't support printing to a printer directly, but by using an intermediate format you can get some quite good printouts, a good candidate is the HTML/CSS format.
Using Outlines
Managing entries
Navigating amongst entries
The arrow keys will move you amongst the entries in the tree, you may also start typing the name of a entry that exist on the current level, and hnb will take you to the entry that matches what you've typed, pressing tab twice will enter the sub-level of the current entry, this behavior is modeled after the name completion in Unix shells.
PageUp/PageDown will skip a large amount of entries up and down.
Home will bring you to the 'root' (the first entry) of the tree.
Searching
^F will ask you for a search term, you may thereafter navigate amongst the occurrences of the search term with up/down n/p, pressing space or return will make you stop where you found the substring, ESC will bring you back to where you started the search.
Moving entries
You can move entries either by pressing shift and using the arrow keys, the entry will then move within the constraints of the hierarchical structure.
You can also move entries by cutting and pasting a entry, this has much of the same effect, cut is instantiated with ^C and the paste command is ^V
Adding entries
Pressing insert will add a new entry below the current. You will also immediately enter edit mode.
You may also exploit the fact that searching by keyboard for a entry that doesn't exist, and pressing enter, will create the entry name that you entered.
Deleting entries
If you press delete the current entry will be deleted, if it has children you will be asked to confirm the action.
Cutting can also be used to remove data, no confirmation will be asked whether you want to fulfill you action or not, but the data will be available from the clipboard.
Indenting and Outdenting entries
> will move the current entry and all the following entries of the same level to be children of the preceding entry.
< will move the current entry and all the following entries of the same level to follow the parent of the preceding entry.
Expanding and Collapsing entries
expanding
pressing '+' on a entry with sub entries will display the sub entries even when you're not within them, thus displaying a larger portion of the tree.
collapsing
Pressing '-' has the opposite effect of '+' it hides the expanded entries
operations working on the whole outline
pressing F10 brings up the user menu,.. a menu where miscellany commands that don't fit anywhere else are added,.. here you may expand or collapse all entries in the current tree.
Editing entries
Pressing Return will start editing the current entry, now the cursor keys move between the characters of the data in the entry instead amongst the entries
(most) Default editing shortcuts
Splitting entries
When editing a entry you may press ^S, the entry being edited will be split in the current position. The data to the left of the cursor will be retained in the current entry, whilst the remaining data will be inserted in a new entry below.
Joining entries
Pressing ^J whilst editing a entry will join the following entry, (as long as it doesn't have sub-nodes) will merge the data in; at the end of the entry being edited.
Spell-checking
By default hnb is configured to use ispell for spell-checking.
Pressing F6 will spell-check the current entry
Ispell will start and guide you through the unmatched words in the current entry.
Thereafter you can press space to spell check the next entry, escape to cancel the changes or return to accept the changes made.
Sorting entries
pressing ctrl+s will sort the entries on the current level
Other features
Todo-list mode
^T toggles checkmarks instead of bullets,. ^D checks or unchecks the checkmarks.
percentages are shown for unchecked parents that have checked subentries
Using URL's
If an entry contains a web url ^A will bring up the configured web browser, (see your ~/.hnbrc for more information about configuration)
Calendars
From the commandline you can issue a command like 'insert_cal 3 2003' to insert a calendar template.
Using Email addresses
If an entry contains a email-address ^A will bring up the configured mail client, (see your ~/.hnbrc for more information about configuration)
Configuring hnb
Nothing here yet, please examine your ~/.hnbrc (created automatically the first time you run hnb) for information.
sample data
This is a stripped down version of the authors default database.. the real database contains >4000 entires
contacts
frodo baggins
or perhaps underhill
555-12341324
frode@bagend.net
merry
meridoc somthing
555-23234324
peregrin took
aka pippin
pippin@users.sourceforge.net
sam gamgee
samwise
555-12341234
sam@gamgee.com
calendar
2003 March
Sat_01
Sun_02
Mon 03
Tue 04
Wed 05
Thu 06
Fri 07
Sat_08
Sun_09
Mon 10
Tue 11 remember to do some stuff
Wed 12
Thu 13
Fri 14
Sat_15
Sun_16
got some sub entries on my todolist here,..
Mon 17
Tue 18
Wed 19
Thu 20
Fri 21
Sat_22
Sun_23
Mon 24
Tue 25
Wed 26
Thu 27
Fri 28
Sat_29
Sun_30
Mon 31
2003 April
Tue 01 Aprils Fool
need to find some good ideas for jokes
Wed 02
Thu 03
Fri 04
Sat_05
Sun_06
Mon 07
Tue 08
Wed 09
Thu 10
Fri 11
Sat_12
Sun_13
Mon 14
Tue 15
Wed 16
Thu 17
Fri 18
Sat_19
Sun_20
Mon 21
Tue 22
Wed 23
Thu 24
Fri 25
Sat_26
Sun_27
Mon 28
Tue 29
Wed 30
to-do
hnb todo
force all expanded
clones
calendar
new documentation
start
asdfasdfadsf
blah
asdfasdf
asdfasdf
revert to last saved version
known bugs
insert bug
press right
type data
press insert
data is lost,..
show all of bottommost node when possible
menu
add real percentages again,.. so I don't have to fake it like I did above on new documentation,..
school
notes from exam cramming,..
paper outlines
...
work
I've removed quite a lot of the stuff I actually keep in my database...
movie manuscripts
one of them made,.. some of them in planning,.
I don't want everybody to see them,..
but it's an actual node in my database
bookmarks
http://hnb.sourceforge.net/
norwegian short film festivals
http://www.kortfilmfestivalen.no/
http://www.minimalen.com/
news
k5
http://www.kuro5hin.org/
slashdot
http://slashdot.org/
nettavisen
http://www.nettavisen.no/
dagbladet
http://www.dagbladet.no/
vg
http://www.vg.no/
fark.com
http://www.fark.com/
quotes
Peoples Front To Reunite Gondwanaland: 'Stop the Laurasian Separatist Movement!'
slashdot
disbelief
To anyone who is still stubborn enough to insist that BlackICE Defender is actually good for something: PLEASE do not write to me. I don't want to hear it. I'm a scientist who will not find your mystic beliefs to be compelling. I respect your right to your own opinions, no matter how blatantly they fly in the face of logic and reality. That is, after all, the nature of faith. Happy computing. I suggest prayer.
the movie zardoz
The gun is good. The penis is evil. The penis shoots seeds, and makes new life, and poisons the earth with a plague of men, as once it was. But the gun shoots death, and purifies the earth of the filth of brutals. Go forth and kill!
old
I keep a 'trashbin' where I stow away outdated entries,.. just to be able to search it,.. and save it later,..