annotate runtime/doc/tips.txt @ 32723:a992fbffdf16

Improve the vimscript code in ":h hex-editing" Commit: https://github.com/vim/vim/commit/6a500661a9cb7b57093cf1095aa67e9c4aabc709 Author: Dragan Simic' via vim_dev <vim_dev@googlegroups.com> Date: Wed Aug 9 17:23:57 2023 +0200 Improve the vimscript code in ":h hex-editing" Save and restore the view position before and after saving the buffer, respectively, to keep the current view of the xxd(1)'s hex dump unchanged after doing ":w", which previously caused the window to scroll back to the very beginning of the buffer. I believe it's needless to say how annoying and counterproductive that was. Get rid of the "Press ENTER or type command to continue" message, which was previously displayed after opening larger binary files. The use of "silent" and "redraw" commands is tailored specifically to avoid screen flickering, e.g. when doing ":w", which is caused by the buffer being filtered by an external command. Increase the number of octets per line, produced by xxd(1), from the default value of 16 to 32. This puts bigger chunks of the hex dump on the screen and makes the whole thing much more usable. While there, reformat the code to make it more readable, and use the long form of the commands and variables to make the code slightly more consistent and more understandable to newcomers.
author Christian Brabandt <cb@256bit.org>
date Thu, 10 Aug 2023 07:00:04 +0200
parents a7801222c9c5
children 3bc84e3fd05c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
29314
f8116058ca76 release version 9.0
Bram Moolenaar <Bram@vim.org>
parents: 27903
diff changeset
1 *tips.txt* For Vim version 9.0. Last change: 2021 Nov 06
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: >
27903
d19b7aee1925 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 26100
diff changeset
104 map _u :call ID_search()<Bar>execute "/\\<" .. g:word .. "\\>"<CR>
d19b7aee1925 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 26100
diff changeset
105 map _n :n<Bar>execute "/\\<" .. g:word .. "\\>"<CR>
7
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>")
27903
d19b7aee1925 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 26100
diff changeset
109 let x = system("lid --key=none " .. g:word)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
110 let x = substitute(x, "\n", " ", "g")
27903
d19b7aee1925 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 26100
diff changeset
111 execute "next " .. x
7
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
27903
d19b7aee1925 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 26100
diff changeset
359 :let m = ":map _f :set ai<CR>" " need 'autoindent' set
d19b7aee1925 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 26100
diff changeset
360 :let m ..= "{O<Esc>" " add empty line above item
d19b7aee1925 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 26100
diff changeset
361 :let m ..= "}{)^W" " move to text after bullet
d19b7aee1925 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 26100
diff changeset
362 :let m ..= "i <CR> <Esc>" " add space for indent
d19b7aee1925 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 26100
diff changeset
363 :let m ..= "gq}" " format text after the bullet
d19b7aee1925 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 26100
diff changeset
364 :let m ..= "{dd" " remove the empty line
d19b7aee1925 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 26100
diff changeset
365 :let m ..= "5lDJ" " put text after bullet
7
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
32723
a992fbffdf16 Improve the vimscript code in ":h hex-editing"
Christian Brabandt <cb@256bit.org>
parents: 31200
diff changeset
434 autocmd!
a992fbffdf16 Improve the vimscript code in ":h hex-editing"
Christian Brabandt <cb@256bit.org>
parents: 31200
diff changeset
435 autocmd BufReadPre *.bin set binary
a992fbffdf16 Improve the vimscript code in ":h hex-editing"
Christian Brabandt <cb@256bit.org>
parents: 31200
diff changeset
436 autocmd BufReadPost *.bin
a992fbffdf16 Improve the vimscript code in ":h hex-editing"
Christian Brabandt <cb@256bit.org>
parents: 31200
diff changeset
437 \ if &binary
a992fbffdf16 Improve the vimscript code in ":h hex-editing"
Christian Brabandt <cb@256bit.org>
parents: 31200
diff changeset
438 \ | execute "silent %!xxd -c 32"
a992fbffdf16 Improve the vimscript code in ":h hex-editing"
Christian Brabandt <cb@256bit.org>
parents: 31200
diff changeset
439 \ | set filetype=xxd
a992fbffdf16 Improve the vimscript code in ":h hex-editing"
Christian Brabandt <cb@256bit.org>
parents: 31200
diff changeset
440 \ | redraw
a992fbffdf16 Improve the vimscript code in ":h hex-editing"
Christian Brabandt <cb@256bit.org>
parents: 31200
diff changeset
441 \ | endif
a992fbffdf16 Improve the vimscript code in ":h hex-editing"
Christian Brabandt <cb@256bit.org>
parents: 31200
diff changeset
442 autocmd BufWritePre *.bin
a992fbffdf16 Improve the vimscript code in ":h hex-editing"
Christian Brabandt <cb@256bit.org>
parents: 31200
diff changeset
443 \ if &binary
a992fbffdf16 Improve the vimscript code in ":h hex-editing"
Christian Brabandt <cb@256bit.org>
parents: 31200
diff changeset
444 \ | let s:view = winsaveview()
a992fbffdf16 Improve the vimscript code in ":h hex-editing"
Christian Brabandt <cb@256bit.org>
parents: 31200
diff changeset
445 \ | execute "silent %!xxd -r -c 32"
a992fbffdf16 Improve the vimscript code in ":h hex-editing"
Christian Brabandt <cb@256bit.org>
parents: 31200
diff changeset
446 \ | endif
a992fbffdf16 Improve the vimscript code in ":h hex-editing"
Christian Brabandt <cb@256bit.org>
parents: 31200
diff changeset
447 autocmd BufWritePost *.bin
a992fbffdf16 Improve the vimscript code in ":h hex-editing"
Christian Brabandt <cb@256bit.org>
parents: 31200
diff changeset
448 \ if &binary
a992fbffdf16 Improve the vimscript code in ":h hex-editing"
Christian Brabandt <cb@256bit.org>
parents: 31200
diff changeset
449 \ | execute "silent %!xxd -c 32"
a992fbffdf16 Improve the vimscript code in ":h hex-editing"
Christian Brabandt <cb@256bit.org>
parents: 31200
diff changeset
450 \ | set nomodified
a992fbffdf16 Improve the vimscript code in ":h hex-editing"
Christian Brabandt <cb@256bit.org>
parents: 31200
diff changeset
451 \ | call winrestview(s:view)
a992fbffdf16 Improve the vimscript code in ":h hex-editing"
Christian Brabandt <cb@256bit.org>
parents: 31200
diff changeset
452 \ | redraw
a992fbffdf16 Improve the vimscript code in ":h hex-editing"
Christian Brabandt <cb@256bit.org>
parents: 31200
diff changeset
453 \ | endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
454 augroup END
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
455
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
456 ==============================================================================
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
457 Using <> notation in autocommands *autocmd-<>*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
458
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
459 The <> notation is not recognized in the argument of an :autocmd. To avoid
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
460 having to use special characters, you could use a self-destroying mapping to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
461 get the <> notation and then call the mapping from the autocmd. Example:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
462
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
463 *map-self-destroy* >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
464 " This is for automatically adding the name of the file to the menu list.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
465 " It uses a self-destroying mapping!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
466 " 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
467 " 2. store that in register '"'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
468 " 3. add that name to the Buffers menu list
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
469 " WARNING: this does have some side effects, like overwriting the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
470 " current register contents and removing any mapping for the "i" command.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
471 "
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
472 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
473 autocmd BufNewFile,BufReadPre * normal i
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
474
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
475 Another method, perhaps better, is to use the ":execute" command. In the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
476 string you can use the <> notation by preceding it with a backslash. Don't
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
477 forget to double the number of existing backslashes and put a backslash before
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
478 '"'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
479 >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
480 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
481
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
482 For a real buffer menu, user functions should be used (see |:function|), but
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
483 then the <> notation isn't used, which defeats using it as an example here.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
484
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
485 ==============================================================================
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
486 Highlighting matching parens *match-parens*
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
487
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
488 This example shows the use of a few advanced tricks:
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
489 - using the |CursorMoved| autocommand event
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
490 - using |searchpairpos()| to find a matching paren
674
4b8583e82cb8 updated for version 7.0201
vimboss
parents: 671
diff changeset
491 - 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
492 - using |:match| to highlight something
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
493 - using a |pattern| to match a specific position in the file.
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
494
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
495 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
496 It skips matches in strings or comments, unless the cursor started in string
4b8583e82cb8 updated for version 7.0201
vimboss
parents: 671
diff changeset
497 or comment. This requires syntax highlighting.
699
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 674
diff changeset
498
2af8de31a3a8 updated for version 7.0211
vimboss
parents: 674
diff changeset
499 A slightly more advanced version is used in the |matchparen| plugin.
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
500 >
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
501 let s:paren_hl_on = 0
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
502 function s:Highlight_Matching_Paren()
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
503 if s:paren_hl_on
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
504 match none
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
505 let s:paren_hl_on = 0
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
506 endif
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
507
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
508 let c_lnum = line('.')
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
509 let c_col = col('.')
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
510
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
511 let c = getline(c_lnum)[c_col - 1]
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
512 let plist = split(&matchpairs, ':\|,')
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
513 let i = index(plist, c)
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
514 if i < 0
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
515 return
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
516 endif
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
517 if i % 2 == 0
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
518 let s_flags = 'nW'
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
519 let c2 = plist[i + 1]
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
520 else
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
521 let s_flags = 'nbW'
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
522 let c2 = c
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
523 let c = plist[i - 1]
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
524 endif
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
525 if c == '['
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
526 let c = '\['
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
527 let c2 = '\]'
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
528 endif
27903
d19b7aee1925 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 26100
diff changeset
529 let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' ..
856
8cd729851562 updated for version 7.0g
vimboss
parents: 842
diff changeset
530 \ '=~? "string\\|comment"'
8cd729851562 updated for version 7.0g
vimboss
parents: 842
diff changeset
531 execute 'if' s_skip '| let s_skip = 0 | endif'
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
532
674
4b8583e82cb8 updated for version 7.0201
vimboss
parents: 671
diff changeset
533 let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip)
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
534
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
535 if m_lnum > 0 && m_lnum >= line('w0') && m_lnum <= line('w$')
27903
d19b7aee1925 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 26100
diff changeset
536 exe 'match Search /\(\%' .. c_lnum .. 'l\%' .. c_col ..
d19b7aee1925 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 26100
diff changeset
537 \ 'c\)\|\(\%' .. m_lnum .. 'l\%' .. m_col .. 'c\)/'
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
538 let s:paren_hl_on = 1
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
539 endif
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
540 endfunction
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
541
671
83a006f81bac updated for version 7.0199
vimboss
parents: 667
diff changeset
542 autocmd CursorMoved,CursorMovedI * call s:Highlight_Matching_Paren()
667
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
543 autocmd InsertEnter * match none
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
544 <
9090f866cd57 updated for version 7.0197
vimboss
parents: 246
diff changeset
545
23466
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
546 ==============================================================================
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
547 Opening help in the current window *help-curwin*
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
548
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
549 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
550 the current window, try this custom `:HelpCurwin` command:
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
551 >
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
552 command -bar -nargs=? -complete=help HelpCurwin execute s:HelpCurwin(<q-args>)
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
553 let s:did_open_help = v:false
31200
a7801222c9c5 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 29314
diff changeset
554
23466
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
555 function s:HelpCurwin(subject) abort
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
556 let mods = 'silent noautocmd keepalt'
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
557 if !s:did_open_help
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
558 execute mods .. ' help'
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
559 execute mods .. ' helpclose'
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
560 let s:did_open_help = v:true
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
561 endif
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
562 if !getcompletion(a:subject, 'help')->empty()
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
563 execute mods .. ' edit ' .. &helpfile
26100
babd9f1dbe12 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 23466
diff changeset
564 set buftype=help
23466
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
565 endif
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
566 return 'help ' .. a:subject
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
567 endfunction
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
568 <
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
569
15fa3923cc49 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
570
14421
2f7e67dd088c Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 14249
diff changeset
571 vim:tw=78:ts=8:noet:ft=help:norl: