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