<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../../general.ent">
  %general-entities;

<!--  <!ENTITY vim-download-http " ">
  <!ENTITY vim-download-ftp  "ftp://ftp.vim.org/pub/vim/unix/vim-&vim-version;.tar.bz2">-->
  <!ENTITY vim-download-http "http://vim.mirror.fr/unix//vim-&vim-version;.tar.bz2">
  <!ENTITY vim-download-ftp  " ">
  <!ENTITY vim-md5sum        "607e135c559be642f210094ad023dc65">
  <!ENTITY vim-size          "9.4 MB">
  <!ENTITY vim-buildsize     "90 MB">
  <!ENTITY vim-time          "1.7 SBU">
]>

<sect1 id="vim" xreflabel="Vim-&vim-version;">
  <?dbhtml filename="vim.html"?>

  <sect1info>
    <othername>$LastChangedBy: bdubbs $</othername>
    <date>$Date: 2015-02-26 23:16:43 -0500 (Thu, 26 Feb 2015) $</date>
  </sect1info>

  <title>Vim-&vim-version;</title>

  <indexterm zone="vim">
    <primary sortas="a-Vim">Vim</primary>
  </indexterm>

  <sect2 role="package">
    <title>Introduction to Vim</title>

    <para>The <application>Vim</application> package, which is an
    abbreviation for VI IMproved, contains a <command>vi</command>
    clone with extra features as compared to the original
    <command>vi</command>.</para>

    <para>The default LFS instructions install <application>vim</application>
    as a part of the base system. If you would prefer to link
    <application>vim</application> against <application>X</application>,
    you should recompile <application>vim</application> to enable GUI mode.
    There is no need for special instructions since
    <application>X</application> support is automatically detected.</para>

    &lfs77_checked;

    <bridgehead renderas="sect3">Package Information</bridgehead>
    <itemizedlist spacing="compact">
      <listitem>
        <para>Download (HTTP): <ulink url="&vim-download-http;"/></para>
      </listitem>
      <listitem>
        <para>Download (FTP): <ulink url="&vim-download-ftp;"/></para>
      </listitem>
      <listitem>
        <para>Download MD5 sum: &vim-md5sum;</para>
      </listitem>
      <listitem>
        <para>Download size: &vim-size;</para>
      </listitem>
      <listitem>
        <para>Estimated disk space required: &vim-buildsize;</para>
      </listitem>
      <listitem>
        <para>Estimated build time: &vim-time;</para>
      </listitem>
    </itemizedlist>

    <bridgehead renderas="sect3">Vim Dependencies</bridgehead>

    <bridgehead renderas="sect4">Recommended</bridgehead>
    <para role="recommended">
      <xref linkend="x-window-system"/> and
      <xref linkend="gtk2"/>
    </para>

    <bridgehead renderas="sect4">Optional</bridgehead>
    <para role="optional">
      <xref linkend="gpm"/>,
      <xref linkend="lua"/>,
      <xref linkend="python2"/>,
      <xref linkend="ruby"/>,
      <xref linkend="tcl"/>, and
      <ulink url="http://sourceforge.net/projects/lesstif/">LessTif</ulink>
    </para>

    <para condition="html" role="usernotes">User Notes:
    <ulink url="&blfs-wiki;/vim"/></para>

  </sect2>

  <sect2 role="installation">
    <title>Installation of Vim</title>

    <note>
      <para>If you recompile <application>Vim</application> to link against
      <application>X</application> and your <application>X</application>
      libraries are not on the root partition, you will no longer have an
      editor for use in emergencies. You may choose to install an additional
      editor, not link <application>Vim</application> against
      <application>X</application>, or move the current <command>vim</command>
      executable to the <filename class="directory">/bin</filename> directory
      under a different name such as <filename>vi</filename>.</para>
    </note>

    <para>Install <application>Vim</application> by running the following
    commands:</para>

<screen><userinput>echo '#define SYS_VIMRC_FILE  "/etc/vimrc"' &gt;&gt;  src/feature.h &amp;&amp;
echo '#define SYS_GVIMRC_FILE "/etc/gvimrc"' &gt;&gt; src/feature.h &amp;&amp;

