I think (hope) we are done. I have made best effort to incorporate
everyone's thoughts into this document.

If everyone is happy with this draft, I will be giving it to a sponsor for
escalation.

Thanks,
Brian

P.S. - I learned alot during this process, and greatly appreciate the
feedback everyone has given. I also appreciate the assistance putting
together this document in a OpenSolaris.org approved manner.

Proposal VIM v0.6

1.  Introduction and motivation

  The vi editor was developed by Bill Joy, one of the founders of Sun. Vi
  stands for "Visual Interface", as it was the full screen visual interface
  to ex, a line editor that Bill Joy had previously written. At the time
line
  editors were popular do the fact that a majority of terminals were line
  printer terminals.

  For a number of reasons, vi has become one of the most popular non
  graphical editors in the history of computing. Vi has not changed much
  since it was originally released, it still retains a very small memory
  footprint. For this reason, it was included in UNIX SVR4, and has
  shipped with every version of Solaris since the company was founded.

  Vi was only available on systems that had licensed it from AT&T. This
  lead to the development of many vi "clones". These "clones" initially
  were developed to bring vi to alternate platforms, in a form that was
  as close to the features and functionality of the original vi as
possible.

  As time progressed and development continued on these clones, many
  of them surpassed the functionality of the original vi. One of these vi
  clones, named VIM ("Vi IMproved") was designed from the very beginning
  to improve upon the functionality of vi. Today, vim is one of the only
  vi "clones" that is still being developed.

  Vim is generally considered the most modern and advanced version of vi
  available. Because of this it has become the standard version of vi for
  most, if not all, major Linux distributions.

  The motivation behind this proposal to bring Vim to the Solaris
  operating system is to have such a modern version of vi available on all
  Solaris systems. Initially it will coexist with the original vi.
  Eventually it is desirable to deprecate vi, and have vim replace vi as
  the bundled vi editor. Until such time as this is done, any vim files
  that conflict with vi files will not be included in this project. (IE:
  ex, view)

  This project proposes to integrate vim version 7.0 (plus any canonical
  patches available at the time of integration).

2.  Discussion

2.1 Functionality

  Vim is an advanced, open source, text editor that is based on the
controls
  and functionality of vi. Since Bram Moolenaar released vim in 1991, it
has
  gone through many revisions. One of the most significant changes, has
  been the addition of language aware source code editing features. These
  features provide block completion, source highlighting, automatic
  indentation, navigation via code blocks and many other programmer
friendly
  options.

  In addition to the language specific changes, many other features have
  been added. These features include an integrated help system, scripting
  abilities, file comparison functions,  spell checking, undo, redo,
  preservation of state between sessions, remote file editing, editing of
  compressed files, and editing multiple files simultaneously. These are
  just of few of the many improvements vim has made over vi.


2.2 Components

  The basic vim functionality is contained within the executable installed
  in /usr/bin, 'vim'. Vim will be installed with symbolic links for the
  other commands pointing at the main vim binary. Vim is smart enough to
  recognize how to behave depending on what command name that was used to
  launch it. e.g. - restricted mode, "easy" (modeless) mode, diff mode,
  read-only mode, and some combinations of these.  It also acts as ex if
  called as such, but this project does not propose to deliver this link
  until such time as vim can completely replace the System V vi.

  There is also a hex dump/undump utility, xxd, and a script to assist a
  user in running the built-in vim tutorial.

  The complete list of executables and symbolic links is listed in the
  exported interface table.

2.3 Language bindings.

  Vim can be compiled with support for various extension languages besides
  the builtin vimscript.  This project proposes to compile with support for
  perl and python, as those languages are bundled with Solaris.  As
  additional languages are added to Solaris, vim bindings will be updated
to
  match.

  At present, language bindings are built-in to the executable, rather than
  dynamically loaded, forcing a hard dependency on the language packages.
  If and when this changes, this dependency will be removed, allowing for
  further system minimization.

2.3 GUI bindings

  At this stage, we are proposing a relatively simple installation of vim.
  It will be configured without GUI support, as our plans for the future
  include replacing the system vi with vim running in compatibility mode.
  Because vi is, and vim will be, the primary basic system text editor, it
  can not depend on optional packages, like X-Windows, or Gnome.

  Most, if not all, of the major distributions of Linux follow this
  convention, and package gvim separately. These gvim packages install gvim
  into /usr/X11R6/bin. This has been verified for RedHat Fedora, RHEL, SuSE
  Enterprise Linux, Debian, and Ubuntu).

2.4 Documentation

  Vim comes with man pages, but the most significant sets of documentation
  are accessed via vim itself. Within vim typing ":help" will bring up the
  vim help system. Vimtutor is an interactive set of documentation that
  uses the vim engine to allow those accessing this instructive tool to
  practice what they learn as they learn it.

  There are two main sources of additional documentation: SourceForge [1]
  and Vim's [2] home pages.

2.5 Future projects

  We plan to further enhance the integration of Solaris and vim.

   1) Replacing the current version of vi with vim.
   2) Incorporating Dynamic language binding
   3) Making a standalone gvim (GUI vim) package.
   4) Changing Sun Studio's bundled vim to the system vim
   5) Investigate including a "tiny-vim" or "vim-minimal" package.

3. Interfaces

3.1 Imported interfaces

   NAME                      STABILITY            NOTES
   libperl.so 5.8.4          Uncommitted       perl binding
(PSARC/2003/661)
   libpython2.4.so.1         Volatile        python binding
(PSARC/2005/532)

3.1 Exported interfaces Bundled files

   SUNWvim                   Uncommitted          Package name

   /usr/bin/rview            Uncommitted          Symbolic link location
   /usr/bin/rvim             Uncommitted          Symbolic link location
   /usr/bin/vim              Uncommitted          Executable location
   /usr/bin/vimdiff          Uncommitted          Symbolic link location
   /usr/bin/vimtutor         Uncommitted          Symbolic link location
   /usr/bin/xxd              Uncommitted          Executable location
   /usr/share/vim/vim70      Uncommitted          Directory for bundled
                                                  extensions
   /usr/share/vim/vimfiles   Uncommitted          Directory for unbundled
                                                  extensions

4. References

[1] http://vimdoc.sourceforge.net/ SourceForge - Official documentation
   repository
[2] http://www.vim.org/docs.php - VIM documentation homepage, includes many
   links

The following links may be informative to people unfamiliar with vim:

[.] http://vimplugin.sourceforge.net/wiki/pmwiki.php - Eclipse Plugin
[.] http://www.vim.org/ - VIM official homepage
[.] http://freshmeat.net/projects/vim/ - Freshmeat VIM project page

[.] http://en.wikipedia.org/wiki/Vim_text_editor - Wikipedia article
[.] http://tiger.la.asu.edu/Quick_Ref/vimquickref.pdf - Quick reference card
[.] http://www.vmunix.com/vim/util.html - additional utilities that aren't
part
   of vim, but are useful to vim
_______________________________________________
tools-discuss mailing list
tools-discuss@opensolaris.org

Reply via email to