usr_23.txt (9122B)
1 *usr_23.txt* Nvim 2 3 4 VIM USER MANUAL by Bram Moolenaar 5 6 7 Editing other files 8 9 10 This chapter is about editing files that are not ordinary files. With Vim you 11 can edit files that are compressed. Some files need to be accessed over the 12 internet. With some restrictions, binary files can be edited as well. 13 14 |23.1| DOS, Mac and Unix files 15 |23.2| Files on the internet 16 |23.3| Binary files 17 |23.4| 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 <New Line> or <NL> only for end-of-line. The Apple people 32 standardized on <CR>. The Microsoft Windows folks decided to keep the old 33 <CR><NL> (we use <NL> for line feed in the help text). 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 <NL> 59 dos <CR><NL> 60 mac <CR> 61 62 63 USING THE MAC FORMAT 64 65 On Unix, <NL> is used to break a line. It's not unusual to have a <CR> 66 character halfway in a line. Incidentally, this happens quite often in Vi 67 (and Vim) scripts. 68 On the Macintosh, where <CR> is the line break character, it's possible to 69 have a <NL> character halfway in a line. 70 The result is that it's not possible to be 100% sure whether a file 71 containing both <CR> and <NL> 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 85 find that each line ends with a ^M character. (^M is <CR>). The automatic 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 https://ftp.nluug.nl/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* Binary files 158 159 You can edit binary files with Vim. Vim wasn't really made for this, thus 160 there are a few restrictions. But you can read a file, change a character and 161 write it back, with the result that only that one character was changed and 162 the file is identical otherwise. 163 To make sure that Vim does not use its clever tricks in the wrong way, add 164 the "-b" argument when starting Vim: > 165 166 vim -b datafile 167 168 This sets the 'binary' option. The effect of this is that unexpected side 169 effects are turned off. For example, 'textwidth' is set to zero, to avoid 170 automatic formatting of lines. And files are always read in Unix file format. 171 172 Binary mode can be used to change a message in a program. Be careful not to 173 insert or delete any characters, it would stop the program from working. Use 174 "R" to enter replace mode. 175 176 Many characters in the file will be unprintable. To see them in Hex format: > 177 178 :set display=uhex 179 180 Otherwise, the "ga" command can be used to see the value of the character 181 under the cursor. The output, when the cursor is on an <Esc>, looks like 182 this: 183 184 <^[> 27, Hex 1b, Octal 033 ~ 185 186 There might not be many line breaks in the file. To get some overview switch 187 the 'wrap' option off: > 188 189 :set nowrap 190 191 192 BYTE POSITION 193 194 To see on which byte you are in the file use this command: > 195 196 g CTRL-G 197 198 The output is verbose: 199 200 Col 9-16 of 9-16; Line 277 of 330; Word 1806 of 2058; Byte 10580 of 12206 ~ 201 202 The last two numbers are the byte position in the file and the total number of 203 bytes. This takes into account how 'fileformat' changes the number of bytes 204 that a line break uses. 205 To move to a specific byte in the file, use the "go" command. For 206 example, to move to byte 2345: > 207 208 2345go 209 210 211 USING XXD 212 213 A real binary editor shows the text in two ways: as it is and in hex format. 214 You can do this in Vim by first converting the file with the "xxd" program. 215 This comes with Vim. 216 First edit the file in binary mode: > 217 218 vim -b datafile 219 220 Now convert the file to a hex dump with xxd: > 221 222 :%!xxd 223 224 The text will look like this: 225 226 0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI ~ 227 0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0 ~ 228 0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59. ~ 229 230 You can now view and edit the text as you like. Vim treats the information as 231 ordinary text. Changing the hex does not cause the printable character to be 232 changed, or the other way around. 233 Finally convert it back with: 234 > 235 :%!xxd -r 236 237 Only changes in the hex part are used. Changes in the printable text part on 238 the right are ignored. 239 240 See the manual page of xxd for more information. 241 242 ============================================================================== 243 *23.4* Compressed files 244 245 This is easy: You can edit a compressed file just like any other file. The 246 "gzip" plugin takes care of decompressing the file when you edit it. And 247 compressing it again when you write it. 248 These compression methods are currently supported: 249 250 .Z compress 251 .gz gzip 252 .bz2 bzip2 253 254 Vim uses the mentioned programs to do the actual compression and 255 decompression. You might need to install the programs first. 256 257 ============================================================================== 258 259 Next chapter: |usr_24.txt| Inserting quickly 260 261 Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: