annotate runtime/doc/tips.txt @ 23911:30e3a7a33b66 v8.2.2498

patch 8.2.2498: no test for what 8.2.2494 fixes Commit: https://github.com/vim/vim/commit/5affc034680a95eabfbfca763bedf86ae0a79c44 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Feb 11 18:36:30 2021 +0100 patch 8.2.2498: no test for what 8.2.2494 fixes Problem: No test for what 8.2.2494 fixes. Solution: Add a simple change to test the fix. (closes https://github.com/vim/vim/issues/7818)
author Bram Moolenaar <Bram@vim.org>
date Thu, 11 Feb 2021 18:45:03 +0100
parents 15fa3923cc49
children babd9f1dbe12
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23466
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
1 *tips.txt* For Vim version 8.2. Last change: 2020 Dec 29
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4 VIM REFERENCE MANUAL by Bram Moolenaar
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7 Tips and ideas for using Vim *tips*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8
2033
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
9 These are just a few that we thought would be helpful for many users.
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
10 You can find many more tips on the wiki. The URL can be found on
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
11 http://www.vim.org
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
12
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
13 Don't forget to browse the user manual, it also contains lots of useful tips
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
14 |usr_toc.txt|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
15
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
16 Editing C programs |C-editing|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
17 Finding where identifiers are used |ident-search|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
18 Switching screens in an xterm |xterm-screens|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
19 Scrolling in Insert mode |scroll-insert|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
20 Smooth scrolling |scroll-smooth|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
21 Correcting common typing mistakes |type-mistakes|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
22 Counting words, lines, etc. |count-items|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
23 Restoring the cursor position |restore-position|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
24 Renaming files |rename-files|
2033
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
25 Change a name in multiple files |change-name|
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
26 Speeding up external commands |speed-up|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
27 Useful mappings |useful-mappings|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
28 Compressing the help files |gzip-helpfile|
2033
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
29 Executing shell commands in a window |shell-window|
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30 Hex editing |hex-editing|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
31 Using <> notation in autocommands |autocmd-<>|
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
32 Highlighting matching parens |match-parens|
23466
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
33 Opening help in the current window |help-curwin|
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
34
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
35 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
36 Editing C programs *C-editing*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
37
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
38 There are quite a few features in Vim to help you edit C program files. Here
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
39 is an overview with tags to jump to:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
40
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
41 |usr_29.txt| Moving through programs chapter in the user manual.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
42 |usr_30.txt| Editing programs chapter in the user manual.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
43 |C-indenting| Automatically set the indent of a line while typing
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
44 text.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
45 |=| Re-indent a few lines.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
46 |format-comments| Format comments.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
47
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
48 |:checkpath| Show all recursively included files.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
49 |[i| Search for identifier under cursor in current and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
50 included files.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
51 |[_CTRL-I| Jump to match for "[i"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
52 |[I| List all lines in current and included files where
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
53 identifier under the cursor matches.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
54 |[d| Search for define under cursor in current and included
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
55 files.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
56
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
57 |CTRL-]| Jump to tag under cursor (e.g., definition of a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
58 function).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
59 |CTRL-T| Jump back to before a CTRL-] command.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
60 |:tselect| Select one tag out of a list of matching tags.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
61
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
62 |gd| Go to Declaration of local variable under cursor.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
63 |gD| Go to Declaration of global variable under cursor.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
64
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
65 |gf| Go to file name under the cursor.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
66
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
67 |%| Go to matching (), {}, [], /* */, #if, #else, #endif.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
68 |[/| Go to previous start of comment.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
69 |]/| Go to next end of comment.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
70 |[#| Go back to unclosed #if, #ifdef, or #else.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
71 |]#| Go forward to unclosed #else or #endif.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
72 |[(| Go back to unclosed '('
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
73 |])| Go forward to unclosed ')'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
74 |[{| Go back to unclosed '{'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
75 |]}| Go forward to unclosed '}'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
76
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
77 |v_ab| Select "a block" from "[(" to "])", including braces
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
78 |v_ib| Select "inner block" from "[(" to "])"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
79 |v_aB| Select "a block" from "[{" to "]}", including brackets
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
80 |v_iB| Select "inner block" from "[{" to "]}"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
81
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
82 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
83 Finding where identifiers are used *ident-search*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
84
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
85 You probably already know that |tags| can be used to jump to the place where a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
86 function or variable is defined. But sometimes you wish you could jump to all
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
87 the places where a function or variable is being used. This is possible in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
88 two ways:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
89 1. Using the |:grep| command. This should work on most Unix systems,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
90 but can be slow (it reads all files) and only searches in one directory.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
91 2. Using ID utils. This is fast and works in multiple directories. It uses a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
92 database to store locations. You will need some additional programs for
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
93 this to work. And you need to keep the database up to date.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
94
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
95 Using the GNU id-tools:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
96
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
97 What you need:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
98 - The GNU id-tools installed (mkid is needed to create ID and lid is needed to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
99 use the macros).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
100 - An identifier database file called "ID" in the current directory. You can
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
101 create it with the shell command "mkid file1 file2 ..".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
102
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
103 Put this in your .vimrc: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
104 map _u :call ID_search()<Bar>execute "/\\<" . g:word . "\\>"<CR>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
105 map _n :n<Bar>execute "/\\<" . g:word . "\\>"<CR>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
106
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
107 function! ID_search()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
108 let g:word = expand("<cword>")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
109 let x = system("lid --key=none ". g:word)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
110 let x = substitute(x, "\n", " ", "g")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
111 execute "next " . x
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
112 endfun
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
113
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
114 To use it, place the cursor on a word, type "_u" and vim will load the file
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
115 that contains the word. Search for the next occurrence of the word in the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
116 same file with "n". Go to the next file with "_n".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
117
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
118 This has been tested with id-utils-3.2 (which is the name of the id-tools
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
119 archive file on your closest gnu-ftp-mirror).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
120
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
121 [the idea for this comes from Andreas Kutschera]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
122
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
123 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
124 Switching screens in an xterm *xterm-screens* *xterm-save-screen*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
125
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
126 (From comp.editors, by Juergen Weigert, in reply to a question)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
127
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
128 :> Another question is that after exiting vim, the screen is left as it
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
129 :> was, i.e. the contents of the file I was viewing (editing) was left on
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
130 :> the screen. The output from my previous like "ls" were lost,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
131 :> ie. no longer in the scrolling buffer. I know that there is a way to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
132 :> restore the screen after exiting vim or other vi like editors,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
133 :> I just don't know how. Helps are appreciated. Thanks.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
134 :
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
135 :I imagine someone else can answer this. I assume though that vim and vi do
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
136 :the same thing as each other for a given xterm setup.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
137
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
138 They not necessarily do the same thing, as this may be a termcap vs.
236
4707450c2b33 updated for version 7.0066
vimboss
parents: 170
diff changeset
139 terminfo problem. You should be aware that there are two databases for
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
140 describing attributes of a particular type of terminal: termcap and
236
4707450c2b33 updated for version 7.0066
vimboss
parents: 170
diff changeset
141 terminfo. This can cause differences when the entries differ AND when of
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
142 the programs in question one uses terminfo and the other uses termcap
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
143 (also see |+terminfo|).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
144
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
145 In your particular problem, you are looking for the control sequences
236
4707450c2b33 updated for version 7.0066
vimboss
parents: 170
diff changeset
146 ^[[?47h and ^[[?47l. These switch between xterms alternate and main screen
4707450c2b33 updated for version 7.0066
vimboss
parents: 170
diff changeset
147 buffer. As a quick workaround a command sequence like >
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
148 echo -n "^[[?47h"; vim ... ; echo -n "^[[?47l"
236
4707450c2b33 updated for version 7.0066
vimboss
parents: 170
diff changeset
149 may do what you want. (My notation ^[ means the ESC character, further down
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
150 you'll see that the databases use \E instead).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
151
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
152 On startup, vim echoes the value of the termcap variable ti (terminfo:
236
4707450c2b33 updated for version 7.0066
vimboss
parents: 170
diff changeset
153 smcup) to the terminal. When exiting, it echoes te (terminfo: rmcup). Thus
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
154 these two variables are the correct place where the above mentioned control
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
155 sequences should go.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
156
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
157 Compare your xterm termcap entry (found in /etc/termcap) with your xterm
1121
e63691e7c504 updated for version 7.1a
vimboss
parents: 874
diff changeset
158 terminfo entry (retrieved with "infocmp -C xterm"). Both should contain
e63691e7c504 updated for version 7.1a
vimboss
parents: 874
diff changeset
159 entries similar to: >
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
160 :te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
161
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
162 PS: If you find any difference, someone (your sysadmin?) should better check
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
163 the complete termcap and terminfo database for consistency.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
164
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
165 NOTE 1: If you recompile Vim with FEAT_XTERM_SAVE defined in feature.h, the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
166 builtin xterm will include the mentioned "te" and "ti" entries.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
167
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
168 NOTE 2: If you want to disable the screen switching, and you don't want to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
169 change your termcap, you can add these lines to your .vimrc: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
170 :set t_ti= t_te=
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
171
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
172 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
173 Scrolling in Insert mode *scroll-insert*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
174
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
175 If you are in insert mode and you want to see something that is just off the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
176 screen, you can use CTRL-X CTRL-E and CTRL-X CTRL-Y to scroll the screen.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
177 |i_CTRL-X_CTRL-E|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
178
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
179 To make this easier, you could use these mappings: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
180 :inoremap <C-E> <C-X><C-E>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
181 :inoremap <C-Y> <C-X><C-Y>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
182 (Type this literally, make sure the '<' flag is not in 'cpoptions').
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
183 You then lose the ability to copy text from the line above/below the cursor
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
184 |i_CTRL-E|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
185
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
186 Also consider setting 'scrolloff' to a larger value, so that you can always see
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
187 some context around the cursor. If 'scrolloff' is bigger than half the window
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
188 height, the cursor will always be in the middle and the text is scrolled when
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
189 the cursor is moved up/down.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
190
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
191 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
192 Smooth scrolling *scroll-smooth*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
193
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
194 If you like the scrolling to go a bit smoother, you can use these mappings: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
195 :map <C-U> <C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
196 :map <C-D> <C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
197
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
198 (Type this literally, make sure the '<' flag is not in 'cpoptions').
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
199
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
200 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
201 Correcting common typing mistakes *type-mistakes*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
202
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
203 When there are a few words that you keep on typing in the wrong way, make
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
204 abbreviations that correct them. For example: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
205 :ab teh the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
206 :ab fro for
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
207
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
208 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
209 Counting words, lines, etc. *count-items*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
210
170
8c60f65311fa updated for version 7.0052
vimboss
parents: 7
diff changeset
211 To count how often any pattern occurs in the current buffer use the substitute
8c60f65311fa updated for version 7.0052
vimboss
parents: 7
diff changeset
212 command and add the 'n' flag to avoid the substitution. The reported number
8c60f65311fa updated for version 7.0052
vimboss
parents: 7
diff changeset
213 of substitutions is the number of items. Examples: >
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
214
170
8c60f65311fa updated for version 7.0052
vimboss
parents: 7
diff changeset
215 :%s/./&/gn characters
8c60f65311fa updated for version 7.0052
vimboss
parents: 7
diff changeset
216 :%s/\i\+/&/gn words
8c60f65311fa updated for version 7.0052
vimboss
parents: 7
diff changeset
217 :%s/^//n lines
8c60f65311fa updated for version 7.0052
vimboss
parents: 7
diff changeset
218 :%s/the/&/gn "the" anywhere
8c60f65311fa updated for version 7.0052
vimboss
parents: 7
diff changeset
219 :%s/\<the\>/&/gn "the" as a word
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
220
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
221 You might want to reset 'hlsearch' or do ":nohlsearch".
170
8c60f65311fa updated for version 7.0052
vimboss
parents: 7
diff changeset
222 Add the 'e' flag if you don't want an error when there are no matches.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
223
170
8c60f65311fa updated for version 7.0052
vimboss
parents: 7
diff changeset
224 An alternative is using |v_g_CTRL-G| in Visual mode.
8c60f65311fa updated for version 7.0052
vimboss
parents: 7
diff changeset
225
8c60f65311fa updated for version 7.0052
vimboss
parents: 7
diff changeset
226 If you want to find matches in multiple files use |:vimgrep|.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
227
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
228 *count-bytes*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
229 If you want to count bytes, you can use this:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
230
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
231 Visually select the characters (block is also possible)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
232 Use "y" to yank the characters
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
233 Use the strlen() function: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
234 :echo strlen(@")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
235 A line break is counted for one byte.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
236
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
237 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
238 Restoring the cursor position *restore-position*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
239
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
240 Sometimes you want to write a mapping that makes a change somewhere in the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
241 file and restores the cursor position, without scrolling the text. For
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
242 example, to change the date mark in a file: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
243 :map <F2> msHmtgg/Last [cC]hange:\s*/e+1<CR>"_D"=strftime("%Y %b %d")<CR>p'tzt`s
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
244
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
245 Breaking up saving the position:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
246 ms store cursor position in the 's' mark
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
247 H go to the first line in the window
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
248 mt store this position in the 't' mark
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
249
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
250 Breaking up restoring the position:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
251 't go to the line previously at the top of the window
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
252 zt scroll to move this line to the top of the window
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
253 `s jump to the original position of the cursor
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
254
2033
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
255 For something more advanced see |winsaveview()| and |winrestview()|.
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
256
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
257 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
258 Renaming files *rename-files*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
259
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
260 Say I have a directory with the following files in them (directory picked at
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
261 random :-):
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
262
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
263 buffer.c
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
264 charset.c
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
265 digraph.c
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
266 ...
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
267
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
268 and I want to rename *.c *.bla. I'd do it like this: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
269
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
270 $ vim
246
c8fd241d3cdd updated for version 7.0068
vimboss
parents: 236
diff changeset
271 :r !ls *.c
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
272 :%s/\(.*\).c/mv & \1.bla
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
273 :w !sh
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
274 :q!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
275
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
276 ==============================================================================
2033
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
277 Change a name in multiple files *change-name*
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
278
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
279 Example for using a script file to change a name in several files:
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
280
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
281 Create a file "subs.vim" containing substitute commands and a :update
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
282 command: >
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
283 :%s/Jones/Smith/g
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
284 :%s/Allen/Peter/g
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
285 :update
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
286 <
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
287 Execute Vim on all files you want to change, and source the script for
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
288 each argument: >
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
289
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
290 vim *.let
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
291 argdo source subs.vim
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
292
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
293 See |:argdo|.
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
294
de5a43c5eedc Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents: 1702
diff changeset
295 ==============================================================================
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
296 Speeding up external commands *speed-up*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
297
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
298 In some situations, execution of an external command can be very slow. This
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
299 can also slow down wildcard expansion on Unix. Here are a few suggestions to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
300 increase the speed.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
301
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
302 If your .cshrc (or other file, depending on the shell used) is very long, you
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
303 should separate it into a section for interactive use and a section for
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
304 non-interactive use (often called secondary shells). When you execute a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
305 command from Vim like ":!ls", you do not need the interactive things (for
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
306 example, setting the prompt). Put the stuff that is not needed after these
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
307 lines: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
308
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
309 if ($?prompt == 0) then
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
310 exit 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
311 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
312
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
313 Another way is to include the "-f" flag in the 'shell' option, e.g.: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
314
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
315 :set shell=csh\ -f
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
316
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
317 (the backslash is needed to include the space in the option).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
318 This will make csh completely skip the use of the .cshrc file. This may cause
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
319 some things to stop working though.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
320
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
321 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
322 Useful mappings *useful-mappings*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
323
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
324 Here are a few mappings that some people like to use.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
325
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
326 *map-backtick* >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
327 :map ' `
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
328 Make the single quote work like a backtick. Puts the cursor on the column of
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
329 a mark, instead of going to the first non-blank character in the line.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
330
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
331 *emacs-keys*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
332 For Emacs-style editing on the command-line: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
333 " start of line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
334 :cnoremap <C-A> <Home>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
335 " back one character
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
336 :cnoremap <C-B> <Left>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
337 " delete character under cursor
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
338 :cnoremap <C-D> <Del>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
339 " end of line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
340 :cnoremap <C-E> <End>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
341 " forward one character
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
342 :cnoremap <C-F> <Right>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
343 " recall newer command-line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
344 :cnoremap <C-N> <Down>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
345 " recall previous (older) command-line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
346 :cnoremap <C-P> <Up>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
347 " back one word
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
348 :cnoremap <Esc><C-B> <S-Left>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
349 " forward one word
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
350 :cnoremap <Esc><C-F> <S-Right>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
351
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
352 NOTE: This requires that the '<' flag is excluded from 'cpoptions'. |<>|
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
353
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
354 *format-bullet-list*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
355 This mapping will format any bullet list. It requires that there is an empty
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
356 line above and below each list entry. The expression commands are used to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
357 be able to give comments to the parts of the mapping. >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
358
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
359 :let m = ":map _f :set ai<CR>" " need 'autoindent' set
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
360 :let m = m . "{O<Esc>" " add empty line above item
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
361 :let m = m . "}{)^W" " move to text after bullet
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
362 :let m = m . "i <CR> <Esc>" " add space for indent
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
363 :let m = m . "gq}" " format text after the bullet
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
364 :let m = m . "{dd" " remove the empty line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
365 :let m = m . "5lDJ" " put text after bullet
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
366 :execute m |" define the mapping
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
367
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
368 (<> notation |<>|. Note that this is all typed literally. ^W is "^" "W", not
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
369 CTRL-W. You can copy/paste this into Vim if '<' is not included in
236
4707450c2b33 updated for version 7.0066
vimboss
parents: 170
diff changeset
370 'cpoptions'.)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
371
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
372 Note that the last comment starts with |", because the ":execute" command
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
373 doesn't accept a comment directly.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
374
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
375 You also need to set 'textwidth' to a non-zero value, e.g., >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
376 :set tw=70
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
377
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
378 A mapping that does about the same, but takes the indent for the list from the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
379 first line (Note: this mapping is a single long line with a lot of spaces): >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
380 :map _f :set ai<CR>}{a <Esc>WWmmkD`mi<CR><Esc>kkddpJgq}'mJO<Esc>j
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
381 <
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
382 *collapse*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
383 These two mappings reduce a sequence of empty (;b) or blank (;n) lines into a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
384 single line >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
385 :map ;b GoZ<Esc>:g/^$/.,/./-j<CR>Gdd
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
386 :map ;n GoZ<Esc>:g/^[ <Tab>]*$/.,/[^ <Tab>]/-j<CR>Gdd
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
387
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
388 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
389 Compressing the help files *gzip-helpfile*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
390
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
391 For those of you who are really short on disk space, you can compress the help
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
392 files and still be able to view them with Vim. This makes accessing the help
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
393 files a bit slower and requires the "gzip" program.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
394
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
395 (1) Compress all the help files: "gzip doc/*.txt".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
396
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
397 (2) Edit "doc/tags" and change the ".txt" to ".txt.gz": >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
398 :%s=\(\t.*\.txt\)\t=\1.gz\t=
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
399
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
400 (3) Add this line to your vimrc: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
401 set helpfile={dirname}/help.txt.gz
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
402
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
403 Where {dirname} is the directory where the help files are. The |gzip| plugin
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
404 will take care of decompressing the files.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
405 You must make sure that $VIMRUNTIME is set to where the other Vim files are,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
406 when they are not in the same location as the compressed "doc" directory. See
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
407 |$VIMRUNTIME|.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
408
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
409 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
410 Executing shell commands in a window *shell-window*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
411
14249
4543777545a3 Updated runtime and language files.
Christian Brabandt <cb@256bit.org>
parents: 13963
diff changeset
412 See |terminal|.
4543777545a3 Updated runtime and language files.
Christian Brabandt <cb@256bit.org>
parents: 13963
diff changeset
413
4543777545a3 Updated runtime and language files.
Christian Brabandt <cb@256bit.org>
parents: 13963
diff changeset
414 Another solution is splitting your terminal screen or display window with the
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
415 "splitvt" program. You can probably find it on some ftp server. The person
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
416 that knows more about this is Sam Lantinga <slouken@cs.ucdavis.edu>.
14249
4543777545a3 Updated runtime and language files.
Christian Brabandt <cb@256bit.org>
parents: 13963
diff changeset
417
4543777545a3 Updated runtime and language files.
Christian Brabandt <cb@256bit.org>
parents: 13963
diff changeset
418 Another alternative is the "window" command, found on BSD Unix systems, which
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
419 supports multiple overlapped windows. Or the "screen" program, found at
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
420 www.uni-erlangen.de, which supports a stack of windows.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
421
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
422 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
423 Hex editing *hex-editing* *using-xxd*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
424
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
425 See section |23.4| of the user manual.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
426
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
427 If one has a particular extension that one uses for binary files (such as exe,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
428 bin, etc), you may find it helpful to automate the process with the following
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
429 bit of autocmds for your <.vimrc>. Change that "*.bin" to whatever
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
430 comma-separated list of extension(s) you find yourself wanting to edit: >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
431
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
432 " vim -b : edit binary using xxd-format!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
433 augroup Binary
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
434 au!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
435 au BufReadPre *.bin let &bin=1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
436 au BufReadPost *.bin if &bin | %!xxd
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
437 au BufReadPost *.bin set ft=xxd | endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
438 au BufWritePre *.bin if &bin | %!xxd -r
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
439 au BufWritePre *.bin endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
440 au BufWritePost *.bin if &bin | %!xxd
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
441 au BufWritePost *.bin set nomod | endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
442 augroup END
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
443
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
444 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
445 Using <> notation in autocommands *autocmd-<>*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
446
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
447 The <> notation is not recognized in the argument of an :autocmd. To avoid
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
448 having to use special characters, you could use a self-destroying mapping to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
449 get the <> notation and then call the mapping from the autocmd. Example:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
450
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
451 *map-self-destroy* >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
452 " This is for automatically adding the name of the file to the menu list.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
453 " It uses a self-destroying mapping!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
454 " 1. use a line in the buffer to convert the 'dots' in the file name to \.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
455 " 2. store that in register '"'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
456 " 3. add that name to the Buffers menu list
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
457 " WARNING: this does have some side effects, like overwriting the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
458 " current register contents and removing any mapping for the "i" command.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
459 "
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
460 autocmd BufNewFile,BufReadPre * nmap i :nunmap i<CR>O<C-R>%<Esc>:.g/\./s/\./\\./g<CR>0"9y$u:menu Buffers.<C-R>9 :buffer <C-R>%<C-V><CR><CR>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
461 autocmd BufNewFile,BufReadPre * normal i
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
462
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
463 Another method, perhaps better, is to use the ":execute" command. In the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
464 string you can use the <> notation by preceding it with a backslash. Don't
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
465 forget to double the number of existing backslashes and put a backslash before
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
466 '"'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
467 >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
468 autocmd BufNewFile,BufReadPre * exe "normal O\<C-R>%\<Esc>:.g/\\./s/\\./\\\\./g\<CR>0\"9y$u:menu Buffers.\<C-R>9 :buffer \<C-R>%\<C-V>\<CR>\<CR>"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
469
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
470 For a real buffer menu, user functions should be used (see |:function|), but
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
471 then the <> notation isn't used, which defeats using it as an example here.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
472
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
473 ==============================================================================
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
474 Highlighting matching parens *match-parens*
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
475
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
476 This example shows the use of a few advanced tricks:
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
477 - using the |CursorMoved| autocommand event
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
478 - using |searchpairpos()| to find a matching paren
674
4b8583e82cb8 updated for version 7.0201
vimboss
parents: 671
diff changeset
479 - using |synID()| to detect whether the cursor is in a string or comment
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
480 - using |:match| to highlight something
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
481 - using a |pattern| to match a specific position in the file.
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
482
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
483 This should be put in a Vim script file, since it uses script-local variables.
674
4b8583e82cb8 updated for version 7.0201
vimboss
parents: 671
diff changeset
484 It skips matches in strings or comments, unless the cursor started in string
4b8583e82cb8 updated for version 7.0201
vimboss
parents: 671
diff changeset
485 or comment. This requires syntax highlighting.
699
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 674
diff changeset
486
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 674
diff changeset
487 A slightly more advanced version is used in the |matchparen| plugin.
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
488 >
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
489 let s:paren_hl_on = 0
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
490 function s:Highlight_Matching_Paren()
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
491 if s:paren_hl_on
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
492 match none
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
493 let s:paren_hl_on = 0
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
494 endif
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
495
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
496 let c_lnum = line('.')
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
497 let c_col = col('.')
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
498
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
499 let c = getline(c_lnum)[c_col - 1]
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
500 let plist = split(&matchpairs, ':\|,')
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
501 let i = index(plist, c)
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
502 if i < 0
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
503 return
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
504 endif
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
505 if i % 2 == 0
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
506 let s_flags = 'nW'
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
507 let c2 = plist[i + 1]
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
508 else
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
509 let s_flags = 'nbW'
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
510 let c2 = c
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
511 let c = plist[i - 1]
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
512 endif
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
513 if c == '['
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
514 let c = '\['
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
515 let c2 = '\]'
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
516 endif
674
4b8583e82cb8 updated for version 7.0201
vimboss
parents: 671
diff changeset
517 let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' .
856
8cd729851562 updated for version 7.0g
vimboss
parents: 842
diff changeset
518 \ '=~? "string\\|comment"'
8cd729851562 updated for version 7.0g
vimboss
parents: 842
diff changeset
519 execute 'if' s_skip '| let s_skip = 0 | endif'
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
520
674
4b8583e82cb8 updated for version 7.0201
vimboss
parents: 671
diff changeset
521 let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip)
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
522
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
523 if m_lnum > 0 && m_lnum >= line('w0') && m_lnum <= line('w$')
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
524 exe 'match Search /\(\%' . c_lnum . 'l\%' . c_col .
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
525 \ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/'
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
526 let s:paren_hl_on = 1
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
527 endif
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
528 endfunction
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
529
671
83a006f81bac updated for version 7.0199
vimboss
parents: 667
diff changeset
530 autocmd CursorMoved,CursorMovedI * call s:Highlight_Matching_Paren()
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
531 autocmd InsertEnter * match none
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
532 <
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
533
23466
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
534 ==============================================================================
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
535 Opening help in the current window *help-curwin*
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
536
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
537 By default, help is displayed in a split window. If you prefer it opens in
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
538 the current window, try this custom `:HelpCurwin` command:
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
539 >
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
540 command -bar -nargs=? -complete=help HelpCurwin execute s:HelpCurwin(<q-args>)
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
541 let s:did_open_help = v:false
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
542
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
543 function s:HelpCurwin(subject) abort
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
544 let mods = 'silent noautocmd keepalt'
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
545 if !s:did_open_help
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
546 execute mods .. ' help'
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
547 execute mods .. ' helpclose'
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
548 let s:did_open_help = v:true
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
549 endif
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
550 if !getcompletion(a:subject, 'help')->empty()
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
551 execute mods .. ' edit ' .. &helpfile
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
552 endif
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
553 return 'help ' .. a:subject
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
554 endfunction
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
555 <
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
556
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
557
14421
2f7e67dd088c Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 14249
diff changeset
558 vim:tw=78:ts=8:noet:ft=help:norl: