about summary refs log tree commit diff stats
path: root/tools/vim.html
blob: b76c1115af510e804a2d4167a039ec1cf9fd7bf9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
<!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="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&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 Tribu System Documentation.
        Copyright (C) 2020
        Tribu Team.
        See the file <a href="../fdl-1.3-standalone.html">Gnu Free Documentation License</a>
        for copying conditions.</p>

    </body>
</html>