about summary refs log blame commit diff stats
path: root/tools/vim.html
blob: 1721749b7788ba7949900feda0942817e3c22ece (plain) (tree)
1
2
3
4
5
6
7
8
9



                              
                          


           
                                            
                             



                                                                      
                                     











                                                                               
                                                                                                                                 


                             
                                                            




                                           

                                                                                          

              
                                            
 
                                                                  

                                                   
                                            
 






                                










                                            


                                          
 


                        
 












                                                               










                                                                                                     
              
 
                                           



























                                                                         

















































                                                             
                                            
                        
                                       

                                    







                                                           

             



















































                                                                      


                                                                         
                                       
 
                                        







                                                                                                                                                      
                   
                                         



                                                  

             
                                            


                                                           




                                                                                            
<!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>&lt;leader&gt; with default configuration is key \, so when
        you see &lt;leader&gt;-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="../linux/conf/skel/.vimrc">/etc/skel/.vimrc</a> skeleton example, so that each user have a base to start
        personalizing it;</p>

        <pre>
        $ sudo cp ~/doc/../linux/conf/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&lt;C-V&gt;I,&lt;Esc&gt;</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>