sed -i 's/luaL_optlong/(long)luaL_optinteger/' src/if_lua.c   &amp;&amp;

./configure --prefix=/usr --with-features=huge                &amp;&amp;
make</userinput></screen>

    <para>To test the results, issue: <command>make test</command>.
    The <application>vim</application> test suite outputs a lot of binary
    data to the screen, which can cause issues with the settings of the
    current terminal. This can be resolved by redirecting the output to a
    log file. Even if one of the tests fails to produce the file
    <filename>test.out</filename> in <filename
    class="directory">src/testdir</filename>, the remaining tests will still
    be executed. If all goes well,the final message in the log file will be
    <literal>ALL DONE</literal>. <emphasis>Note</emphasis>: Some color tests
    expect to be executed under the <command>xterm</command> terminal
    emulator.</para>

    <para>Now, as the <systemitem class="username">root</systemitem> user:</para>

<screen role="root"><userinput>make install</userinput></screen>

    <para>By default, Vim's documentation is installed in <filename
    class="directory">/usr/share/vim</filename>.  The following symlink allows
    the documentation to be accessed via <filename
    class="directory">/usr/share/doc/vim-&vim-version;</filename>, making it
    consistent with the location of documentation for other packages:</para>

<!-- When updating, be sure to change the line below for the proper 'vimxx' unpacked
     directory -->

<screen role="root"><userinput>ln -snfv ../vim/vim74/doc /usr/share/doc/vim-&vim-version;</userinput></screen>

    <para>If you wish to update the runtime files, issue the
    following command (requires <xref linkend="rsync"/>):</para>

<screen><userinput>rsync -avzcP --delete --exclude="/dos/" --exclude="/spell/" \
    ftp.nluug.nl::Vim/runtime/ ./runtime/</userinput></screen>

    <para>To install the runtime files and regenerate the
    <filename>tags</filename> file, as the
    <systemitem class="username">root</systemitem> user issue:</para>

<screen role="root"><userinput>make -C src installruntime &amp;&amp;
vim -c ":helptags /usr/share/doc/vim-&vim-version;" -c ":q"</userinput></screen>

  </sect2>

  <sect2 role="commands">
    <title>Command Explanations</title>

    <para><command>sed -i ... src/if_lua.c</command>: This sed fixes
    compilation with <application>lua</application> 5.3.</para>

    <para><parameter>--with-features=huge</parameter>: This switch enables all
    the additional features available in <application>Vim</application>,
    including support for multibyte characters.</para>

    <para><option>--enable-gui=no</option>: This will prevent compilation of the
    GUI. <application>Vim</application> will still link against
    <application>X</application>, so that some features such as the client-server
    model or the x11-selection (clipboard) are still available.</para>

    <para><option>--without-x</option>: If you prefer not to link
    <application>Vim</application> against <application>X</application>, use
    this switch.</para>

    <para><option>--enable-perlinterp</option>, <option>--enable-pythoninterp</option>,
    <option>--enable-tclinterp</option>, <option>--enable-rubyinterp</option>:
    These options include the Perl, Python, Tcl, or Ruby interpreters that allow
    using other application code in <application>vim</application> scripts.</para>

  </sect2>

  <sect2 role="configuration">
    <title>Configuring Vim</title>

    <sect3 id='vim-config'>
      <title>Config Files</title>

      <para><filename>/etc/vimrc</filename> and
      <filename>~/.vimrc</filename></para>

      <indexterm zone="vim vim-config">
        <primary sortas="e-etc-vimrc">/etc/vimrc</primary>
      </indexterm>

      <indexterm zone="vim vim-config">
        <primary sortas="e-AA.vimrc">~/.vimrc</primary>
      </indexterm>

    </sect3>

    <sect3 id='vim-desktop'>
      <title>Desktop File</title>

      <para>
        If desired, create a menu entry for graphical vim,
        <filename>gvim.desktop</filename>, as the <systemitem
        class="username">root</systemitem> user
      </para>

