Mercurial > vim
annotate runtime/doc/usr_23.txt @ 13608:2a2b668cf24c v8.0.1676
patch 8.0.1676: no compiler warning for wrong printf format
commit https://github.com/vim/vim/commit/4ac2e8d8e60dcc7dbff662e177b86ccfbda7cd9e
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Apr 8 12:38:26 2018 +0200
patch 8.0.1676: no compiler warning for wrong printf format
Problem: No compiler warning for wrong printf format.
Solution: Add a printf attribute for gcc. Fix reported problems. (Dominique
Pelle, closes #2789)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 08 Apr 2018 12:45:07 +0200 |
parents | 9f48eab77d62 |
children | 1174611ad715 |
rev | line source |
---|---|
10198
9f48eab77d62
commit https://github.com/vim/vim/commit/bb76f24af2010943387ce696a7092175b4ecccf2
Christian Brabandt <cb@256bit.org>
parents:
5294
diff
changeset
|
1 *usr_23.txt* For Vim version 8.0. Last change: 2006 Apr 24 |
7 | 2 |
3 VIM USER MANUAL - by Bram Moolenaar | |
4 | |
5 Editing other files | |
6 | |
7 | |
8 This chapter is about editing files that are not ordinary files. With Vim you | |
9 can edit files that are compressed or encrypted. Some files need to be | |
10 accessed over the internet. With some restrictions, binary files can be | |
11 edited as well. | |
12 | |
13 |23.1| DOS, Mac and Unix files | |
14 |23.2| Files on the internet | |
15 |23.3| Encryption | |
16 |23.4| Binary files | |
17 |23.5| Compressed files | |
18 | |
19 Next chapter: |usr_24.txt| Inserting quickly | |
20 Previous chapter: |usr_22.txt| Finding the file to edit | |
21 Table of contents: |usr_toc.txt| | |
22 | |
23 ============================================================================== | |
24 *23.1* DOS, Mac and Unix files | |
25 | |
26 Back in the early days, the old Teletype machines used two characters to | |
27 start a new line. One to move the carriage back to the first position | |
28 (carriage return, <CR>), another to move the paper up (line feed, <LF>). | |
29 When computers came out, storage was expensive. Some people decided that | |
30 they did not need two characters for end-of-line. The UNIX people decided | |
31 they could use <Line Feed> only for end-of-line. The Apple people | |
32 standardized on <CR>. The MS-DOS (and Microsoft Windows) folks decided to | |
33 keep the old <CR><LF>. | |
34 This means that if you try to move a file from one system to another, you | |
35 have line-break problems. The Vim editor automatically recognizes the | |
36 different file formats and handles things properly behind your back. | |
37 The option 'fileformats' contains the various formats that will be tried | |
38 when a new file is edited. The following command, for example, tells Vim to | |
39 try UNIX format first and MS-DOS format second: > | |
40 | |
41 :set fileformats=unix,dos | |
42 | |
43 You will notice the format in the message you get when editing a file. You | |
44 don't see anything if you edit a native file format. Thus editing a Unix file | |
45 on Unix won't result in a remark. But when you edit a dos file, Vim will | |
46 notify you of this: | |
47 | |
48 "/tmp/test" [dos] 3L, 71C ~ | |
49 | |
50 For a Mac file you would see "[mac]". | |
51 The detected file format is stored in the 'fileformat' option. To see | |
52 which format you have, execute the following command: > | |
53 | |
54 :set fileformat? | |
55 | |
56 The three names that Vim uses are: | |
57 | |
58 unix <LF> | |
59 dos <CR><LF> | |
60 mac <CR> | |
61 | |
62 | |
63 USING THE MAC FORMAT | |
64 | |
65 On Unix, <LF> is used to break a line. It's not unusual to have a <CR> | |
66 character halfway a line. Incidentally, this happens quite often in Vi (and | |
67 Vim) scripts. | |
68 On the Macintosh, where <CR> is the line break character, it's possible to | |
69 have a <LF> character halfway a line. | |
70 The result is that it's not possible to be 100% sure whether a file | |
71 containing both <CR> and <LF> characters is a Mac or a Unix file. Therefore, | |
72 Vim assumes that on Unix you probably won't edit a Mac file, and doesn't check | |
73 for this type of file. To check for this format anyway, add "mac" to | |
74 'fileformats': > | |
75 | |
76 :set fileformats+=mac | |
77 | |
78 Then Vim will take a guess at the file format. Watch out for situations where | |
79 Vim guesses wrong. | |
80 | |
81 | |
82 OVERRULING THE FORMAT | |
83 | |
84 If you use the good old Vi and try to edit an MS-DOS format file, you will | |
237 | 85 find that each line ends with a ^M character. (^M is <CR>). The automatic |
7 | 86 detection avoids this. Suppose you do want to edit the file that way? Then |
87 you need to overrule the format: > | |
88 | |
89 :edit ++ff=unix file.txt | |
90 | |
91 The "++" string is an item that tells Vim that an option name follows, which | |
92 overrules the default for this single command. "++ff" is used for | |
93 'fileformat'. You could also use "++ff=mac" or "++ff=dos". | |
94 This doesn't work for any option, only "++ff" and "++enc" are currently | |
95 implemented. The full names "++fileformat" and "++encoding" also work. | |
96 | |
97 | |
98 CONVERSION | |
99 | |
100 You can use the 'fileformat' option to convert from one file format to | |
101 another. Suppose, for example, that you have an MS-DOS file named README.TXT | |
102 that you want to convert to UNIX format. Start by editing the MS-DOS format | |
103 file: > | |
104 vim README.TXT | |
105 | |
106 Vim will recognize this as a dos format file. Now change the file format to | |
107 UNIX: > | |
108 | |
109 :set fileformat=unix | |
110 :write | |
111 | |
112 The file is written in Unix format. | |
113 | |
114 ============================================================================== | |
115 *23.2* Files on the internet | |
116 | |
117 Someone sends you an e-mail message, which refers to a file by its URL. For | |
118 example: | |
119 | |
120 You can find the information here: ~ | |
121 ftp://ftp.vim.org/pub/vim/README ~ | |
122 | |
123 You could start a program to download the file, save it on your local disk and | |
124 then start Vim to edit it. | |
125 There is a much simpler way. Move the cursor to any character of the URL. | |
126 Then use this command: > | |
127 | |
128 gf | |
129 | |
130 With a bit of luck, Vim will figure out which program to use for downloading | |
131 the file, download it and edit the copy. To open the file in a new window use | |
132 CTRL-W f. | |
133 If something goes wrong you will get an error message. It's possible that | |
134 the URL is wrong, you don't have permission to read it, the network connection | |
135 is down, etc. Unfortunately, it's hard to tell the cause of the error. You | |
136 might want to try the manual way of downloading the file. | |
137 | |
138 Accessing files over the internet works with the netrw plugin. Currently URLs | |
139 with these formats are recognized: | |
140 | |
141 ftp:// uses ftp | |
142 rcp:// uses rcp | |
143 scp:// uses scp | |
144 http:// uses wget (reading only) | |
145 | |
146 Vim doesn't do the communication itself, it relies on the mentioned programs | |
147 to be available on your computer. On most Unix systems "ftp" and "rcp" will | |
148 be present. "scp" and "wget" might need to be installed. | |
149 | |
150 Vim detects these URLs for each command that starts editing a new file, also | |
151 with ":edit" and ":split", for example. Write commands also work, except for | |
152 http://. | |
153 | |
154 For more information, also about passwords, see |netrw|. | |
155 | |
156 ============================================================================== | |
157 *23.3* Encryption | |
158 | |
159 Some information you prefer to keep to yourself. For example, when writing | |
160 a test on a computer that students also use. You don't want clever students | |
161 to figure out a way to read the questions before the exam starts. Vim can | |
162 encrypt the file for you, which gives you some protection. | |
163 To start editing a new file with encryption, use the "-x" argument to start | |
164 Vim. Example: > | |
165 | |
166 vim -x exam.txt | |
167 | |
168 Vim prompts you for a key used for encrypting and decrypting the file: | |
169 | |
170 Enter encryption key: ~ | |
171 | |
172 Carefully type the secret key now. You cannot see the characters you type, | |
173 they will be replaced by stars. To avoid the situation that a typing mistake | |
174 will cause trouble, Vim asks you to enter the key again: | |
175 | |
176 Enter same key again: ~ | |
177 | |
178 You can now edit this file normally and put in all your secrets. When you | |
179 finish editing the file and tell Vim to exit, the file is encrypted and | |
180 written. | |
181 When you edit the file with Vim, it will ask you to enter the same key | |
182 again. You don't need to use the "-x" argument. You can also use the normal | |
183 ":edit" command. Vim adds a magic string to the file by which it recognizes | |
184 that the file was encrypted. | |
185 If you try to view this file using another program, all you get is garbage. | |
186 Also, if you edit the file with Vim and enter the wrong key, you get garbage. | |
187 Vim does not have a mechanism to check if the key is the right one (this makes | |
188 it much harder to break the key). | |
189 | |
190 | |
191 SWITCHING ENCRYPTION ON AND OFF | |
192 | |
193 To disable the encryption of a file, set the 'key' option to an empty string: | |
194 > | |
195 :set key= | |
196 | |
197 The next time you write the file this will be done without encryption. | |
198 Setting the 'key' option to enable encryption is not a good idea, because | |
199 the password appears in the clear. Anyone shoulder-surfing can read your | |
200 password. | |
201 To avoid this problem, the ":X" command was created. It asks you for an | |
202 encryption key, just like the "-x" argument did: > | |
203 | |
204 :X | |
205 Enter encryption key: ****** | |
206 Enter same key again: ****** | |
207 | |
208 | |
209 LIMITS ON ENCRYPTION | |
210 | |
211 The encryption algorithm used by Vim is weak. It is good enough to keep out | |
212 the casual prowler, but not good enough to keep out a cryptology expert with | |
213 lots of time on his hands. Also you should be aware that the swap file is not | |
214 encrypted; so while you are editing, people with superuser privileges can read | |
215 the unencrypted text from this file. | |
216 One way to avoid letting people read your swap file is to avoid using one. | |
217 If the -n argument is supplied on the command line, no swap file is used | |
218 (instead, Vim puts everything in memory). For example, to edit the encrypted | |
219 file "file.txt" without a swap file use the following command: > | |
220 | |
221 vim -x -n file.txt | |
222 | |
223 When already editing a file, the swapfile can be disabled with: > | |
224 | |
225 :setlocal noswapfile | |
226 | |
227 Since there is no swapfile, recovery will be impossible. Save the file a bit | |
228 more often to avoid the risk of losing your changes. | |
229 | |
230 While the file is in memory, it is in plain text. Anyone with privilege can | |
231 look in the editor's memory and discover the contents of the file. | |
232 If you use a viminfo file, be aware that the contents of text registers are | |
233 written out in the clear as well. | |
234 If you really want to secure the contents of a file, edit it only on a | |
235 portable computer not connected to a network, use good encryption tools, and | |
236 keep the computer locked up in a big safe when not in use. | |
237 | |
238 ============================================================================== | |
239 *23.4* Binary files | |
240 | |
241 You can edit binary files with Vim. Vim wasn't really made for this, thus | |
242 there are a few restrictions. But you can read a file, change a character and | |
243 write it back, with the result that only that one character was changed and | |
244 the file is identical otherwise. | |
245 To make sure that Vim does not use its clever tricks in the wrong way, add | |
246 the "-b" argument when starting Vim: > | |
247 | |
248 vim -b datafile | |
249 | |
250 This sets the 'binary' option. The effect of this is that unexpected side | |
251 effects are turned off. For example, 'textwidth' is set to zero, to avoid | |
252 automatic formatting of lines. And files are always read in Unix file format. | |
253 | |
254 Binary mode can be used to change a message in a program. Be careful not to | |
255 insert or delete any characters, it would stop the program from working. Use | |
256 "R" to enter replace mode. | |
257 | |
258 Many characters in the file will be unprintable. To see them in Hex format: > | |
259 | |
260 :set display=uhex | |
261 | |
262 Otherwise, the "ga" command can be used to see the value of the character | |
263 under the cursor. The output, when the cursor is on an <Esc>, looks like | |
264 this: | |
265 | |
266 <^[> 27, Hex 1b, Octal 033 ~ | |
267 | |
268 There might not be many line breaks in the file. To get some overview switch | |
269 the 'wrap' option off: > | |
270 | |
271 :set nowrap | |
272 | |
273 | |
274 BYTE POSITION | |
275 | |
276 To see on which byte you are in the file use this command: > | |
277 | |
278 g CTRL-G | |
279 | |
280 The output is verbose: | |
281 | |
282 Col 9-16 of 9-16; Line 277 of 330; Word 1806 of 2058; Byte 10580 of 12206 ~ | |
283 | |
284 The last two numbers are the byte position in the file and the total number of | |
285 bytes. This takes into account how 'fileformat' changes the number of bytes | |
286 that a line break uses. | |
287 To move to a specific byte in the file, use the "go" command. For | |
288 example, to move to byte 2345: > | |
289 | |
290 2345go | |
291 | |
292 | |
293 USING XXD | |
294 | |
295 A real binary editor shows the text in two ways: as it is and in hex format. | |
296 You can do this in Vim by first converting the file with the "xxd" program. | |
297 This comes with Vim. | |
298 First edit the file in binary mode: > | |
299 | |
300 vim -b datafile | |
301 | |
302 Now convert the file to a hex dump with xxd: > | |
303 | |
304 :%!xxd | |
305 | |
306 The text will look like this: | |
307 | |
308 0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI ~ | |
309 0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0 ~ | |
310 0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59. ~ | |
311 | |
312 You can now view and edit the text as you like. Vim treats the information as | |
313 ordinary text. Changing the hex does not cause the printable character to be | |
314 changed, or the other way around. | |
315 Finally convert it back with: | |
316 > | |
317 :%!xxd -r | |
318 | |
319 Only changes in the hex part are used. Changes in the printable text part on | |
320 the right are ignored. | |
321 | |
322 See the manual page of xxd for more information. | |
323 | |
324 ============================================================================== | |
325 *23.5* Compressed files | |
326 | |
327 This is easy: You can edit a compressed file just like any other file. The | |
328 "gzip" plugin takes care of decompressing the file when you edit it. And | |
329 compressing it again when you write it. | |
330 These compression methods are currently supported: | |
331 | |
332 .Z compress | |
333 .gz gzip | |
334 .bz2 bzip2 | |
335 | |
336 Vim uses the mentioned programs to do the actual compression and | |
337 decompression. You might need to install the programs first. | |
338 | |
339 ============================================================================== | |
340 | |
341 Next chapter: |usr_24.txt| Inserting quickly | |
342 | |
343 Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: |