xref: /openbsd-src/usr.bin/vi/docs/features (revision 32ceefb121bf4d0eb50a7b705362ce62743b46d0)
1df930be7SderaadtList of things that should be added:
2df930be7Sderaadt=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3df930be7Sderaadt
4df930be7Sderaadt+ X11 (Tk, Motif, Xaw) interface.
5*32ceefb1Sdownsj+ Interpreted language (Perl, Scheme, Tcl/Rush, Python)
645f2ab88Sderaadt+ Additional ports: Windows, Windows NT, MSDOS
7df930be7Sderaadt+ Forms editing package; use RE's to verify field contents.
845f2ab88Sderaadt+ Internationalization, including wide character and multibyte support.
9df930be7Sderaadt+ Support for single line window editing, including full editing
10df930be7Sderaadt  capability on the vi colon command line.
11df930be7Sderaadt+ Rob Pike's sam style RE's.
1245f2ab88Sderaadt+ Right-to-left and bottom to top text support.
1345f2ab88Sderaadt+ Quitall command, to leave all windows.  A ! will force the quit.
14df930be7Sderaadt
15df930be7SderaadtList of suggested features:
16df930be7Sderaadt=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
17e91eb1deSmickey+ It would be nice to have the completion mechanism found in tcsh versions
18e91eb1deSmickey  >= 6.03.  For instance, the completion for the `:cd' command will be
19e91eb1deSmickey  directories only.  The completion for the `:set' command will be all
20e91eb1deSmickey  options not set at that moment, and for `:set un' will be all options
21e91eb1deSmickey  that are set at that moment.  The completion for `:< count' will be the
22e91eb1deSmickey  flags.
2345f2ab88Sderaadt
24e91eb1deSmickey+ Add an command-line option to initially split the screen based on the
25e91eb1deSmickey  number of file arguments, e.g., "nvi -a file1 file2" would initialize
26e91eb1deSmickey  a two edit-buffer display.
27df930be7Sderaadt
28df930be7Sderaadt+ Add a "push" command that would push a file on the tags stack.
29df930be7Sderaadt  (Essentially make tags a special case of the stack, and make
30df930be7Sderaadt  the stack more general purpose.)
31df930be7Sderaadt
32df930be7Sderaadt+ Make :script just run a command and edit the output, and :interactive,
33df930be7Sderaadt  which allows interactive shell session, instead of just the current
34df930be7Sderaadt  :script.
35df930be7Sderaadt
36df930be7Sderaadt+ Add tagging information to the man page so that users can display
37df930be7Sderaadt  the part of the man page that discusses the command in which they're
38df930be7Sderaadt  interested.
39df930be7Sderaadt
40df930be7Sderaadt+ Add a zone option so that you can declare that top/bottom few lines
41df930be7Sderaadt  of the screen aren't filled except by accident, so that the text
42df930be7Sderaadt  you ask for is always concentrated in the center of the screen.
43df930be7Sderaadt
44df930be7Sderaadt+ Change
45df930be7Sderaadt	:di[splay] tags		-> :tags
46df930be7Sderaadt	:di[splay] screens	-> :screens
47df930be7Sderaadt	:di[splay] buffers	-> :buffers
48df930be7Sderaadt
49df930be7Sderaadt+ A macro record function.  Add the ability to record a sequence
50df930be7Sderaadt  of keystrokes into a named buffer for later use.  Handy when
51df930be7Sderaadt  you're trying to build a semi-complex macro.
52df930be7Sderaadt
53df930be7Sderaadt+ The semantics of :split, :bg, and :fg aren't right.  Someone needs to
54df930be7Sderaadt  rethink how they should interact.  The main problem arises when users
55df930be7Sderaadt  want to get a window into a new file.  Currently, the necessary sequence
56df930be7Sderaadt  is  ":split newfile|^W|:bg".  It would be nice if you could simply
57df930be7Sderaadt  background the current screen and edit a new one.
58df930be7Sderaadt
59df930be7Sderaadt+ An option to turn on a ``quarter plane'' model so that you can
60df930be7Sderaadt  go as far to the right or down as you wish.  The File or the
61df930be7Sderaadt  current line is only extended if you actually put down a char at
62df930be7Sderaadt  the new location.  Very handy for ascii graphics and tables.
63df930be7Sderaadt
64df930be7Sderaadt+ Some way of replacing the command bindings.  For this to work
65df930be7Sderaadt  cleanly the notion of a command must be separate from that of a
66df930be7Sderaadt  key.  (Simulate the Rand editor?)
67df930be7Sderaadt
68df930be7Sderaadt+ Vertical splitting, so you can see files side by side.
69df930be7Sderaadt
70df930be7Sderaadt+ Tracking.  Two or more files are associated so that when one file
71df930be7Sderaadt  is scrolled up/down/left/right other files track by the same amount.
72df930be7Sderaadt  Tracking may be constrained such that two files only track vertically
73df930be7Sderaadt  or horizontally.  This is relatively easy to implement.
74df930be7Sderaadt
75df930be7Sderaadt+ A status file so that the next time invocation of the editor returns
76df930be7Sderaadt  to the same place, with the same number of windows etc.  In case of
77df930be7Sderaadt  change of the screen size, reasonable defaults are used.  For each
78df930be7Sderaadt  window size and location of the window, name of the file and position
79df930be7Sderaadt  in it, any tab settings, any other settings for the window (such as
80df930be7Sderaadt  insert/overwrite mode, auto indent etc).  Last search RE and maybe
81df930be7Sderaadt  direction.  If a file does not exist the next time you invoke the
82df930be7Sderaadt  editor, its window is left in the same place but with some default
83df930be7Sderaadt  message.
84