From NetHackWiki
Jump to navigation Jump to search

Around here, Vi (being vee eye, not six) is most notorious as the origin of the use of [hjkl] for movement. Vi, short for VIsual editor, is a classic but controversial text editor for Unix. Vi's main benefit is that it works with any ordinary terminal. The editor doesn't require a desktop environment, thus it can be used via telnet or ssh - much like nethack.

The programmers of vi did not care much about moving the cursor diagonally. The programmers of Rogue (game) adopted the [hjkl] movement system (likely because their keyboards lacked both numeric keypads and separate arrow keys) and added [yubn] for diagonal movement. NetHack adopts this yuhjklbn system.

These days, the one reason that you might need to know "vi" is if you play on or If you telnet in and try to edit your nethackrc, you will find yourself in a vi-like editor called virus. If you aren't comfortable using a vi-like program to edit text, NAO also offers a web-based configuration editor.


Vi has two different modes: one for giving commands to the editor, and one for editing the text. The editor starts out in the command-mode.

Keys Command
i Enter editing mode. (Insert)
a Enter editing mode. (Append)
Esc Return from editing mode back to command-mode.
h, j, k and l Move cursor left, down, up and right
$ Move cursor to the end of line.
^ Move cursor to the beginning of line.
G Move cursor to the end of the file.
:wEnter Save changes to file.
:q!Enter Quit without saving changes.
x Delete the character under the cursor.
dd Delete the line under the cursor.
p Paste deleted text.

You will find vi upon many Unix systems, though some GNU/Linux distros (notably Debian and Gentoo) leave it away from of the core system. To learn about vi in general, you could try to start with H2G2's brief description vi, then move to for commands and tutorials. Wikipedia:Vi reveals the history of Vi, while Wiki:ViEditor explains how to pronounce "vi" and links to comparisons with Emacs. There is also improved version of Vi called Vim.