<!DOCTYPE html>
<html dir="ltr" lang="en">
<head>
<meta charset='utf-8'>
<title>Vim</title>
</head>
<body>
<a href="index.html">Tools Index</a>
<h1 id="vim">Vim</h1>
<p><leader> with default configuration is key \, so when
you see <leader>-W means pressing \W</p>
<h2 id="vimrc">1. Vim RC</h2>
<p>Read
<a href="http://dougblack.io/words/a-good-vimrc.htm">"A good vimrc"</a>
for more information.</p>
<dl>
<dt>/usr/share/vim/vimrc</dt>
<dd>System wide Vim initializations.</dd>
<dt>~/.vimrc</dt>
<dd>Your personal Vim initializations.</dd>
</dl>
<p>Copy <a href="conf/etc/skel/.vimrc">/etc/skel/.vimrc</a> skeleton example, so that each user have a base to start
personalizing it;</p>
<pre>
$ sudo cp ~/doc/conf/etc/skel/.vimrc /etc/skel/
$ sudo mkdir /etc/skel/.vim
$ sudo mkdir /etc/skel/.vim/swap
$ sudo mkdir /etc/skel/.vim/views
$ sudo mkdir /etc/skel/.vim/undodir
$ sudo mkdir /etc/skel/.vim/backup
$ wget -O wombat2mod.vim http://www.vim.org/scripts/download_script.php?src_id=40
$ mv wombat2mod.vim /usr/share/vim/colors/
</pre>
<h2 id="color">2. Color schemes</h2>
<p>Default vimrc skeleton is configured to use wombat2mod,
which is installed by adduser skeleton.</p>
<h2 id="split">3. Split and Tab</h2>
<p>Horizontal split;</p>
<pre>
:sp
</pre>
<p>Vertical split;</p>
<pre>
:vsp
</pre>
<p>Change horizontal to vertical</p>
<pre>
ctrl+w H
</pre>
<p>Change vertical to horizontal</p>
<pre>
ctrl+w J
</pre>
<p>Move between window splits;</p>
<pre>
ctrl+w (k,j,l,h)
</pre>
<h2 id="filebrowser">4. File browser</h2>
<p>Use built in netrw to see directories and files;</p>
<dl>
<dt>:Explore</dt>
<dd>Opens window with file browser.</dd>
<dt>:Sex</dt>
<dd>Open horizontal split with file browser.</dd>
<dt>:Vex</dt>
<dd>Open vertical split with file browser.</dd>
</dl>
<p>To find files, run vim at top level of project and then use find auto completion or *;</p>
<pre>
:find nameofdirectory + Tab
:find nameofdir* + Tab
</pre>
<p>For file browsing there is also a option to use edit;</p>
<pre>
:edit nameofdirectory/
</pre>
<h2 id="edit">5. Editing files</h2>
<p>Come from background;</p>
<pre>
$ fg
</pre>
<h3>Moving in vim</h3>
<p>Moving page up and page down;</p>
<dl>
<dt>[Control][b]</dt>
<dd>Move back one full screen</dd>
<dt>[Control][f]</dt>
<dd>Move forward one full screen</dd>
<dt>[Control][d]</dt>
<dd>Move forward 1/2 screen</dd>
<dt>[Control][u]</dt>
<dd>Move back (up) 1/2 screen</dd>
</dl>
<h3>How to use vim</h3>
<p>In vim you can apply predefined number of times to a operator,
selection or object. For example to delete the next
two words press: d + 2 + w. List of important operators objects,
selections;</p>
<pre>
operator + count + object
</pre>
<p>Operator;</p>
<dl>
<dt>d</dt>
<dd>Delete</dd>
<dt>c</dt>
<dd>Change (d + i)</dd>
<dt>y</dt>
<dd>Copy</dd>
<dt>v</dt>
<dd>Visual Select</dd>
</dl>
<p>Objects;</p>
<dl>
<dt>w</dt>
<dd>Word</dd>
<dt>s</dt>
<dd>Sentences</dd>
<dt>p</dt>
<dd>Paragraphs</dd>
<dt>t</dt>
<dd>Tags</dd>
</dl>
<p>Selections are like objects, for example d + i + w
will delete "inner" word, c + a + w do the same plus
the space;</p>
<dl>
<dt>a</dt>
<dd>All</dd>
<dt>i</dt>
<dd>in</dd>
<dt>t</dt>
<dd>Until</dd>
<dt>f</dt>
<dd>Find forward</dd>
<dt>F</dt>
<dd>Find backward</dd>
</dl>
<p>Selection of useful combinations;</p>
<dl>
<dt>vat</dt>
<dd>Select whole tag block.</dd>
<dt>cit</dt>
<dd>Change inside tag.</dd>
<dt>yat</dt>
<dd>Copy whole tag.</dd>
<dt>vip<C-V>$A,<Esc></dt>
<dd>Select a paragraph (vip), switch to visual
block mode (CTRL V), append to all lines ($A) a
comma (,), press esc to confirm.</dd>
<dt>vip<C-V>I,<Esc></dt>
<dd>Select a paragraph (vip), switch to visual
block mode (CTRL V), insert to all lines (I) a
comma (,), press esc to confirm.</dd>
</dl>
<h2 id="ctags">6. Tags</h2>
<p>Tags, at top level of project;</p>
<pre>
$ ctags -R .
$ vim src/hello_world.c
</pre>
<p>To follow a tag;</p>
<pre>
Ctrl-]
</pre>
<p>To get back;</p>
<pre>
Ctrl-t
</pre>
<p>Autocomplete, press to see all options;</p>
<pre>
Ctrl-n
</pre>
<p>To move forward and backward in options;</p>
<pre>
Ctrl-n Ctrl-p
</pre>
<p>Show auto completion with references to only this file;</p>
<pre>
Ctrl-x Ctrl-n
</pre>
<p>Show auto completion with filenames, * Tab can be used;</p>
<pre>
Ctrl-x Ctrl-f
</pre>
<p>Show auto completion with only tags;</p>
<pre>
Ctrl-x Ctrl-]
</pre>
<h2 id="spellcheck">7. Spellcheck</h2>
<p>Press z= over the bad written word and select desired one.</p>
<h2 id="plugin">8. Plugins</h2>
<h2 id="vimdiff">9. Vimdiff</h2>
<p>If two files are open in <a href="#split">split</a> type :diffthis in both windows to get vimdiff of the files. To close type :diffoff.</p>
<dl>
<dt>do<dt>
<dd> Get changes from other window into the current window.</dd>
<dt>dp</dt>
<dd>Put the changes from current window into the other window.</dd>
<dt>]c</dt>
<dd>Jump to the next change.</dd>
<dt>[c</dt>
<dd>Jump to the previous change.</dd>
<dt>Ctrl W + Ctrl W</dt>
<dd>Switch to the other split window.</dd>
</dl>
<a href="index.html">Tools Index</a>
<p>This is part of the LeetIO System Documentation.
Copyright (C) 2021
LeetIO Team.
See the file <a href="../fdl-1.3-standalone.html">Gnu Free Documentation License</a>
for copying conditions.</p>
</body>
</html>