<screen role="root"><userinput>cat &gt; /usr/share/applications/gvim.desktop &lt;&lt; "EOF"
<literal>[Desktop Entry]
Name=GVim Text Editor
Comment=Edit text files
Comment[pt_BR]=Edite arquivos de texto
TryExec=gvim
Exec=gvim -f %F
Terminal=false
Type=Application
Icon=gvim.png
Categories=Utility;TextEditor;
StartupNotify=true
MimeType=text/plain;</literal>
EOF</userinput></screen>

    </sect3>

    <sect3 id='vim-init'>
      <title>Configuration Information</title>

      <para><application>Vim</application> has an integrated spell checker
      which you can enable it if you issue the following in a vim window:
      </para>

<screen><literal>:setlocal spell spelllang=ru</literal></screen>

      <para>This setting will enable spell checking for the Russian
      language for the current session.</para>

      <para>By default, <application>Vim</application> only installs spell
      files for the English language. If a spell file is not available for
      a language, then <application>Vim</application> will call the
      <filename>$VIMRUNTIME/plugin/spellfile.vim</filename> plugin and will try
      to obtain the *.spl and optionally *.sug from the vim ftp server,
      by using the <filename>$VIMRUNTIME/plugin/netrwPlugin.vim</filename>
      plugin.</para>

<!-- When updating, be sure to change the line below for the proper 'vimxx' unpacked
     directory -->
      <para>Alternatively you can manually download the *.spl and *.sug files
      from: <ulink url="ftp://ftp.vim.org/pub/vim/runtime/spell/"/> and save
      them to <filename class="directory"> ~/.vim/spell </filename> or in
      <filename class="directory">/usr/share/vim/vim74/spell/</filename>.</para>

      <para>To find out what's new in <application>Vim-&vim-version;</application>
      issue the following command:</para>

<screen><literal>:help version-&vim-version;</literal></screen>

      <para>For additional information on setting up
      <application>Vim</application> configuration files, see <xref
      linkend="postlfs-config-vimrc"/> and <ulink
      url='http://vim.wikia.com/wiki/Example_vimrc'/>.</para>

    </sect3>

  </sect2>

  <sect2 role="content">
    <title>Contents</title>

    <para>A list of the reinstalled files, along with their short
    descriptions can be found in the <ulink
    url="&lfs-root;/chapter06/vim.html#contents-vim">LFS Vim Installation
    Instructions</ulink></para>

    <segmentedlist>
      <segtitle>Installed Programs</segtitle>
      <segtitle>Installed Libraries</segtitle>
      <segtitle>Installed Directory</segtitle>

      <seglistitem>
        <seg>gview, gvim, gvimdiff, rgview, and rgvim</seg>
        <seg>None</seg>
        <seg>/usr/share/vim</seg>
      </seglistitem>
    </segmentedlist>

    <variablelist>
      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
      <?dbfo list-presentation="list"?>
      <?dbhtml list-presentation="table"?>

      <varlistentry id="gview">
        <term><command>gview</command></term>
        <listitem>
          <para>starts <command>gvim</command> in read-only mode.</para>
          <indexterm zone="vim gview">
            <primary sortas="b-gview">gview</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="gvim">
        <term><command>gvim</command></term>
        <listitem>
          <para>is the editor that runs under <application>X</application>
          and includes a GUI.</para>
          <indexterm zone="vim gvim">
            <primary sortas="b-gvim">gvim</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="gvimdiff">
        <term><command>gvimdiff</command></term>
        <listitem>
          <para>edits two or three versions of a file with
          <command>gvim</command> and shows the differences.</para>
          <indexterm zone="vim gvimdiff">
            <primary sortas="b-gvimdiff">gvimdiff</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="rgview">
        <term><command>rgview</command></term>
        <listitem>
          <para>is a restricted version of <command>gview</command>.</para>
          <indexterm zone="vim rgview">
            <primary sortas="b-rgview">rgview</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="rgvim">
        <term><command>rgvim</command></term>
        <listitem>
          <para>is a restricted version of <command>gvim</command>. </para>
          <indexterm zone="vim gvim">
            <primary sortas="b-gvim">gvim</primary>
          </indexterm>
        </listitem>
      </varlistentry>

    </variablelist>

  </sect2>

</sect1>
