Compare commits

...

666 Commits

Author SHA1 Message Date
2a3f7eeebf updated for version 7.0205 2006-02-23 21:34:44 +00:00
df1bdc92c2 updated for version 7.0205 2006-02-23 21:32:16 +00:00
80a94a582c updated for version 7.0205 2006-02-23 21:26:58 +00:00
d1f56e68f1 updated for version 7.0204 2006-02-22 21:25:37 +00:00
238a564935 updated for version 7.0203 2006-02-21 22:12:05 +00:00
8f7fd65b24 updated for version 7.0203 2006-02-21 22:04:51 +00:00
030f0dfad5 updated for version 7.0203 2006-02-21 22:02:53 +00:00
faa959a870 updated for version 7.0202 2006-02-20 21:37:40 +00:00
70836c8ba8 updated for version 7.0202 2006-02-20 21:28:49 +00:00
2a0449d129 updated for version 7.0202 2006-02-20 21:27:21 +00:00
7e8fd63682 updated for version 7.0201 2006-02-18 22:14:51 +00:00
997fb4ba69 updated for version 7.0200 2006-02-17 21:53:23 +00:00
49d7bf13e0 updated for version 7.0200 2006-02-17 21:45:41 +00:00
f740b29ae2 updated for version 7.0199 2006-02-16 22:11:02 +00:00
4c7ed462cb updated for version 7.0198 2006-02-15 22:18:42 +00:00
e45828b593 updated for version 7.0198 2006-02-15 22:12:56 +00:00
98ea5defcf updated for version 7.0198 2006-02-15 22:11:25 +00:00
1d2ba7fa85 updated for version 7.0197 2006-02-14 22:29:30 +00:00
f52c725c47 updated for version 7.0196 2006-02-10 23:23:57 +00:00
c7453f52d4 updated for version 7.0196 2006-02-10 23:20:28 +00:00
110bc6bc91 updated for version 7.0196 2006-02-10 23:13:40 +00:00
06b5db9397 updated for version 7.0196 2006-02-10 23:11:56 +00:00
3d0a603fa9 updated for version 7.0195 2006-02-09 23:54:54 +00:00
754b56089f updated for version 7.0195 2006-02-09 23:53:20 +00:00
cf0c554e3f updated for version 7.0195 2006-02-09 23:48:02 +00:00
8b6144bdfe updated for version 7.0194 2006-02-08 09:20:24 +00:00
9f2c6e1deb updated for version 7.0193 2006-02-04 22:45:44 +00:00
a65576059f updated for version 7.0193 2006-02-04 22:43:20 +00:00
41cabdadc2 updated for version 7.0193 2006-02-04 22:38:56 +00:00
a37420f46f updated for version 7.0193 2006-02-04 22:37:47 +00:00
0e5bd96f84 updated for version 7.0192 2006-02-04 00:59:56 +00:00
986920760e updated for version 7.0192 2006-02-04 00:57:42 +00:00
49315f65c9 updated for version 7.0192 2006-02-04 00:54:59 +00:00
1ef15e30a0 updated for version 7.0191 2006-02-01 21:56:25 +00:00
afeb4fa8a7 updated for version 7.0191 2006-02-01 21:51:12 +00:00
b8a7b560b1 updated for version 7.0191 2006-02-01 21:47:16 +00:00
280f126ef0 updated for version 7.0189 2006-01-30 00:14:18 +00:00
17c7c01170 updated for version 7.0188 2006-01-26 22:25:15 +00:00
51156d5a87 updated for version 7.0188 2006-01-26 22:17:47 +00:00
6ab5b84db4 updated for version 7.0188 2006-01-26 22:16:34 +00:00
d12f5c17be updated for version 7.0187 2006-01-25 22:10:52 +00:00
28c258fd24 updated for version 7.0187 2006-01-25 22:02:51 +00:00
7df351eb8a updated for version 7.0186 2006-01-23 22:30:28 +00:00
09df3127f4 updated for version 7.0186 2006-01-23 22:23:09 +00:00
33aec765bd updated for version 7.0185 2006-01-22 23:30:12 +00:00
71fe80dddd updated for version 7.0185 2006-01-22 23:25:56 +00:00
66fa271a25 updated for version 7.0185 2006-01-22 23:22:22 +00:00
0ac9379acf updated for version 7.0184 2006-01-21 22:16:51 +00:00
c716c306e9 updated for version 7.0184 2006-01-21 22:12:51 +00:00
b1b715d1fb updated for version 7.0184 2006-01-21 22:09:43 +00:00
b71eaaeaa8 updated for version 7.0183 2006-01-20 23:10:18 +00:00
2d3f489e09 updated for version 7.0183 2006-01-20 23:02:51 +00:00
8ada17c4d9 updated for version 7.0182 2006-01-19 22:16:24 +00:00
05a7bb363b updated for version 7.0182 2006-01-19 22:09:32 +00:00
c32840f267 updated for version 7.0181 2006-01-14 21:23:38 +00:00
04dbce064e updated for version 7.0181 2006-01-14 21:20:41 +00:00
316059c019 updated for version 7.0181 2006-01-14 21:18:42 +00:00
ea8bd73212 updated for version 7.0181 2006-01-14 21:15:59 +00:00
a40ceaf88a updated for version 7.0180 2006-01-13 22:35:40 +00:00
4770d09abd updated for version 7.0179 2006-01-12 23:22:24 +00:00
1cbe5f739d updated for version 7.0178 2005-12-29 22:51:09 +00:00
c7486e034e updated for version 7.0178 2005-12-29 22:48:26 +00:00
86e01085a1 updated for version 7.0178 2005-12-29 22:45:34 +00:00
371baa928d updated for version 7.0178 2005-12-29 22:43:53 +00:00
ebefac63f3 updated for version 7.0177 2005-12-28 22:39:57 +00:00
cc984263d7 updated for version 7.0176 2005-12-23 22:19:46 +00:00
0ce33f34a4 updated for version 7.0176 2005-12-23 22:16:03 +00:00
8fa0445c4f updated for version 7.0176 2005-12-23 22:13:51 +00:00
5c2f050d91 updated for version 7.0176 2005-12-23 22:11:04 +00:00
f4cd3e8074 updated for version 7.0175 2005-12-22 22:47:02 +00:00
bb1004ee56 updated for version 7.0174 2005-12-19 22:15:59 +00:00
a9b1e74b5d updated for version 7.0174 2005-12-19 22:14:58 +00:00
195d6357b4 updated for version 7.0174 2005-12-19 22:08:24 +00:00
46b8015066 updated for version 7.0174 2005-12-19 22:06:56 +00:00
e3226be91a updated for version 7.0173 2005-12-18 22:10:00 +00:00
d35f9711d4 updated for version 7.0173 2005-12-18 22:02:33 +00:00
da1b1a7357 updated for version 7.0173 2005-12-18 21:59:16 +00:00
3b18181f28 updated for version 7.0172 2005-12-17 22:10:02 +00:00
acf534595b updated for version 7.0172 2005-12-17 22:06:52 +00:00
97d29a1ace updated for version 7.0172 2005-12-17 22:02:57 +00:00
146522e760 updated for version 7.0171 2005-12-16 21:55:46 +00:00
83c465c705 updated for version 7.0171 2005-12-16 21:53:56 +00:00
12033fb4bf updated for version 7.0171 2005-12-16 21:49:31 +00:00
bca84a12bd updated for version 7.0170 2005-12-14 22:08:35 +00:00
38f1825274 updated for version 7.0170 2005-12-14 22:04:43 +00:00
61da4986dd updated for version 7.0170 2005-12-14 22:02:18 +00:00
6496966ad1 updated for version 7.0170 2005-12-14 21:59:55 +00:00
b2c2efa53a updated for version 7.0169 2005-12-13 20:09:08 +00:00
c6d8db78b1 updated for version 7.0169 2005-12-13 20:04:55 +00:00
b0bf8580c3 updated for version 7.0169 2005-12-13 20:02:15 +00:00
900b4d77f0 updated for version 7.0168 2005-12-12 22:05:50 +00:00
2c7a29c7fd updated for version 7.0168 2005-12-12 22:02:31 +00:00
5b962cf71c updated for version 7.0168 2005-12-12 21:58:40 +00:00
63a121b750 updated for version 7.0167 2005-12-11 21:36:39 +00:00
b348038631 updated for version 7.0167 2005-12-11 21:33:32 +00:00
292ad19e92 updated for version 7.0167 2005-12-11 21:29:51 +00:00
cdbac1ee33 updated for version 7.0167 2005-12-11 21:27:22 +00:00
cc016f5410 updated for version 7.0166 2005-12-10 20:23:46 +00:00
e5180526fd updated for version 7.0166 2005-12-10 20:19:46 +00:00
24552beda0 updated for version 7.0166 2005-12-10 20:17:30 +00:00
43abc52195 updated for version 7.0166 2005-12-10 20:15:02 +00:00
ba930509b0 updated for version 7.0165 2005-12-08 22:05:05 +00:00
18f9a79673 updated for version 7.0165 2005-12-08 22:02:51 +00:00
77197e44d6 updated for version 7.0165 2005-12-08 22:00:22 +00:00
d5bc83f576 updated for version 7.0164 2005-12-07 21:07:59 +00:00
4e330bbf21 updated for version 7.0164 2005-12-07 21:04:31 +00:00
b815dac061 updated for version 7.0164 2005-12-07 20:59:24 +00:00
be79f90adc updated for version 7.0164 2005-12-07 20:56:14 +00:00
e64ac77a28 updated for version 7.0164 2005-12-07 20:54:59 +00:00
241a8aaa48 updated for version 7.0163 2005-12-06 20:04:44 +00:00
9372a11ca6 updated for version 7.0163 2005-12-06 19:59:18 +00:00
cef9dcc37e updated for version 7.0163 2005-12-06 19:50:41 +00:00
943d2b5b80 updated for version 7.0162 2005-12-02 00:50:49 +00:00
f4d1145328 updated for version 7.0162 2005-12-02 00:46:37 +00:00
c6039d8fcb updated for version 7.0162 2005-12-02 00:44:04 +00:00
bba577a242 updated for version 7.0161 2005-11-28 23:05:55 +00:00
36c31f71ad updated for version 7.0161 2005-11-28 23:01:53 +00:00
9835862c81 updated for version 7.0161 2005-11-28 22:58:23 +00:00
a39571032c updated for version 7.0161 2005-11-28 22:56:19 +00:00
c64d13ad5b updated for version 7.0160 2005-11-26 23:48:46 +00:00
16d8f87b45 updated for version 7.0160 2005-11-26 23:46:11 +00:00
5fe38612c9 updated for version 7.0160 2005-11-26 23:45:02 +00:00
3d2381ec09 updated for version 7.0160 2005-11-26 23:42:09 +00:00
b4d392824a updated for version 7.0160 2005-11-26 23:40:59 +00:00
12625caaa3 updated for version 7.0159 2005-11-25 19:58:47 +00:00
1afcace307 updated for version 7.0159 2005-11-25 19:54:28 +00:00
c20658076d updated for version 7.0159 2005-11-25 19:50:52 +00:00
a5792f5890 updated for version 7.0158 2005-11-23 21:25:05 +00:00
af289d333a updated for version 7.0157 2005-10-12 21:01:44 +00:00
a5fac54aea updated for version 7.0157 2005-10-12 20:58:49 +00:00
61036991ab updated for version 7.0157 2005-10-12 20:54:52 +00:00
8349fd7c7e updated for version 7.0157 2005-10-12 20:52:20 +00:00
784c614cb1 updated for version 7.0156 2005-10-11 20:34:58 +00:00
95b28ecc4a updated for version 7.0156 2005-10-11 20:32:28 +00:00
202795bed4 updated for version 7.0156 2005-10-11 20:29:39 +00:00
a5fb28b609 updated for version 7.0155 2005-10-10 21:00:54 +00:00
d5cdbeb8dd updated for version 7.0155 2005-10-10 20:59:28 +00:00
196dfbcca1 updated for version 7.0154 2005-10-04 09:16:35 +00:00
ac30844d60 updated for version 7.0154 2005-10-04 09:14:13 +00:00
4b77947252 updated for version 7.0154 2005-10-04 09:12:31 +00:00
8d4f404a7b updated for version 7.0154 2005-10-04 09:08:17 +00:00
9b9714bee4 updated for version 7.0154 2005-10-04 09:06:09 +00:00
761b1131b8 updated for version 7.0153 2005-10-03 22:05:45 +00:00
07d4d7328a updated for version 7.0153 2005-10-03 22:04:08 +00:00
1c7715dfe4 updated for version 7.0153 2005-10-03 22:02:18 +00:00
bb15b65864 updated for version 7.0153 2005-10-03 21:52:09 +00:00
69e0ff94dc updated for version 7.0152 2005-09-30 21:23:56 +00:00
c54b8a78fa updated for version 7.0152 2005-09-30 21:20:29 +00:00
f25fd51b89 updated for version 7.0152 2005-09-30 21:15:37 +00:00
4effc80a8c updated for version 7.0152 2005-09-30 21:12:02 +00:00
482aaeb058 updated for version 7.0151 2005-09-29 18:26:07 +00:00
4463f296d0 updated for version 7.0150 2005-09-25 22:20:24 +00:00
1e01546026 updated for version 7.0150 2005-09-25 22:16:38 +00:00
bfd8fc0529 updated for version 7.0149 2005-09-20 23:22:24 +00:00
60a795aad6 updated for version 7.0148 2005-09-16 21:55:43 +00:00
6b730e111c updated for version 7.0148 2005-09-16 21:47:57 +00:00
58071af793 updated for version 7.0147 2005-09-14 21:41:18 +00:00
ab194816fe updated for version 7.0147 2005-09-14 21:40:12 +00:00
cd292719e0 updated for version 7.0147 2005-09-14 21:33:59 +00:00
4c903f9891 updated for version 7.0147 2005-09-14 21:32:32 +00:00
e6facf9490 updated for version 7.0146 2005-09-13 21:22:27 +00:00
f75a963eea updated for version 7.0146 2005-09-13 21:20:47 +00:00
5e0d6678ad updated for version 7.0146 2005-09-13 21:09:24 +00:00
6efa2b30f4 updated for version 7.0145 2005-09-10 19:26:26 +00:00
dcca87b394 updated for version 7.0145 2005-09-10 19:24:59 +00:00
578b49e4f7 updated for version 7.0145 2005-09-10 19:22:57 +00:00
32330d3c67 updated for version 7.0145 2005-09-10 19:16:33 +00:00
d43b6cf7de updated for version 7.0144 2005-09-09 19:53:42 +00:00
a4a0838802 updated for version 7.0144 2005-09-09 19:52:02 +00:00
e7eb9df59a updated for version 7.0144 2005-09-09 19:49:30 +00:00
a5373faa17 updated for version 7.0144 2005-09-09 19:47:12 +00:00
7ca3043e1e updated for version 7.0144 2005-09-09 19:44:31 +00:00
7bb4c6e3f6 updated for version 7.0143 2005-09-07 21:22:27 +00:00
caa0fcfa6b updated for version 7.0143 2005-09-07 21:21:14 +00:00
4615234489 updated for version 7.0143 2005-09-07 21:18:43 +00:00
ffb8ab0402 updated for version 7.0143 2005-09-07 21:15:32 +00:00
d1231f991a updated for version 7.0143 2005-09-07 21:12:33 +00:00
cafda4f893 updated for version 7.0142 2005-09-06 19:25:11 +00:00
4440382f3c updated for version 7.0142 2005-09-06 19:13:27 +00:00
dd2436f352 updated for version 7.0141 2005-09-05 22:14:46 +00:00
92d640fad1 updated for version 7.0141 2005-09-05 22:11:52 +00:00
8b96d64cb5 updated for version 7.0141 2005-09-05 22:05:30 +00:00
e344bead3e updated for version 7.0140 2005-09-01 20:46:49 +00:00
da2303d96b updated for version 7.0139 2005-08-30 21:55:26 +00:00
ac6e65f88d updated for version 7.0138 2005-08-29 22:25:38 +00:00
81f1ecbc4d updated for version 7.0137 2005-08-25 21:27:31 +00:00
955295684b updated for version 7.0137 2005-08-25 21:21:38 +00:00
6e7c7f3a19 updated for version 7.0136 2005-08-24 22:16:11 +00:00
5bcb2eba3d updated for version 7.0136 2005-08-24 22:09:56 +00:00
6de6853ce3 updated for version 7.0136 2005-08-24 22:08:48 +00:00
a2036d2b48 updated for version 7.0135 2005-08-23 21:04:20 +00:00
6f16eb817b updated for version 7.0135 2005-08-23 21:02:42 +00:00
7862282f2e updated for version 7.0135 2005-08-23 21:00:13 +00:00
a6c840d7d4 updated for version 7.0134 2005-08-22 22:59:46 +00:00
e52325c254 updated for version 7.0134 2005-08-22 22:54:29 +00:00
d52d9741ee updated for version 7.0133 2005-08-21 22:20:28 +00:00
90915b5d48 updated for version 7.0133 2005-08-21 22:17:52 +00:00
50c8195012 updated for version 7.0133 2005-08-21 22:14:09 +00:00
cee5560a4b updated for version 7.0133 2005-08-21 22:12:59 +00:00
d12a132603 updated for version 7.0133 2005-08-21 22:08:24 +00:00
8aff23a13e updated for version 7.0132 2005-08-19 20:40:30 +00:00
5195e45609 updated for version 7.0132 2005-08-19 20:32:47 +00:00
5b8d8fdb52 updated for version 7.0131 2005-08-16 23:01:50 +00:00
ae5bce1c12 updated for version 7.0130 2005-08-15 21:41:48 +00:00
90cfdbe040 updated for version 7.0129 2005-08-12 19:59:19 +00:00
e5b8e3d3c6 updated for version 7.0129 2005-08-12 19:48:49 +00:00
8c45cdf4cf updated for version 7.0128 2005-08-11 20:11:38 +00:00
488c6512d9 updated for version 7.0128 2005-08-11 20:09:58 +00:00
8b1e71fa25 updated for version 7.0128 2005-08-11 20:00:37 +00:00
8b59de9f2f updated for version 7.0128 2005-08-11 19:59:29 +00:00
0fa313a718 updated for version 7.0127 2005-08-10 21:07:57 +00:00
c388fbf9d9 updated for version 7.0126 2005-08-10 08:16:23 +00:00
670f9312cc updated for version 7.0126 2005-08-10 08:15:00 +00:00
aba2f487ff updated for version 7.0126 2005-08-10 07:57:38 +00:00
4f574c8ab1 updated for version 7.0126 2005-08-10 07:56:18 +00:00
329cc7e429 updated for version 7.0126 2005-08-10 07:51:35 +00:00
8af244281c updated for version 7.0125 2005-08-08 22:06:28 +00:00
f57907ec2c updated for version 7.0125 2005-08-08 22:02:16 +00:00
f6cf987574 updated for version 7.0125 2005-08-08 22:00:59 +00:00
648120b750 updated for version 7.0125 2005-08-08 21:57:35 +00:00
572cb561ac updated for version 7.0124 2005-08-05 21:35:02 +00:00
86eb7a2c03 updated for version 7.0124 2005-08-05 21:27:51 +00:00
0be6e647d1 updated for version 7.0123 2005-08-04 21:32:22 +00:00
1d94f9b30e updated for version 7.0123 2005-08-04 21:29:45 +00:00
04a09c1975 updated for version 7.0122 2005-08-01 22:02:32 +00:00
83bab71b3c updated for version 7.0122 2005-08-01 21:58:57 +00:00
d314b2519b updated for version 7.0122 2005-08-01 21:54:37 +00:00
ecf07c8910 updated for version 7.0122 2005-08-01 21:52:12 +00:00
78984f503c updated for version 7.0121 2005-08-01 07:19:10 +00:00
53805d1eaa updated for version 7.0121 2005-08-01 07:08:33 +00:00
34cf2f5f49 updated for version 7.0121 2005-08-01 07:04:56 +00:00
25ceb22747 updated for version 7.0120 2005-07-30 22:45:36 +00:00
5a8684e782 updated for version 7.0120 2005-07-30 22:43:24 +00:00
3a6c56e422 updated for version 7.0120 2005-07-30 22:37:17 +00:00
403bd9487a updated for version 7.0120 2005-07-30 22:36:01 +00:00
4be06f9e1b updated for version 7.0119 2005-07-29 22:36:03 +00:00
661b182095 updated for version 7.0118 2005-07-28 22:36:45 +00:00
cfc7d63267 updated for version 7.0118 2005-07-28 22:28:16 +00:00
87e25fdf80 updated for version 7.0117 2005-07-27 21:13:01 +00:00
231334e6ef updated for version 7.0116 2005-07-25 20:46:57 +00:00
027436338b updated for version 7.0116 2005-07-25 20:42:36 +00:00
c013cb66a6 updated for version 7.0115 2005-07-24 21:18:31 +00:00
81366db6d6 updated for version 7.0115 2005-07-24 21:16:51 +00:00
65de869c4f updated for version 7.0115 2005-07-24 21:09:41 +00:00
58d9823409 updated for version 7.0114 2005-07-23 22:25:46 +00:00
b01585904a updated for version 7.0113 2005-07-22 21:54:43 +00:00
d8c0087cce updated for version 7.0113 2005-07-22 21:52:15 +00:00
63b3ce8757 updated for version 7.0113 2005-07-22 21:46:50 +00:00
342337a1a0 updated for version 7.0112 2005-07-21 21:11:17 +00:00
4536002e30 updated for version 7.0112 2005-07-21 21:08:21 +00:00
a3ffd9c780 updated for version 7.0112 2005-07-21 21:03:15 +00:00
80fc04348a updated for version 7.0111 2005-07-20 22:06:07 +00:00
87b774daf2 updated for version 7.0111 2005-07-20 22:04:36 +00:00
84fb85aaf6 updated for version 7.0111 2005-07-20 22:02:14 +00:00
fd6e52886b updated for version 7.0111 2005-07-20 22:00:04 +00:00
7b30e18223 updated for version 7.0111 2005-07-20 21:58:59 +00:00
0e634daa95 updated for version 7.0111 2005-07-20 21:57:28 +00:00
84110acb60 updated for version 7.0111 2005-07-20 21:56:21 +00:00
6a9aa37a3e updated for version 7.0111 2005-07-20 21:54:57 +00:00
9fad308621 updated for version 7.0110 2005-07-19 22:22:13 +00:00
ff6f061a9d updated for version 7.0110 2005-07-19 22:21:12 +00:00
d6c04cd66a updated for version 7.0110 2005-07-19 22:18:49 +00:00
6c131c43ff updated for version 7.0110 2005-07-19 22:17:30 +00:00
e7c5a15631 updated for version 7.0110 2005-07-19 22:14:07 +00:00
f8c07b2712 updated for version 7.0110 2005-07-19 22:10:03 +00:00
ce0842a6ee updated for version 7.0109 2005-07-18 21:58:11 +00:00
bbebc85750 updated for version 7.0109 2005-07-18 21:47:53 +00:00
fe3ca8ddd9 updated for version 7.0109 2005-07-18 21:43:02 +00:00
b635633989 updated for version 7.0109 2005-07-18 21:40:44 +00:00
e759a7aa9a updated for version 7.0108 2005-07-12 22:50:18 +00:00
8d34330fe5 updated for version 7.0108 2005-07-12 22:46:17 +00:00
1f28b07867 updated for version 7.0108 2005-07-12 22:42:41 +00:00
5eba4c2daf updated for version 7.0108 2005-07-12 22:40:29 +00:00
a40058acc7 updated for version 7.0107 2005-07-11 22:42:07 +00:00
3b56eb3d31 updated for version 7.0107 2005-07-11 22:40:32 +00:00
9ff7011bcb updated for version 7.0107 2005-07-11 22:29:03 +00:00
d8e9bb2090 updated for version 7.0106 2005-07-09 21:14:46 +00:00
35fdbb540a updated for version 7.0106 2005-07-09 21:08:57 +00:00
a466c99842 updated for version 7.0106 2005-07-09 21:03:22 +00:00
ac76e4dd91 updated for version 7.0106 2005-07-09 20:58:57 +00:00
51bab74a87 updated for version 7.0105 2005-07-08 22:31:03 +00:00
8d7fc6c298 updated for version 7.0105 2005-07-08 22:28:00 +00:00
e8bb2552eb updated for version 7.0105 2005-07-08 22:26:47 +00:00
045e82deef updated for version 7.0105 2005-07-08 22:25:33 +00:00
63b80986ac updated for version 7.0105 2005-07-08 22:21:38 +00:00
ec8a10a4e4 updated for version 7.0105 2005-07-08 22:19:11 +00:00
97409f1261 updated for version 7.0105 2005-07-08 22:17:29 +00:00
8e735a17f8 updated for version 7.0105 2005-07-08 22:14:37 +00:00
42332f5856 updated for version 7.0104 2005-07-06 22:38:49 +00:00
dc27ac1c5e updated for version 7.0104 2005-07-06 22:35:45 +00:00
bfb2006fd5 updated for version 7.0104 2005-07-06 22:31:45 +00:00
551f84f4e8 updated for version 7.0104 2005-07-06 22:29:20 +00:00
1756879365 updated for version 7.0104 2005-07-06 22:28:03 +00:00
53180ce2e7 updated for version 7.0103 2005-07-05 21:48:14 +00:00
dfb9ac0021 updated for version 7.0103 2005-07-05 21:36:03 +00:00
0dc065ee7c updated for version 7.0102 2005-07-04 22:49:24 +00:00
7d1f5dbc0a updated for version 7.0101 2005-07-03 21:39:27 +00:00
51ac12f683 updated for version 7.0100 2005-07-02 23:21:11 +00:00
0d9c26dd83 updated for version 7.0100 2005-07-02 23:19:16 +00:00
f9184a1d31 updated for version 7.0100 2005-07-02 23:10:47 +00:00
0f7d31ad83 updated for version 7.0100 2005-07-02 23:09:03 +00:00
1f8a5f0eac updated for version 7.0099 2005-07-01 22:41:52 +00:00
ba4128faa3 updated for version 7.0099 2005-07-01 22:38:32 +00:00
7887d88a9f updated for version 7.0099 2005-07-01 22:33:52 +00:00
505e82870e updated for version 7.0099 2005-07-01 22:31:55 +00:00
7fae636fc8 updated for version 7.0098 2005-06-30 22:06:41 +00:00
d042c56e34 updated for version 7.0098 2005-06-30 22:04:15 +00:00
e6b165e0f4 updated for version 7.0098 2005-06-30 21:56:01 +00:00
9c96f592af updated for version 7.0098 2005-06-30 21:52:39 +00:00
42eeac3552 updated for version 7.0097 2005-06-29 22:40:58 +00:00
24bbcfe8fe updated for version 7.0096 2005-06-28 23:32:02 +00:00
d7b31706f7 updated for version 7.0096 2005-06-28 23:24:33 +00:00
a1ba811ac9 updated for version 7.0096 2005-06-28 23:23:32 +00:00
9a50b1bf21 updated for version 7.0095 2005-06-27 22:48:21 +00:00
39a58ca3d4 updated for version 7.0095 2005-06-27 22:42:44 +00:00
d4098f5f19 updated for version 7.0095 2005-06-27 22:37:13 +00:00
702517dd70 updated for version 7.0095 2005-06-27 22:34:07 +00:00
b61d40504e updated for version 7.0095 2005-06-27 22:29:54 +00:00
cf6bf39f68 updated for version 7.0095 2005-06-27 22:27:46 +00:00
238f4fa798 updated for version 7.0095 2005-06-27 22:25:50 +00:00
d9fba318b8 updated for version 7.0094 2005-06-26 22:34:35 +00:00
80b29f273d updated for version 7.0094 2005-06-26 22:30:47 +00:00
1e498f5e5d updated for version 7.0094 2005-06-26 22:29:44 +00:00
0017fc52cb updated for version 7.0094 2005-06-26 22:28:42 +00:00
4eec5ec8ce updated for version 7.0094 2005-06-26 22:26:21 +00:00
f461c8e7f8 updated for version 7.0093 2005-06-25 23:04:51 +00:00
ea408854a8 updated for version 7.0093 2005-06-25 22:49:46 +00:00
29a1c1d374 updated for version 7.0092 2005-06-24 23:11:15 +00:00
1ec484f58e updated for version 7.0092 2005-06-24 23:07:47 +00:00
0a5fe2140d updated for version 7.0092 2005-06-24 23:01:23 +00:00
c4def13f8b updated for version 7.0091 2005-06-23 22:39:27 +00:00
3b506942eb updated for version 7.0091 2005-06-23 22:36:45 +00:00
47cc752267 updated for version 7.0091 2005-06-23 22:31:01 +00:00
f417f2b6af updated for version 7.0091 2005-06-23 22:29:21 +00:00
f81b0fe011 updated for version 7.0091 2005-06-23 22:27:26 +00:00
6ad01d6077 updated for version 7.0090 2005-06-22 22:37:09 +00:00
30abd28f16 updated for version 7.0090 2005-06-22 22:35:10 +00:00
d114dbee50 updated for version 7.0090 2005-06-22 22:29:18 +00:00
0c40586a7b updated for version 7.0090 2005-06-22 22:26:26 +00:00
0dd492fdd5 updated for version 7.0090 2005-06-22 22:25:07 +00:00
d857f0e0f4 updated for version 7.0089 2005-06-21 22:37:39 +00:00
3f77047607 updated for version 7.0088 2005-06-19 22:56:27 +00:00
25414f2917 updated for version 7.0088 2005-06-19 22:55:26 +00:00
e13305e3be updated for version 7.0088 2005-06-19 22:54:15 +00:00
3c2def6bd2 updated for version 7.0088 2005-06-19 22:50:11 +00:00
1d73c88503 updated for version 7.0088 2005-06-19 22:48:47 +00:00
92124a33fd updated for version 7.0087 2005-06-17 22:03:40 +00:00
b2ec307fc6 updated for version 7.0087 2005-06-17 22:02:20 +00:00
e756604ff5 updated for version 7.0087 2005-06-17 22:00:15 +00:00
f7bbbc506e updated for version 7.0087 2005-06-17 21:55:00 +00:00
8db7318c2a updated for version 7.0087 2005-06-17 21:51:16 +00:00
520470a9d6 updated for version 7.0086 2005-06-16 21:59:56 +00:00
6bab4d1fd7 updated for version 7.0086 2005-06-16 21:53:56 +00:00
cf851ce930 updated for version 7.0086 2005-06-16 21:52:47 +00:00
ea424166e2 updated for version 7.0086 2005-06-16 21:51:00 +00:00
78599adb52 updated for version 7.0086 2005-06-16 21:47:53 +00:00
c998e3c16e updated for version 7.0085 2005-06-14 22:13:23 +00:00
f3bd51a172 updated for version 7.0085 2005-06-14 22:11:18 +00:00
a41461e061 updated for version 7.0085 2005-06-14 22:08:28 +00:00
8348ea624c updated for version 7.0085 2005-06-14 22:05:40 +00:00
9f30f50471 updated for version 7.0085 2005-06-14 22:01:04 +00:00
9ba0eb850c updated for version 7.0084 2005-06-13 22:28:56 +00:00
bac97eb8ae updated for version 7.0084 2005-06-13 22:12:09 +00:00
eaa48e7d41 updated for version 7.0083 2005-06-08 22:07:37 +00:00
3638c6876d updated for version 7.0083 2005-06-08 22:05:14 +00:00
f3681cc330 updated for version 7.0083 2005-06-08 22:03:13 +00:00
c669e66fb6 updated for version 7.0083 2005-06-08 22:00:03 +00:00
3eb98fbbd8 updated for version 7.0083 2005-06-08 21:57:32 +00:00
3982c54106 updated for version 7.0083 2005-06-08 21:56:31 +00:00
0e4d877ed8 updated for version 7.0082 2005-06-07 21:12:49 +00:00
82cf9b6851 updated for version 7.0082 2005-06-07 21:09:25 +00:00
c4a06d3447 updated for version 7.0082 2005-06-07 21:04:49 +00:00
78916d7c3b updated for version 7.0082 2005-06-07 21:03:23 +00:00
631d6f6847 updated for version 7.0082 2005-06-07 21:02:10 +00:00
b765d63491 updated for version 7.0082 2005-06-07 21:00:02 +00:00
86bc1fb004 updated for version 7.0082 2005-06-07 20:58:01 +00:00
45eeb13324 updated for version 7.0081 2005-06-06 21:59:07 +00:00
cfc6c43ce2 updated for version 7.0081 2005-06-06 21:50:35 +00:00
fb67026c27 updated for version 7.0080 2005-06-05 22:06:27 +00:00
aeb25e1f15 updated for version 7.0080 2005-06-05 22:05:00 +00:00
08e310e2a2 updated for version 7.0080 2005-06-05 22:03:17 +00:00
bc045ea87a updated for version 7.0080 2005-06-05 22:01:26 +00:00
50cde8273e updated for version 7.0080 2005-06-05 21:54:54 +00:00
75c50c46a6 updated for version 7.0079 2005-06-04 22:06:24 +00:00
51485f0624 updated for version 7.0079 2005-06-04 21:55:20 +00:00
4debb442bd updated for version 7.0078 2005-06-01 21:57:40 +00:00
6c0b44b5bf updated for version 7.0078 2005-06-01 21:56:33 +00:00
d6f676daaf updated for version 7.0078 2005-06-01 21:51:55 +00:00
2c29beed4c updated for version 7.0078 2005-06-01 21:46:07 +00:00
0cde940475 updated for version 7.0078 2005-06-01 21:44:32 +00:00
54ee775e9d updated for version 7.0077 2005-05-31 22:22:17 +00:00
5c06f8b043 updated for version 7.0077 2005-05-31 22:14:58 +00:00
a04f10b606 updated for version 7.0077 2005-05-31 22:09:46 +00:00
8b044b3264 updated for version 7.0077 2005-05-31 22:05:58 +00:00
d6ec8454b0 updated for version 7.0077 2005-05-31 22:02:19 +00:00
0e6830e009 updated for version 7.0076 2005-05-27 20:23:44 +00:00
21de6660e1 updated for version 7.0076 2005-05-27 20:18:59 +00:00
01a7b9dd06 updated for version 7.0076 2005-05-27 20:16:24 +00:00
389cb3eb25 updated for version 7.0076 2005-05-27 20:14:58 +00:00
ee0446cf60 updated for version 7.0076 2005-05-27 20:13:12 +00:00
67fe1a1336 updated for version 7.0075 2005-05-22 22:12:58 +00:00
de934d77b1 updated for version 7.0075 2005-05-22 22:09:40 +00:00
2389c3c640 updated for version 7.0075 2005-05-22 22:07:59 +00:00
0d40699d6d updated for version 7.0075 2005-05-22 22:03:39 +00:00
f95dc3b823 updated for version 7.0075 2005-05-22 22:02:25 +00:00
f4630b60f5 updated for version 7.0074 2005-05-20 21:31:17 +00:00
c930a3cc82 updated for version 7.0074 2005-05-20 21:27:20 +00:00
35c54e5651 updated for version 7.0074 2005-05-20 21:25:31 +00:00
c1087e64bc updated for version 7.0074 2005-05-20 21:22:17 +00:00
686f51ef8e updated for version 7.0074 2005-05-20 21:19:57 +00:00
555b280f28 updated for version 7.0073 2005-05-19 21:08:39 +00:00
051b782fa0 updated for version 7.0073 2005-05-19 21:00:46 +00:00
9c13b359b4 updated for version 7.0073 2005-05-19 20:53:52 +00:00
34cdc3e329 updated for version 7.0072 2005-05-18 22:24:46 +00:00
a7fc0101b2 updated for version 7.0072 2005-05-18 22:17:12 +00:00
142695f3c5 updated for version 7.0072 2005-05-18 22:12:12 +00:00
d9d305836e updated for version 7.0072 2005-05-18 22:10:28 +00:00
d8a4e563d0 updated for version 7.0072 2005-05-18 22:06:55 +00:00
c9a2d2e240 updated for version 7.0071 2005-04-24 22:09:56 +00:00
dba8a917ba updated for version 7.0071 2005-04-24 22:08:39 +00:00
46df82e4eb updated for version 7.0071 2005-04-24 22:06:24 +00:00
c91506a033 updated for version 7.0071 2005-04-24 22:04:21 +00:00
2a489f5fdd updated for version 7.0071 2005-04-24 22:01:01 +00:00
41bfd309b8 updated for version 7.0071 2005-04-24 21:59:46 +00:00
6f3058f6b4 updated for version 7.0071 2005-04-24 21:58:05 +00:00
86261f63f8 updated for version 7.0070 2005-04-23 20:53:25 +00:00
0cb032ecb8 updated for version 7.0070 2005-04-23 20:52:00 +00:00
8fcc0f71a1 updated for version 7.0070 2005-04-23 20:45:11 +00:00
091271e19f updated for version 7.0070 2005-04-23 20:43:58 +00:00
8fef2ad609 updated for version 7.0070 2005-04-23 20:42:23 +00:00
54ff3419c7 updated for version 7.0069 2005-04-20 19:48:33 +00:00
9d0ec2e49a updated for version 7.0069 2005-04-20 19:45:58 +00:00
1f74d98357 updated for version 7.0069 2005-04-20 19:43:36 +00:00
f3d8cff9d0 updated for version 7.0069 2005-04-20 19:40:37 +00:00
4ee034d26b updated for version 7.0069 2005-04-20 19:38:58 +00:00
2cf8b301df updated for version 7.0069 2005-04-20 19:37:22 +00:00
2c5bc17eb7 updated for version 7.0068 2005-04-19 21:42:30 +00:00
5c5474b386 updated for version 7.0068 2005-04-19 21:40:26 +00:00
fe5cafe9b4 updated for version 7.0068 2005-04-19 21:37:59 +00:00
b6b6dc8973 updated for version 7.0068 2005-04-19 21:35:02 +00:00
310f10370b updated for version 7.0068 2005-04-19 21:33:11 +00:00
63d5a1e57b updated for version 7.0068 2005-04-19 21:30:25 +00:00
0e21a3f623 updated for version 7.0067 2005-04-17 20:28:32 +00:00
99942f0b16 updated for version 7.0067 2005-04-17 20:20:14 +00:00
5482f33f78 updated for version 7.0067 2005-04-17 20:18:43 +00:00
075757c932 Set the binary flag 2005-04-17 15:24:23 +00:00
37799766b0 Set the binary flag 2005-04-17 15:21:00 +00:00
13fcaaf195 updated for version 7.0066 2005-04-15 21:13:42 +00:00
402d2fea70 updated for version 7.0066 2005-04-15 21:00:38 +00:00
4499d2ee58 updated for version 7.0066 2005-04-15 20:41:38 +00:00
b982ca5c88 updated for version 7.0065 2005-03-28 21:02:15 +00:00
582fd85b02 updated for version 7.0065 2005-03-28 20:58:01 +00:00
8b879e7fe8 updated for version 7.0065 2005-03-28 20:49:18 +00:00
2641f77fbc updated for version 7.0064 2005-03-25 21:58:17 +00:00
68b76a69aa updated for version 7.0064 2005-03-25 21:53:48 +00:00
a88d968da1 updated for version 7.0064 2005-03-25 21:45:43 +00:00
43b604cddc updated for version 7.0063 2005-03-22 23:06:55 +00:00
6bb683663a updated for version 7.0063 2005-03-22 23:03:44 +00:00
fc73515f7b updated for version 7.0063 2005-03-22 22:54:12 +00:00
dbc08a3459 updated for version 7.0063 2005-03-22 22:52:07 +00:00
2d3c0a9daa updated for version 7.0062 2005-03-21 08:27:48 +00:00
e19defe17a updated for version 7.0062 2005-03-21 08:23:33 +00:00
60c78929eb updated for version 7.0062 2005-03-20 22:40:14 +00:00
217ad920dd updated for version 7.0062 2005-03-20 22:37:15 +00:00
2e4096b077 updated for version 7.0062 2005-03-20 22:25:45 +00:00
a0dea674b8 updated for version 7.0062 2005-03-20 22:23:10 +00:00
c07611362a updated for version 7.0061 2005-03-18 20:30:32 +00:00
5409c051a5 updated for version 7.0061 2005-03-18 20:27:04 +00:00
4317d9b486 updated for version 7.0061 2005-03-18 20:25:31 +00:00
a5319aed9b updated for version 7.0061 2005-03-18 20:15:36 +00:00
a008465995 updated for version 7.0060 2005-03-16 09:57:51 +00:00
ef53c02238 updated for version 7.0060 2005-03-16 09:53:56 +00:00
916b7afcbb updated for version 7.0060 2005-03-16 09:52:38 +00:00
da5d740e92 updated for version 7.0060 2005-03-16 09:50:44 +00:00
58e7f2bb4c updated for version 7.0060 2005-03-16 09:48:18 +00:00
eafefe4fb0 updated for version 7.0060 2005-03-16 09:47:09 +00:00
5b743bfc4d updated for version 7.0060 2005-03-15 22:50:43 +00:00
f36d3693dd updated for version 7.0060 2005-03-15 22:48:14 +00:00
fb26980c31 updated for version 7.0060 2005-03-15 22:46:30 +00:00
e2cc9702a6 updated for version 7.0060 2005-03-15 22:43:58 +00:00
152c9dd52b updated for version 7.0060 2005-03-15 22:37:00 +00:00
3918c950c9 updated for version 7.0060 2005-03-15 22:34:55 +00:00
28a37ffcf7 updated for version 7.0060 2005-03-15 22:28:00 +00:00
11cbeb1326 updated for version 7.0059 2005-03-11 22:51:16 +00:00
4ad237ddc8 updated for version 7.0059 2005-03-11 22:49:40 +00:00
cd71fa3c1e updated for version 7.0059 2005-03-11 22:46:48 +00:00
df7b1ffe99 updated for version 7.0059 2005-03-11 22:40:50 +00:00
9062a9dfbf updated for version 7.0058 2005-03-08 22:46:26 +00:00
2f6b0b8fce updated for version 7.0058 2005-03-08 22:43:10 +00:00
111ff9f40e updated for version 7.0058 2005-03-08 22:40:03 +00:00
9be038da7d updated for version 7.0058 2005-03-08 22:34:32 +00:00
95fb60ac58 updated for version 7.0058 2005-03-08 22:29:20 +00:00
e2ac10d732 updated for version 7.0057 2005-03-07 23:26:06 +00:00
4d34b432db updated for version 7.0057 2005-03-07 23:22:00 +00:00
f1f8bc5b63 updated for version 7.0057 2005-03-07 23:20:08 +00:00
e4efc3b270 updated for version 7.0057 2005-03-07 23:16:51 +00:00
44ecf65f74 updated for version 7.0057 2005-03-07 23:09:59 +00:00
fd91ecbbe0 updated for version 7.0057 2005-03-07 23:06:25 +00:00
5ea7e8b730 updated for version 7.0057 2005-03-07 23:04:48 +00:00
408fb62450 updated for version 7.0057 2005-03-07 23:03:19 +00:00
52b4b557a2 updated for version 7.0057 2005-03-07 23:00:57 +00:00
d62bec86bf updated for version 7.0057 2005-03-07 22:56:57 +00:00
fdac490def updated for version 7.0056 2005-03-06 23:42:22 +00:00
8bf59b9507 updated for version 7.0056 2005-03-06 23:40:56 +00:00
bc7aa85d8a updated for version 7.0056 2005-03-06 23:38:09 +00:00
19a09a1893 updated for version 7.0055 2005-03-04 23:39:37 +00:00
7383034c0a updated for version 7.0054 2005-02-28 22:48:19 +00:00
8cd06cabf3 updated for version 7.0054 2005-02-28 22:44:58 +00:00
4d01d630a5 updated for version 7.0054 2005-02-28 22:39:03 +00:00
038eb0ed16 updated for version 7.0053 2005-02-27 22:43:26 +00:00
2be221fa5e updated for version 7.0053 2005-02-27 22:41:14 +00:00
a21b29a2fc updated for version 7.0053 2005-02-27 22:40:05 +00:00
78cb7d249e updated for version 7.0053 2005-02-27 22:38:23 +00:00
32e7b2d575 updated for version 7.0053 2005-02-27 22:36:47 +00:00
05159a0c6a updated for version 7.0052 2005-02-26 23:04:13 +00:00
5313dcb75a updated for version 7.0051 2005-02-22 08:56:13 +00:00
26a60b4524 updated for version 7.0051 2005-02-22 08:49:11 +00:00
df177f679e updated for version 7.0051 2005-02-22 08:39:57 +00:00
6bdcfc08cb updated for version 7.0051 2005-02-22 08:28:13 +00:00
81bf708341 updated for version 7.0050 2005-02-12 14:31:42 +00:00
4399ef4764 updated for version 7.0050 2005-02-12 14:29:27 +00:00
b11bd7e43f updated for version 7.0049 2005-02-07 22:05:52 +00:00
bee0c5b29f updated for version 7.0049 2005-02-07 22:03:36 +00:00
7c62692d43 updated for version 7.0049 2005-02-07 22:01:03 +00:00
f97ca8f066 updated for version 7.0049 2005-02-07 21:49:25 +00:00
2a8d1f877c updated for version 7.0048 2005-02-05 21:43:56 +00:00
3a7c85bc13 updated for version 7.0048 2005-02-05 21:39:53 +00:00
8089cae03b updated for version 7.0048 2005-02-05 21:35:05 +00:00
758711c5dc updated for version 7.0047 2005-02-02 23:11:38 +00:00
f583668da1 updated for version 7.0047 2005-02-02 23:09:45 +00:00
6ac5429d3b updated for version 7.0047 2005-02-02 23:07:25 +00:00
748bf0374b updated for version 7.0047 2005-02-02 23:04:36 +00:00
24c088a284 updated for version 7.0047 2005-02-02 22:55:47 +00:00
2e6aff38e0 updated for version 7.0046 2005-01-31 19:25:36 +00:00
485db9bbb2 updated for version 7.0046 2005-01-31 19:23:41 +00:00
d438e91c93 updated for version 7.0046 2005-01-31 19:21:46 +00:00
2ce06f6eb9 updated for version 7.0046 2005-01-31 19:19:04 +00:00
b23c33872a updated for version 7.0046 2005-01-31 19:09:12 +00:00
65c1b01669 updated for version 7.0046 2005-01-31 19:02:28 +00:00
0182465bc0 updated for version 7.0046 2005-01-31 18:58:23 +00:00
929224039f updated for version 7.0046 2005-01-31 18:57:18 +00:00
5b625c53a5 updated for version 7.0046 2005-01-31 18:55:55 +00:00
532c780ef0 updated for version 7.0045 2005-01-27 14:44:31 +00:00
b2956cd218 updated for version 7.0045 2005-01-27 14:42:53 +00:00
677ee6890d updated for version 7.0045 2005-01-27 14:41:15 +00:00
10de2da0f5 updated for version 7.0045 2005-01-27 14:33:00 +00:00
410d0286f4 updated for version 7.0045 2005-01-27 14:31:44 +00:00
33570924ba updated for version 7.0044 2005-01-25 22:26:29 +00:00
b71ec9fc70 updated for version 7.0044 2005-01-25 22:22:02 +00:00
7df2d6629f updated for version 7.0044 2005-01-25 22:18:08 +00:00
dad6b69c00 updated for version 7.0044 2005-01-25 22:14:34 +00:00
8f999f1999 updated for version 7.0044 2005-01-25 22:12:55 +00:00
df3267e4e1 updated for version 7.0044 2005-01-25 22:07:05 +00:00
495de9c1ae updated for version 7.0044 2005-01-25 22:03:25 +00:00
6ebb114c0c updated for version 7.0044 2005-01-25 21:58:26 +00:00
9d75c83f8f updated for version 7.0044 2005-01-25 21:57:23 +00:00
281bdcec60 updated for version 7.0044 2005-01-25 21:53:18 +00:00
aab21c3533 updated for version 7.0044 2005-01-25 21:46:35 +00:00
1fad5d49c9 updated for version 7.0044 2005-01-25 21:44:33 +00:00
623fd5e206 updated for version 7.0044 2005-01-25 21:42:15 +00:00
a7043832f3 updated for version 7.0043 2005-01-21 11:56:39 +00:00
dcaf10e19a updated for version 7.0043 2005-01-21 11:55:25 +00:00
ca4729948b updated for version 7.0043 2005-01-21 11:46:23 +00:00
ce5e58e601 updated for version 7.0042 2005-01-19 22:24:34 +00:00
6abd8e9735 updated for version 7.0042 2005-01-19 22:21:15 +00:00
383f9bc302 updated for version 7.0042 2005-01-19 22:18:32 +00:00
c92ad2e2c2 updated for version 7.0042 2005-01-19 22:08:28 +00:00
9ef486dbf3 updated for version 7.0041 2005-01-17 22:23:00 +00:00
bac234ead6 updated for version 7.0041 2005-01-17 22:21:07 +00:00
d6754643d0 updated for version 7.0041 2005-01-17 22:18:45 +00:00
3a3a72348d updated for version 7.0041 2005-01-17 22:16:15 +00:00
f3bae6935a updated for version 7.0041 2005-01-17 22:13:48 +00:00
af7f641de4 updated for version 7.0041 2005-01-17 22:11:23 +00:00
89e5d68d42 updated for version 7.0041 2005-01-17 22:06:23 +00:00
7480b5cefe updated for version 7.0040 2005-01-16 22:07:38 +00:00
798c5a7a84 updated for version 7.0040 2005-01-16 22:06:30 +00:00
9cd15160b8 updated for version 7.0040 2005-01-16 22:02:49 +00:00
0cf6f545ac updated for version 7.0040 2005-01-16 21:59:36 +00:00
32e4e1f1d8 updated for version 7.0040 2005-01-16 21:57:33 +00:00
1d817d0321 updated for version 7.0040 2005-01-16 21:56:27 +00:00
e9a4126498 updated for version 7.0039 2005-01-15 22:18:47 +00:00
f1ab380df5 updated for version 7.0039 2005-01-15 22:17:32 +00:00
2fda12f0fa updated for version 7.0039 2005-01-15 22:14:15 +00:00
6d14ccda51 updated for version 7.0039 2005-01-15 22:08:30 +00:00
8c711458a6 updated for version 7.0038 2005-01-14 21:53:12 +00:00
d8b0273231 updated for version 7.0038 2005-01-14 21:48:43 +00:00
fd371684fa updated for version 7.0038 2005-01-14 21:42:54 +00:00
31c67ef813 updated for version 7.0037 2005-01-11 21:34:41 +00:00
2a41f3a19f updated for version 7.0037 2005-01-11 21:30:59 +00:00
5f2bb9f584 updated for version 7.0037 2005-01-11 21:29:04 +00:00
f7889b6c73 updated for version 7.0037 2005-01-11 21:23:08 +00:00
c5a1e80ca2 updated for version 7.0037 2005-01-11 21:21:40 +00:00
ab7013c8d8 updated for version 7.0036 2005-01-09 21:23:56 +00:00
b7d6e72b85 updated for version 7.0036 2005-01-09 21:22:45 +00:00
540d6e3a01 updated for version 7.0036 2005-01-09 21:20:18 +00:00
a40c500a4c updated for version 7.0036 2005-01-09 21:16:21 +00:00
6cc1619799 updated for version 7.0035 2005-01-08 21:49:45 +00:00
9588a0f72b updated for version 7.0035 2005-01-08 21:45:39 +00:00
e49b69a091 updated for version 7.0034 2005-01-08 16:11:57 +00:00
13065c4e70 updated for version 7.0034 2005-01-08 16:08:21 +00:00
cf3630f2d0 updated for version 7.0034 2005-01-08 16:04:29 +00:00
0d6602271c updated for version 7.0033 2005-01-07 21:51:51 +00:00
a14de3dd5b updated for version 7.0033 2005-01-07 21:48:26 +00:00
6f7926cd2a updated for version 7.0033 2005-01-07 21:45:22 +00:00
8a283e5059 updated for version 7.0032 2005-01-06 23:28:25 +00:00
de8866baa8 updated for version 7.0032 2005-01-06 23:24:37 +00:00
8a7e52f4c2 updated for version 7.0032 2005-01-06 23:22:30 +00:00
bb761a783f updated for version 7.0032 2005-01-06 23:19:09 +00:00
3d60ec2aaf updated for version 7.0031 2005-01-05 22:19:46 +00:00
1280586e4b updated for version 7.0031 2005-01-05 22:16:17 +00:00
06fb435a1c updated for version 7.0031 2005-01-05 22:10:30 +00:00
f4c01101e7 updated for version 7.0031 2005-01-05 22:08:40 +00:00
b32ce2d7e8 updated for version 7.0031 2005-01-05 22:07:01 +00:00
c70646c652 updated for version 7.0030 2005-01-04 21:52:38 +00:00
0a56cb85a6 updated for version 7.0030 2005-01-04 21:45:14 +00:00
2079a601eb updated for version 7.0030 2005-01-04 21:43:22 +00:00
fca34d6d94 updated for version 7.0030 2005-01-04 21:38:36 +00:00
b11160ef88 updated for version 7.0030 2005-01-04 21:31:43 +00:00
a0a83bea65 updated for version 7.0030 2005-01-04 21:26:43 +00:00
323850cc6d updated for version 7.0030 2005-01-04 21:24:54 +00:00
2fa15e6c7b updated for version 7.0030 2005-01-04 21:23:48 +00:00
fa4fd1bf97 updated for version 7.0030 2005-01-04 21:21:28 +00:00
c83c455ee7 updated for version 7.0030 2005-01-04 21:19:20 +00:00
2317284d1b updated for version 7.0030 2005-01-04 21:16:35 +00:00
b4022957c1 updated for version 7.0030 2005-01-04 21:14:57 +00:00
bac9684e42 updated for version 7.0030 2005-01-04 21:13:16 +00:00
e8dcf625b9 updated for version 7.0030 2005-01-04 21:12:13 +00:00
87c1948243 updated for version 7.0030 2005-01-04 21:07:44 +00:00
49cd957922 updated for version 7.0029 2005-01-03 21:06:01 +00:00
d7ee7ce231 updated for version 7.0029 2005-01-03 21:02:03 +00:00
f9980f116b updated for version 7.0029 2005-01-03 20:58:59 +00:00
306cf5720e updated for version 7.0029 2005-01-03 20:56:17 +00:00
0a77e47767 updated for version 7.0029 2005-01-03 20:55:08 +00:00
1c2fda2097 updated for version 7.0028 2005-01-02 11:43:19 +00:00
ec2dad6329 updated for version 7.0028 2005-01-02 11:36:03 +00:00
b78b0b095e updated for version 7.0028 2005-01-02 11:32:29 +00:00
b7fcef5607 updated for version 7.0028 2005-01-02 11:31:05 +00:00
3411469dd2 updated for version 7.0028 2005-01-02 11:28:13 +00:00
567e4dec2c updated for version 7.0027 2004-12-31 21:01:02 +00:00
def9e829de updated for version 7.0027 2004-12-31 20:58:58 +00:00
dfccaf0f00 updated for version 7.0027 2004-12-31 20:56:11 +00:00
8fc061c7f7 updated for version 7.0026 2004-12-29 21:03:02 +00:00
81695250ef updated for version 7.0026 2004-12-29 20:58:21 +00:00
86b6835997 updated for version 7.0025 2004-12-27 21:59:20 +00:00
b5bf5b8fae updated for version 7.0024 2004-12-24 14:35:23 +00:00
1cd871b534 updated for version 7.0023 2004-12-19 22:46:22 +00:00
46c9c73de8 updated for version 7.0022 2004-12-12 11:37:09 +00:00
d8b0cf1cc5 updated for version 7.0022 2004-12-12 11:33:30 +00:00
293ee4d421 updated for version 7.0021 2004-12-09 21:34:53 +00:00
741b07e009 updated for version 7.0021 2004-12-09 21:09:42 +00:00
35a9aaab4a updated for version 7.0020 2004-10-24 19:23:07 +00:00
009b2592f7 updated for version 7.0020 2004-10-24 19:18:58 +00:00
47136d70fa updated for version 7.0019 2004-10-12 20:02:24 +00:00
5c4e21cf4d updated for version 7.0019 2004-10-12 19:54:52 +00:00
7102bf0752 updated for version 7.0019 2004-10-12 19:53:42 +00:00
7b0294cb9f updated for version 7.0018 2004-10-11 10:16:09 +00:00
7171abea1a updated for version 7.0018 2004-10-11 10:06:20 +00:00
349b2f643a updated for version 7.0018 2004-10-11 10:00:50 +00:00
3fdfa4a9a5 updated for version 7.0017 2004-10-07 21:02:47 +00:00
e5f258eb4c updated for version 7.0017 2004-10-07 20:45:47 +00:00
c0197e2815 updated for version 7.0016 2004-09-13 20:26:32 +00:00
15d0a8c77d updated for version 7.0015 2004-09-06 17:44:46 +00:00
d4755bb0e0 updated for version 7.0014 2004-09-02 19:12:26 +00:00
269ec658f0 updated for version 7.0013 2004-07-29 08:43:53 +00:00
5eb86f9199 updated for version 7.0012 2004-07-26 12:53:41 +00:00
89cb5e0f64 updated for version 7.0011 2004-07-19 20:55:54 +00:00
1010 changed files with 256101 additions and 110649 deletions

View File

@ -2,7 +2,7 @@
# Used by Makefile and upload.aap.
# source files for all source archives
SRC_ALL1 = \
SRC_ALL = \
src/README.txt \
src/arabic.c \
src/arabic.h \
@ -30,6 +30,8 @@ SRC_ALL1 = \
src/gui.h \
src/gui_beval.c \
src/gui_beval.h \
src/hardcopy.c \
src/hashtable.c \
src/keymap.h \
src/macros.h \
src/main.c \
@ -50,12 +52,14 @@ SRC_ALL1 = \
src/ops.c \
src/option.c \
src/option.h \
src/popupmenu.c \
src/quickfix.c \
src/regexp.c \
src/regexp.h \
src/screen.c \
src/search.c \
src/structs.h \
src/spell.c \
src/syntax.c \
src/tag.c \
src/term.c \
@ -68,13 +72,12 @@ SRC_ALL1 = \
src/vim.h \
src/window.c \
src/xxd/xxd.c \
SRC_ALL2 = \
src/main.aap \
src/testdir/main.aap \
src/testdir/*.in \
src/testdir/*.ok \
src/testdir/test[0-9]*.ok \
src/testdir/test49.vim \
src/testdir/test60.vim \
src/proto.h \
src/proto/buffer.pro \
src/proto/charset.pro \
@ -92,6 +95,8 @@ SRC_ALL2 = \
src/proto/getchar.pro \
src/proto/gui.pro \
src/proto/gui_beval.pro \
src/proto/hardcopy.pro \
src/proto/hashtable.pro \
src/proto/main.pro \
src/proto/mark.pro \
src/proto/mbyte.pro \
@ -106,10 +111,12 @@ SRC_ALL2 = \
src/proto/normal.pro \
src/proto/ops.pro \
src/proto/option.pro \
src/proto/popupmenu.pro \
src/proto/quickfix.pro \
src/proto/regexp.pro \
src/proto/screen.pro \
src/proto/search.pro \
src/proto/spell.pro \
src/proto/syntax.pro \
src/proto/tag.pro \
src/proto/term.pro \
@ -130,7 +137,6 @@ SRC_UNIX = \
pixmaps/gen-inline-pixbufs.sh \
pixmaps/stock_icons.h \
src/INSTALL \
src/INSTALLkde.txt \
src/Makefile \
src/auto/configure \
src/config.aap.in \
@ -147,18 +153,20 @@ SRC_UNIX = \
src/gui_gtk_f.c \
src/gui_gtk_f.h \
src/gui_gtk_x11.c \
src/gui_kde.cc \
src/gui_kde_widget.cc \
src/gui_kde_widget.h \
src/gui_kde_x11.cc \
src/kvim_iface.h \
src/gui_motif.c \
src/gui_xmdlg.c \
src/gui_xmebw.c \
src/gui_xmebw.h \
src/gui_xmebwp.h \
src/gui_x11.c \
src/gui_x11_pm.h \
src/hangulin.c \
src/if_xcmdsrv.c \
src/integration.c \
src/integration.h \
src/link.sh \
src/installman.sh \
src/installml.sh \
src/mkinstalldirs \
src/os_unix.c \
src/os_unix.h \
@ -170,9 +178,8 @@ SRC_UNIX = \
src/proto/gui_athena.pro \
src/proto/gui_gtk.pro \
src/proto/gui_gtk_x11.pro \
src/proto/gui_kde.pro \
src/proto/gui_kde_x11.pro \
src/proto/gui_motif.pro \
src/proto/gui_xmdlg.pro \
src/proto/gui_x11.pro \
src/proto/hangulin.pro \
src/proto/if_xcmdsrv.pro \
@ -203,6 +210,7 @@ SRC_DOS_UNIX = \
src/if_perlsfio.c \
src/if_python.c \
src/if_ruby.c \
src/if_sniff.h \
src/if_tcl.c \
src/proto/if_cscope.pro \
src/proto/if_mzsch.pro \
@ -315,7 +323,7 @@ SRC_DOS = \
# source files for DOS without CR/LF translation (also in the extra archive)
SRC_DOS_BIN = \
src/VisVim/Res \
src/VisVim/Res/*.bmp \
src/tearoff.bmp \
src/tools.bmp \
src/tools16.bmp \
@ -334,17 +342,12 @@ SRC_AMI = \
README_amisrc.txt.info \
src.info \
src/INSTALLami.txt \
src/Make_agui.mak \
src/Make_aros.mak \
src/Make_dice.mak \
src/Make_manx.mak \
src/Make_morph.mak \
src/Make_sas.mak \
src/gui_amiga.c \
src/gui_amiga.h \
src/os_amiga.c \
src/os_amiga.h \
src/proto/gui_amiga.pro \
src/proto/os_amiga.pro \
src/testdir/Make_amiga.mak \
src/testdir/amiga.vim \
@ -353,21 +356,15 @@ SRC_AMI = \
# source files for the Mac (also in the extra archive)
SRC_MAC = \
src/INSTALLmac.txt \
src/Make_mpw.mak \
src/dehqx.py \
src/gui_mac.c \
src/gui_mac.icns \
src/gui_mac.r \
src/os_mac.build \
src/os_mac.c \
src/os_mac.h \
src/os_mac.rsr.hqx \
src/os_mac.sit.hqx \
src/os_mac_conv.c \
src/os_macosx.c \
src/os_mac.pbproj/project.pbxproj
src/proto/gui_mac.pro \
src/proto/os_mac.pro \
src/proto/os_mac_conv.pro \
# source files for VMS (in the extra archive)
SRC_VMS = \
@ -414,12 +411,9 @@ SRC_EXTRA = \
README_os390.txt \
src/Make_mint.mak \
src/Make_ro.mak \
src/gui_beos.cc \
src/gui_beos.h \
src/gui_riscos.c \
src/gui_riscos.h \
src/if_sniff.c \
src/if_sniff.h \
src/infplist.xml \
src/link.390 \
src/os_beos.c \
@ -428,9 +422,7 @@ SRC_EXTRA = \
src/os_mint.h \
src/os_riscos.c \
src/os_riscos.h \
src/proto/gui_beos.pro \
src/proto/gui_riscos.pro \
src/proto/os_beos.pro \
src/proto/os_riscos.pro \
src/os_vms_fix.com \
src/toolbar.phi \
@ -453,6 +445,7 @@ RT_ALL = \
runtime/gvimrc_example.vim \
runtime/macros/README.txt \
runtime/macros/dvorak \
runtime/macros/editexisting.vim \
runtime/macros/hanoi/click.me \
runtime/macros/hanoi/hanoi.vim \
runtime/macros/hanoi/poster \
@ -506,6 +499,8 @@ RT_SCRIPTS = \
runtime/delmenu.vim \
runtime/synmenu.vim \
runtime/makemenu.vim \
runtime/autoload/*.vim \
runtime/autoload/README.txt \
runtime/colors/*.vim \
runtime/colors/README.txt \
runtime/compiler/*.vim \
@ -525,10 +520,6 @@ RT_UNIX = \
runtime/KVim.desktop \
runtime/hi16-action-make.png \
runtime/hi22-action-make.png \
runtime/kde-tips \
runtime/kvim32x32.png \
runtime/kvim48x48.png \
runtime/kvim64x64.png \
runtime/vim16x16.png \
runtime/vim16x16.xpm \
runtime/vim32x32.png \
@ -659,6 +650,12 @@ EXTRA = \
# generic language files
LANG_GEN = \
README_lang.txt \
runtime/doc/*-fr.1 \
runtime/doc/*-fr.UTF-8.1 \
runtime/doc/*-it.1 \
runtime/doc/*-it.UTF-8.1 \
runtime/doc/*-ru.1 \
runtime/doc/*-ru.UTF-8.1 \
runtime/lang/README.txt \
runtime/lang/menu_*.vim \
runtime/keymap/README.txt \
@ -671,15 +668,35 @@ LANG_GEN = \
runtime/tutor/tutor.ko.* \
runtime/tutor/tutor.pl.* \
runtime/tutor/tutor.ru.* \
runtime/tutor/tutor.sk.* \
runtime/tutor/tutor.zh.* \
runtime/spell/README.txt \
runtime/spell/??/*.diff \
runtime/spell/??/main.aap \
runtime/spell/yi/README.txt \
runtime/spell/main.aap \
runtime/spell/*.vim \
runtime/spell/fixdup \
# generic language files, binary
LANG_GEN_BIN = \
runtime/spell/README_en.txt \
runtime/spell/en.ascii.spl \
runtime/spell/en.latin1.spl \
runtime/spell/en.utf-8.spl \
runtime/spell/en.ascii.sug \
runtime/spell/en.latin1.sug \
runtime/spell/en.utf-8.sug \
# all files for lang archive
LANG_SRC = \
src/po/README.txt \
src/po/README_mingw.txt \
src/po/README_mvc.txt \
src/po/check.vim \
src/po/cleanup.vim \
src/po/Makefile \
src/po/Make_cyg.mak \
src/po/Make_ming.mak \
src/po/Make_mvc.mak \
src/po/sjiscorr.c \

View File

@ -37,8 +37,6 @@ all install uninstall tools config configure proto depend lint tags types test t
#
# TARGET PRODUCES CONTAINS
# unixall vim-#.#.tar.bz2 Runtime files and Sources for Unix
# unixrt vim-#.#-rt[12].tar.gz Runtime files for Unix
# unixsrc vim-#.#-src[12].tar.gz Sources for Unix
#
# extra vim-#.#-extra.tar.gz Extra source and runtime files
# lang vim-#.#-lang.tar.gz multi-language files
@ -66,12 +64,12 @@ all install uninstall tools config configure proto depend lint tags types test t
#
# All output files are created in the "dist" directory. Existing files are
# overwritten!
# To do all this you need the unixrt, unixsrc, extra and lang archives, and
# To do all this you need the unix, extra and lang archives, and
# compiled binaries.
# Before creating an archive first delete all backup files, *.orig, etc.
MAJOR = 6
MINOR = 3
MAJOR = 7
MINOR = 0aa
# Uncomment this line if the Win32s version is to be included.
#DOSBIN_S = dosbin_s
@ -80,10 +78,11 @@ MINOR = 3
#
# - Update Vim version number. For a test version in: src/version.h, Contents,
# MAJOR/MINOR above, VIMRTDIR and VERSION in src/Makefile, README*.txt,
# runtime/doc/*.txt and nsis/gvim.nsi. For a minor/major version:
# src/GvimExt/GvimExt.reg, src/vim16.def.
# runtime/doc/*.txt and nsis/gvim.nsi. Other things in README_os2.txt. For a
# minor/major version: src/GvimExt/GvimExt.reg, src/vim.def, src/vim16.def.
# - Correct included_patches[] in src/version.c.
# - Compile Vim with GTK, Perl, Python, TCL, Ruby, Cscope and "huge" features.
# - Compile Vim with GTK, Perl, Python, TCL, Ruby, MZscheme, Cscope and "huge"
# features. Exclude workshop and SNiFF.
# - With these features: "make proto" (requires cproto and Motif installed;
# ignore warnings for missing include files, fix problems for syntax errors).
# - With these features: "make depend" (works best with gcc).
@ -125,7 +124,7 @@ MINOR = 3
# "uninstald16.exe".
# 32 bit DOS version:
# - Set environment for compiling with DJGPP; "gmake -f Make_djg.mak".
# - "rm testdir/*.out", "make -f Make_djg.mak test" and check the output.
# - "rm testdir/*.out", "gmake -f Make_djg.mak test" and check the output.
# - Rename the executables to "vimd32.exe", "xxdd32.exe", "installd32.exe" and
# "uninstald32.exe".
# Win32 console version:
@ -262,10 +261,8 @@ dist/$(COMMENT_FARSI): dist/comment
dist/$(COMMENT_LANG): dist/comment
echo "Vim - Vi IMproved - v$(VDOT) MS-Windows language files" > dist/$(COMMENT_LANG)
unixrt: dist prepare
-rm -f dist/$(VIMVER)-rt1.tar.gz
-rm -f dist/$(VIMVER)-rt2.tar.gz
# first runtime file
unixall: dist prepare
-rm -f dist/$(VIMVER).tar.bz2
-rm -rf dist/$(VIMRTDIR)
mkdir dist/$(VIMRTDIR)
tar cf - \
@ -273,35 +270,10 @@ unixrt: dist prepare
$(RT_ALL_BIN) \
$(RT_UNIX) \
$(RT_UNIX_DOS_BIN) \
| (cd dist/$(VIMRTDIR); tar xf -)
cd dist && tar cf $(VIMVER)-rt1.tar $(VIMRTDIR)
gzip -9 dist/$(VIMVER)-rt1.tar
# second runtime file (script and language files)
-rm -rf dist/$(VIMRTDIR)
mkdir dist/$(VIMRTDIR)
tar cf - \
$(RT_SCRIPTS) \
$(LANG_GEN) \
| (cd dist/$(VIMRTDIR); tar xf -)
cd dist && tar cf $(VIMVER)-rt2.tar $(VIMRTDIR)
gzip -9 dist/$(VIMVER)-rt2.tar
unixsrc: dist prepare
-rm -f dist/$(VIMVER)-src1.tar.gz
-rm -f dist/$(VIMVER)-src2.tar.gz
# first source file
-rm -rf dist/$(VIMRTDIR)
mkdir dist/$(VIMRTDIR)
tar cf - \
$(SRC_ALL1) \
| (cd dist/$(VIMRTDIR); tar xf -)
cd dist && tar cf $(VIMVER)-src1.tar $(VIMRTDIR)
gzip -9 dist/$(VIMVER)-src1.tar
# second source file
-rm -rf dist/$(VIMRTDIR)
mkdir dist/$(VIMRTDIR)
tar cf - \
$(SRC_ALL2) \
$(LANG_GEN_BIN) \
$(SRC_ALL) \
$(SRC_UNIX) \
$(SRC_DOS_UNIX) \
| (cd dist/$(VIMRTDIR); tar xf -)
@ -309,21 +281,6 @@ unixsrc: dist prepare
cp -f src/config.mk.dist dist/$(VIMRTDIR)/src/auto/config.mk
# Create an empty config.h file, make dependencies require it
touch dist/$(VIMRTDIR)/src/auto/config.h
# Make sure configure is newer than config.mk to force it to be generated
touch dist/$(VIMRTDIR)/src/configure
cd dist && tar cf $(VIMVER)-src2.tar $(VIMRTDIR)
gzip -9 dist/$(VIMVER)-src2.tar
unixall: dist unixsrc unixrt
-rm -f dist/$(VIMVER).tar.bz2
-rm -rf dist/$(VIMRTDIR)
mkdir dist/$(VIMRTDIR)
cd dist && tar xfz $(VIMVER)-src1.tar.gz
cd dist && tar xfz $(VIMVER)-src2.tar.gz
cd dist && tar xfz $(VIMVER)-rt1.tar.gz
cd dist && tar xfz $(VIMVER)-rt2.tar.gz
# Create an empty config.h file, make dependencies require it
touch dist/$(VIMRTDIR)/src/auto/config.h
# Make sure configure is newer than config.mk to force it to be generated
touch dist/$(VIMRTDIR)/src/configure
cd dist && tar cf $(VIMVER).tar $(VIMRTDIR)
@ -354,6 +311,7 @@ lang: dist prepare
touch dist/$(VIMRTDIR)/src/po/sk.cp1250.po
touch dist/$(VIMRTDIR)/src/po/zh_CN.cp936.po
touch dist/$(VIMRTDIR)/src/po/ru.cp1251.po
touch dist/$(VIMRTDIR)/src/po/uk.cp1251.po
cd dist && tar cf $(VIMVER)-lang.tar $(VIMRTDIR)
gzip -9 dist/$(VIMVER)-lang.tar
@ -403,8 +361,7 @@ amisrc: dist prepare
mkdir dist/Vim/$(VIMRTDIR)
tar cf - \
$(ROOT_AMI) \
$(SRC_ALL1) \
$(SRC_ALL2) \
$(SRC_ALL) \
$(SRC_AMI) \
$(SRC_AMI_DOS) \
| (cd dist/Vim/$(VIMRTDIR); tar xf -)
@ -421,12 +378,15 @@ dosrt: dist dist/$(COMMENT_RT) dosrt_unix2dos
-rm -rf dist/vim$(VERSION)rt.zip
cd dist && zip -9 -rD -z vim$(VERSION)rt.zip vim <$(COMMENT_RT)
# Split in two parts to avoid a "argument list too long" error.
dosrt_unix2dos: dist prepare no_title.vim
-rm -rf dist/vim
mkdir dist/vim
mkdir dist/vim/$(VIMRTDIR)
tar cf - \
$(RT_ALL) \
| (cd dist/vim/$(VIMRTDIR); tar xf -)
tar cf - \
$(RT_SCRIPTS) \
$(RT_DOS) \
$(RT_NO_UNIX) \
@ -438,6 +398,7 @@ dosrt_unix2dos: dist prepare no_title.vim
$(RT_UNIX_DOS_BIN) \
$(RT_ALL_BIN) \
$(RT_DOS_BIN) \
$(LANG_GEN_BIN) \
| (cd dist/vim/$(VIMRTDIR); tar xf -)
mv dist/vim/$(VIMRTDIR)/runtime/* dist/vim/$(VIMRTDIR)
rmdir dist/vim/$(VIMRTDIR)/runtime
@ -568,9 +529,9 @@ doslang: dist prepare no_title.vim dist/$(COMMENT_LANG)
find dist/vim/$(VIMRTDIR) -type f -exec $(VIM) -e -u no_title.vim -c ":set tx|wq" {} \;
# Add the message translations. Trick: skip ja.mo and use ja.sjis.mo instead.
# Same for cs.mo / cs.cp1250.mo, pl.mo / pl.cp1250.mo, sk.mo / sk.cp1250.mo,
# zh_CN.mo / zh_CN.cp936.mo and ru.mo / ru.cp1251.mo.
# zh_CN.mo / zh_CN.cp936.mo, uk.mo / uk.cp1251.mo and ru.mo / ru.cp1251.mo.
for i in $(LANG_DOS); do \
if test "$$i" != "src/po/ja.mo" -a "$$i" != "src/po/pl.mo" -a "$$i" != "src/po/cs.mo" -a "$$i" != "src/po/sk.mo" -a "$$i" != "src/po/zh_CN.mo" -a "$$i" != "src/po/ru.mo"; then \
if test "$$i" != "src/po/ja.mo" -a "$$i" != "src/po/pl.mo" -a "$$i" != "src/po/cs.mo" -a "$$i" != "src/po/sk.mo" -a "$$i" != "src/po/zh_CN.mo" -a "$$i" != "src/po/ru.mo" -a "$$i" != "src/po/uk.mo"; then \
n=`echo $$i | sed -e "s+src/po/\([-a-zA-Z0-9_]*\(.UTF-8\)*\)\(.sjis\)*\(.cp1250\)*\(.cp1251\)*\(.cp936\)*.mo+\1+"`; \
mkdir dist/vim/$(VIMRTDIR)/lang/$$n; \
mkdir dist/vim/$(VIMRTDIR)/lang/$$n/LC_MESSAGES; \
@ -587,8 +548,7 @@ dossrc: dist no_title.vim dist/$(COMMENT_SRC) runtime/doc/uganda.nsis.txt
mkdir dist/vim
mkdir dist/vim/$(VIMRTDIR)
tar cf - \
$(SRC_ALL1) \
$(SRC_ALL2) \
$(SRC_ALL) \
$(SRC_DOS) \
$(SRC_AMI_DOS) \
$(SRC_DOS_UNIX) \

View File

@ -5,28 +5,28 @@ See "README.txt" for general information about Vim.
NOTE: You will need two archives:
vim62rt.zip contains the runtime files (same as for the PC version)
vim62os2.zip contains the OS/2 executables
vim70rt.zip contains the runtime files (same as for the PC version)
vim70os2.zip contains the OS/2 executables
1. Go to the directory where you want to put the Vim files. Examples:
cd C:\
cd D:\editors
2. Unpack the zip archives. This will create a new directory "vim/vim62",
2. Unpack the zip archives. This will create a new directory "vim/vim70",
in which all the distributed Vim files are placed. Since the directory
name includes the version number, it is unlikely that you overwrite
existing files.
Examples:
pkunzip -d vim62os2.zip
unzip vim62os2.zip
pkunzip -d vim70os2.zip
unzip vim70os2.zip
After you unpacked the files, you can still move the whole directory tree
to another location.
3. Add the directory where vim.exe is to your path. The simplest is to add a
line to your autoexec.bat. Examples:
set path=%path%;C:\vim\vim62
set path=%path%;D:\editors\vim\vim62
set path=%path%;C:\vim\vim70
set path=%path%;D:\editors\vim\vim70
That's it!
@ -41,10 +41,10 @@ Extra remarks:
C:\vim\_viminfo Dynamic info for 'viminfo'.
C:\vim\... Other files you made.
Distributed files:
C:\vim\vim62\vim.exe The Vim version 6.2 executable.
C:\vim\vim62\doc\*.txt The version 6.2 documentation files.
C:\vim\vim62\bugreport.vim A Vim version 6.2 script.
C:\vim\vim62\... Other version 6.2 distributed files.
C:\vim\vim70\vim.exe The Vim version 7.0 executable.
C:\vim\vim70\doc\*.txt The version 7.0 documentation files.
C:\vim\vim70\bugreport.vim A Vim version 7.0 script.
C:\vim\vim70\... Other version 7.0 distributed files.
In this case the $VIM environment variable would be set like this:
set VIM=C:\vim

View File

@ -14,27 +14,34 @@ To compile Vim yourself you need three archives:
vim-X.X-extra.tar.gz extra source files
Compilation is recommended, in order to make sure that the correct
libraries are used for your specific system. However, you might not be
able to compile Vim, read more from src/INSTALLvms.txt.
libraries are used for your specific system. Read about compiling in
src/INSTALLvms.txt.
To use the binary version, you need one of these archives:
vim-XX-exe-alpha-gui.zip Alpha GUI/Motif executables
vim-XX-exe-alpha-gtk.zip Alpha GUI/GTK executables
vim-XX-exe-alpha-term.zip Alpha console executables
vim-XX-exe-ia64-gui.zip IA64 GUI/Motif executables
vim-XX-exe-ia64-gtk.zip IA64 GUI/GTK executables
vim-XX-exe-ia64-term.zip IA64 console executables
vim-XX-exe-axp-gui.zip Alpha GUI/Motif executables
vim-XX-exe-axp-gtk.zip Alpha GUI/GTK executables
vim-XX-exe-axp-term.zip Alpha console executables
vim-XX-exe-vax-gui.zip VAX GUI executables
vim-XX-exe-vax-term.zip VAX console executables
vim-XX-exe-vax-term.zip VAX console executables
and of course
vim-XX-runtime.zip runtime files
The binary archives contain: vim.exe, ctags.exe, xxd.exe, mms_vim.exe files,
The binary archives contain: vim.exe, ctags.exe, xxd.exe files,
but there are also prepared "deploy ready" archives:
vim-XX-alpha.zip GUI and console executables with runtime and
help files for Alpha systems
vim-XX-vax.zip GUI and console executables with runtime and
help files for VAX systems
vim-XX-ia64.zip GUI and console executables with runtime and
help files for IA64 systems
vim-XX-axp.zip GUI and console executables with runtime and
help files for Alpha systems
vim-XX-vax.zip GUI and console executables with runtime and
help files for VAX systems
GTK builds need LIBGTK library installed.
These executables and up to date patches for OpenVMS system are downloadable
from http://www.polarhome.com/vim/ or ftp://ftp.polarhome.com/pub/vim/

View File

@ -5,19 +5,19 @@ static char * tb_print_xpm[] = {
/* colors */
" s none m none c none",
". s iconColor1 m black c #000000",
"X s iconColor2 m none c #FFFFFF",
"o s iconGray2 m none c #bdbdbd",
"X s iconColor2 m none c #FFFFFF",
"o s iconGray2 m none c #bdbdbd",
"O s iconGray5 m black c #737373",
"+ s bottomShadowColor m black c #5D6069",
"@ c #FF1144",
/* pixels */
" ....... ",
" .XXXXX.. ",
" .X...X.X. ",
" .XXXXX.X. ",
" .XXXXX.... ",
" .X...XXXX.O ",
" .XXXXXXXX.O ",
" .X.....XX.O ",
" .XXXXXXXX. ",
" .XXXXXXXX. ",
" ..XXXXXXXX.. ",
" .XXXXXXXX.O ",
"................ ",
".XXXXXXXXXXXXXO. ",

View File

@ -0,0 +1,15 @@
The autoload directory is for standard Vim autoload scripts.
These are functions used by plugins and for general use. They will be loaded
automatically when the function is invoked. See ":help autoload".
gzip.vim for editing compressed files
netrw.vim browsing (remote) directories and editing remote files
tar.vim browsing tar files
zip.vim browsing zip files
Occult completion files:
ccomplete.vim C
csscomplete.vim HTML / CSS
htmlcomplete.vim HTML

View File

@ -0,0 +1,422 @@
" Vim completion script
" Language: C
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2006 Feb 10
" This function is used for the 'omnifunc' option.
function! ccomplete#Complete(findstart, base)
if a:findstart
" Locate the start of the item, including ".", "->" and "[...]".
let line = getline('.')
let start = col('.') - 1
let lastword = -1
while start > 0
if line[start - 1] =~ '\w'
let start -= 1
elseif line[start - 1] =~ '\.'
if lastword == -1
let lastword = start
endif
let start -= 1
elseif start > 1 && line[start - 2] == '-' && line[start - 1] == '>'
if lastword == -1
let lastword = start
endif
let start -= 2
elseif line[start - 1] == ']'
" Skip over [...].
let n = 0
let start -= 1
while start > 0
let start -= 1
if line[start] == '['
if n == 0
break
endif
let n -= 1
elseif line[start] == ']' " nested []
let n += 1
endif
endwhile
else
break
endif
endwhile
" Return the column of the last word, which is going to be changed.
" Remember the text that comes before it in s:prepended.
if lastword == -1
let s:prepended = ''
return start
endif
let s:prepended = strpart(line, start, lastword - start)
return lastword
endif
" Return list of matches.
let base = s:prepended . a:base
" Don't do anything for an empty base, would result in all the tags in the
" tags file.
if base == ''
return []
endif
" Split item in words, keep empty word after "." or "->".
" "aa" -> ['aa'], "aa." -> ['aa', ''], "aa.bb" -> ['aa', 'bb'], etc.
" We can't use split, because we need to skip nested [...].
let items = []
let s = 0
while 1
let e = match(base, '\.\|->\|\[', s)
if e < 0
if s == 0 || base[s - 1] != ']'
call add(items, strpart(base, s))
endif
break
endif
if s == 0 || base[s - 1] != ']'
call add(items, strpart(base, s, e - s))
endif
if base[e] == '.'
let s = e + 1 " skip over '.'
elseif base[e] == '-'
let s = e + 2 " skip over '->'
else
" Skip over [...].
let n = 0
let s = e
let e += 1
while e < len(base)
if base[e] == ']'
if n == 0
break
endif
let n -= 1
elseif base[e] == '[' " nested [...]
let n += 1
endif
let e += 1
endwhile
let e += 1
call add(items, strpart(base, s, e - s))
let s = e
endif
endwhile
" Find the variable items[0].
" 1. in current function (like with "gd")
" 2. in tags file(s) (like with ":tag")
" 3. in current file (like with "gD")
let res = []
if searchdecl(items[0], 0, 1) == 0
" Found, now figure out the type.
" TODO: join previous line if it makes sense
let line = getline('.')
let col = col('.')
if len(items) == 1
" Completing one word and it's a local variable: May add '[', '.' or
" '->'.
let match = items[0]
if match(line, match . '\s*\[') > 0
let match .= '['
else
let res = s:Nextitem(strpart(line, 0, col), [''], 0)
if len(res) > 0
" There are members, thus add "." or "->".
if match(line, '\*[ \t(]*' . match . '\>') > 0
let match .= '->'
else
let match .= '.'
endif
endif
endif
let res = [{'match': match, 'tagline' : ''}]
else
" Completing "var.", "var.something", etc.
let res = s:Nextitem(strpart(line, 0, col), items[1:], 0)
endif
endif
if len(items) == 1
" Only one part, no "." or "->": complete from tags file.
call extend(res, map(taglist('^' . base), 's:Tag2item(v:val)'))
endif
if len(res) == 0
" Find the variable in the tags file(s)
let diclist = taglist('^' . items[0] . '$')
let res = []
for i in range(len(diclist))
" New ctags has the "typename" field.
if has_key(diclist[i], 'typename')
call extend(res, s:StructMembers(diclist[i]['typename'], items[1:]))
endif
" For a variable use the command, which must be a search pattern that
" shows the declaration of the variable.
if diclist[i]['kind'] == 'v'
let line = diclist[i]['cmd']
if line[0] == '/' && line[1] == '^'
let col = match(line, '\<' . items[0] . '\>')
call extend(res, s:Nextitem(strpart(line, 2, col - 2), items[1:], 0))
endif
endif
endfor
endif
if len(res) == 0 && searchdecl(items[0], 1) == 0
" Found, now figure out the type.
" TODO: join previous line if it makes sense
let line = getline('.')
let col = col('.')
let res = s:Nextitem(strpart(line, 0, col), items[1:], 0)
endif
" If the last item(s) are [...] they need to be added to the matches.
let last = len(items) - 1
let brackets = ''
while last >= 0
if items[last][0] != '['
break
endif
let brackets = items[last] . brackets
let last -= 1
endwhile
return map(res, 's:Tagline2item(v:val, brackets)')
endfunc
function! s:GetAddition(line, match, memarg, bracket)
" Guess if the item is an array.
if a:bracket && match(a:line, a:match . '\s*\[') > 0
return '['
endif
" Check if the item has members.
if len(s:SearchMembers(a:memarg, [''])) > 0
" If there is a '*' before the name use "->".
if match(a:line, '\*[ \t(]*' . a:match . '\>') > 0
return '->'
else
return '.'
endif
endif
return ''
endfunction
" Turn the tag info "val" into an item for completion.
" "val" is is an item in the list returned by taglist().
" If it is a variable we may add "." or "->". Don't do it for other types,
" such as a typedef, by not including the info that s:GetAddition() uses.
function! s:Tag2item(val)
let x = s:Tagcmd2extra(a:val['cmd'], a:val['name'], a:val['filename'])
if has_key(a:val, "kind")
if a:val["kind"] == 'v'
return {'match': a:val['name'], 'tagline': "\t" . a:val['cmd'], 'dict': a:val, 'extra': x}
endif
if a:val["kind"] == 'f'
return {'match': a:val['name'] . '(', 'tagline': "", 'extra': x}
endif
endif
return {'match': a:val['name'], 'tagline': '', 'extra': x}
endfunction
" Turn a match item "val" into an item for completion.
" "val['match']" is the matching item.
" "val['tagline']" is the tagline in which the last part was found.
function! s:Tagline2item(val, brackets)
let line = a:val['tagline']
let word = a:val['match'] . a:brackets . s:GetAddition(line, a:val['match'], [a:val], a:brackets == '')
if has_key(a:val, 'extra')
return {'word': word, 'menu': a:val['extra']}
endif
" Isolate the command after the tag and filename.
let s = matchstr(line, '[^\t]*\t[^\t]*\t\zs\(/^.*$/\|[^\t]*\)\ze\(;"\t\|\t\|$\)')
if s != ''
return {'word': word, 'menu': s:Tagcmd2extra(s, a:val['match'], matchstr(line, '[^\t]*\t\zs[^\t]*\ze\t'))}
endif
return {'word': word}
endfunction
" Turn a command from a tag line to something that is useful in the menu
function! s:Tagcmd2extra(cmd, name, fname)
if a:cmd =~ '^/^'
" The command is a search command, useful to see what it is.
let x = matchstr(a:cmd, '^/^\zs.*\ze$/')
let x = substitute(x, a:name, '@@', '')
let x = substitute(x, '\\\(.\)', '\1', 'g')
let x = x . ' - ' . a:fname
elseif a:cmd =~ '^\d*$'
" The command is a line number, the file name is more useful.
let x = a:fname . ' - ' . a:cmd
else
" Not recognized, use command and file name.
let x = a:cmd . ' - ' . a:fname
endif
return x
endfunction
" Find composing type in "lead" and match items[0] with it.
" Repeat this recursively for items[1], if it's there.
" When resolving typedefs "depth" is used to avoid infinite recursion.
" Return the list of matches.
function! s:Nextitem(lead, items, depth)
" Use the text up to the variable name and split it in tokens.
let tokens = split(a:lead, '\s\+\|\<')
" Try to recognize the type of the variable. This is rough guessing...
let res = []
for tidx in range(len(tokens))
" Recognize "struct foobar" and "union foobar".
if (tokens[tidx] == 'struct' || tokens[tidx] == 'union') && tidx + 1 < len(tokens)
let res = s:StructMembers(tokens[tidx] . ':' . tokens[tidx + 1], a:items)
break
endif
" TODO: add more reserved words
if index(['int', 'short', 'char', 'float', 'double', 'static', 'unsigned', 'extern'], tokens[tidx]) >= 0
continue
endif
" Use the tags file to find out if this is a typedef.
let diclist = taglist('^' . tokens[tidx] . '$')
for tagidx in range(len(diclist))
" New ctags has the "typename" field.
if has_key(diclist[tagidx], 'typename')
call extend(res, s:StructMembers(diclist[tagidx]['typename'], a:items))
continue
endif
" Only handle typedefs here.
if diclist[tagidx]['kind'] != 't'
continue
endif
" For old ctags we recognize "typedef struct aaa" and
" "typedef union bbb" in the tags file command.
let cmd = diclist[tagidx]['cmd']
let ei = matchend(cmd, 'typedef\s\+')
if ei > 1
let cmdtokens = split(strpart(cmd, ei), '\s\+\|\<')
if len(cmdtokens) > 1
if cmdtokens[0] == 'struct' || cmdtokens[0] == 'union'
let name = ''
" Use the first identifier after the "struct" or "union"
for ti in range(len(cmdtokens) - 1)
if cmdtokens[ti] =~ '^\w'
let name = cmdtokens[ti]
break
endif
endfor
if name != ''
call extend(res, s:StructMembers(cmdtokens[0] . ':' . name, a:items))
endif
elseif a:depth < 10
" Could be "typedef other_T some_T".
call extend(res, s:Nextitem(cmdtokens[0], a:items, a:depth + 1))
endif
endif
endif
endfor
if len(res) > 0
break
endif
endfor
return res
endfunction
" Search for members of structure "typename" in tags files.
" Return a list with resulting matches.
" Each match is a dictionary with "match" and "tagline" entries.
function! s:StructMembers(typename, items)
" Todo: What about local structures?
let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
if fnames == ''
return []
endif
let typename = a:typename
let qflist = []
while 1
exe 'silent! vimgrep /\t' . typename . '\(\t\|$\)/j ' . fnames
let qflist = getqflist()
if len(qflist) > 0 || match(typename, "::") < 0
break
endif
" No match for "struct:context::name", remove "context::" and try again.
let typename = substitute(typename, ':[^:]*::', ':', '')
endwhile
let matches = []
for l in qflist
let memb = matchstr(l['text'], '[^\t]*')
if memb =~ '^' . a:items[0]
call add(matches, {'match': memb, 'tagline': l['text']})
endif
endfor
if len(matches) > 0
" Skip over [...] items
let idx = 1
while 1
if idx >= len(a:items)
return matches " No further items, return the result.
endif
if a:items[idx][0] != '['
break
endif
let idx += 1
endwhile
" More items following. For each of the possible members find the
" matching following members.
return s:SearchMembers(matches, a:items[idx :])
endif
" Failed to find anything.
return []
endfunction
" For matching members, find matches for following items.
function! s:SearchMembers(matches, items)
let res = []
for i in range(len(a:matches))
let typename = ''
if has_key(a:matches[i], 'dict')
if has_key(a:matches[i].dict, 'typename')
let typename = a:matches[i].dict['typename']
endif
let line = "\t" . a:matches[i].dict['cmd']
else
let line = a:matches[i]['tagline']
let e = matchend(line, '\ttypename:')
if e > 0
" Use typename field
let typename = matchstr(line, '[^\t]*', e)
endif
endif
if typename != ''
call extend(res, s:StructMembers(typename, a:items))
else
" Use the search command (the declaration itself).
let s = match(line, '\t\zs/^')
if s > 0
let e = match(line, '\<' . a:matches[i]['match'] . '\>', s)
if e > 0
call extend(res, s:Nextitem(strpart(line, s, e - s), a:items, 0))
endif
endif
endif
endfor
return res
endfunc

View File

@ -0,0 +1,430 @@
" Vim completion script
" Language: CSS 2.1
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" Last Change: 2005 Oct 12
function! csscomplete#CompleteCSS(findstart, base)
if a:findstart
" We need whole line to proper checking
let line = getline('.')
let start = col('.') - 1
let compl_begin = col('.') - 2
while start >= 0 && line[start - 1] =~ '\(\k\|-\)'
let start -= 1
endwhile
let b:compl_context = getline('.')[0:compl_begin]
return start
else
" There are few chars important for context:
" ^ ; : { } /* */
" Where ^ is start of line and /* */ are comment borders
" Depending on their relative position to cursor we will now what should
" be completed.
" 1. if nearest are ^ or { or ; current word is property
" 2. if : it is value (with exception of pseudo things)
" 3. if } we are outside of css definitions
" 4. for comments ignoring is be the easiest but assume they are the same
" as 1.
" 5. if @ complete at-rule
" 6. if ! complete important
if exists("b:compl_context")
let line = b:compl_context
unlet! b:compl_context
else
let line = a:base
endif
let res = []
let res2 = []
let borders = {}
" We need the last occurrence of char so reverse line
let revline = join(reverse(split(line, '.\zs')), '')
let openbrace = stridx(revline, '{')
let closebrace = stridx(revline, '}')
let colon = stridx(revline, ':')
let semicolon = stridx(revline, ';')
let opencomm = stridx(revline, '*/') " Line was reversed
let closecomm = stridx(revline, '/*') " Line was reversed
let style = stridx(revline, '=\s*elyts') " Line was reversed
let atrule = stridx(revline, '@')
let exclam = stridx(revline, '!')
if openbrace > -1
let borders[openbrace] = "openbrace"
endif
if closebrace > -1
let borders[closebrace] = "closebrace"
endif
if colon > -1
let borders[colon] = "colon"
endif
if semicolon > -1
let borders[semicolon] = "semicolon"
endif
if opencomm > -1
let borders[opencomm] = "opencomm"
endif
if closecomm > -1
let borders[closecomm] = "closecomm"
endif
if style > -1
let borders[style] = "style"
endif
if atrule > -1
let borders[atrule] = "atrule"
endif
if exclam > -1
let borders[exclam] = "exclam"
endif
if len(borders) == 0 || borders[min(keys(borders))] =~ '^\(openbrace\|semicolon\|opencomm\|closecomm\|style\)$'
" Complete properties
let values = split("azimuth background background-attachment background-color background-image background-position background-repeat border bottom border-collapse border-color border-spacing border-style border-top border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width border-bottom-width border-left-width border-width caption-side clear clip color content counter-increment counter-reset cue cue-after cue-before cursor display direction elevation empty-cells float font font-family font-size font-style font-variant font-weight height left letter-spacing line-height list-style list-style-image list-style-position list-style-type margin margin-right margin-left margin-top margin-bottom max-height max-width min-height min-width orphans outline outline-color outline-style outline-width overflow padding padding-top padding-right padding-bottom padding-left page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position quotes right richness speak speak-header speak-numeral speak-punctuation speech-rate stress table-layout text-align text-decoration text-indent text-transform top unicode-bidi vertical-align visibility voice-family volume white-space width widows word-spacing z-index")
let entered_property = matchstr(line, '.\{-}\zs[a-zA-Z-]*$')
for m in values
if m =~? '^'.entered_property
call add(res, m . ':')
elseif m =~? entered_property
call add(res2, m . ':')
endif
endfor
return res + res2
elseif borders[min(keys(borders))] == 'colon'
" Get name of property
let prop = tolower(matchstr(line, '\zs[a-zA-Z-]*\ze\s*:[^:]\{-}$'))
if prop == 'azimuth'
let values = ["left-side", "far-left", "left", "center-left", "center", "center-right", "right", "far-right", "right-side", "behind", "leftwards", "rightwards"]
elseif prop == 'background-attachment'
let values = ["scroll", "fixed"]
elseif prop == 'background-color'
let values = ["transparent", "rgb(", "#"]
elseif prop == 'background-image'
let values = ["url(", "none"]
elseif prop == 'background-position'
let vals = matchstr(line, '.*:\s*\zs.*')
if vals =~ '^\([a-zA-Z]\+\)\?$'
let values = ["top", "center", "bottom"]
elseif vals =~ '^[a-zA-Z]\+\s\+\([a-zA-Z]\+\)\?$'
let values = ["left", "center", "right"]
else
return []
endif
elseif prop == 'background-repeat'
let values = ["repeat", "repeat-x", "repeat-y", "no-repeat"]
elseif prop == 'background'
let values = ["url(", "scroll", "fixed", "transparent", "rgb(", "#", "none", "top", "center", "bottom" , "left", "right", "repeat", "repeat-x", "repeat-y", "no-repeat"]
elseif prop == 'border-collapse'
let values = ["collapse", "separate"]
elseif prop == 'border-color'
let values = ["rgb(", "#", "transparent"]
elseif prop == 'border-spacing'
return []
elseif prop == 'border-style'
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
elseif prop =~ 'border-\(top\|right\|bottom\|left\)$'
let vals = matchstr(line, '.*:\s*\zs.*')
if vals =~ '^\([a-zA-Z0-9.]\+\)\?$'
let values = ["thin", "thick", "medium"]
elseif vals =~ '^[a-zA-Z0-9.]\+\s\+\([a-zA-Z]\+\)\?$'
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
elseif vals =~ '^[a-zA-Z0-9.]\+\s\+[a-zA-Z]\+\s\+\([a-zA-Z(]\+\)\?$'
let values = ["rgb(", "#", "transparent"]
else
return []
endif
elseif prop =~ 'border-\(top\|right\|bottom\|left\)-color'
let values = ["rgb(", "#", "transparent"]
elseif prop =~ 'border-\(top\|right\|bottom\|left\)-style'
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
elseif prop =~ 'border-\(top\|right\|bottom\|left\)-width'
let values = ["thin", "thick", "medium"]
elseif prop == 'border-width'
let values = ["thin", "thick", "medium"]
elseif prop == 'border'
let vals = matchstr(line, '.*:\s*\zs.*')
if vals =~ '^\([a-zA-Z0-9.]\+\)\?$'
let values = ["thin", "thick", "medium"]
elseif vals =~ '^[a-zA-Z0-9.]\+\s\+\([a-zA-Z]\+\)\?$'
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
elseif vals =~ '^[a-zA-Z0-9.]\+\s\+[a-zA-Z]\+\s\+\([a-zA-Z(]\+\)\?$'
let values = ["rgb(", "#", "transparent"]
else
return []
endif
elseif prop == 'bottom'
let values = ["auto"]
elseif prop == 'caption-side'
let values = ["top", "bottom"]
elseif prop == 'clear'
let values = ["none", "left", "right", "both"]
elseif prop == 'clip'
let values = ["auto", "rect("]
elseif prop == 'color'
let values = ["rgb(", "#"]
elseif prop == 'content'
let values = ["normal", "attr(", "open-quote", "close-quote", "no-open-quote", "no-close-quote"]
elseif prop =~ 'counter-\(increment\|reset\)$'
let values = ["none"]
elseif prop =~ '^\(cue-after\|cue-before\|cue\)$'
let values = ["url(", "none"]
elseif prop == 'cursor'
let values = ["url(", "auto", "crosshair", "default", "pointer", "move", "e-resize", "ne-resize", "nw-resize", "n-resize", "se-resize", "sw-resize", "s-resize", "w-resize", "text", "wait", "help", "progress"]
elseif prop == 'direction'
let values = ["ltr", "rtl"]
elseif prop == 'display'
let values = ["inline", "block", "list-item", "run-in", "inline-block", "table", "inline-table", "table-row-group", "table-header-group", "table-footer-group", "table-row", "table-column-group", "table-column", "table-cell", "table-caption", "none"]
elseif prop == 'elevation'
let values = ["below", "level", "above", "higher", "lower"]
elseif prop == 'empty-cells'
let values = ["show", "hide"]
elseif prop == 'float'
let values = ["left", "right", "none"]
elseif prop == 'font-family'
let values = ["sans-serif", "serif", "monospace", "cursive", "fantasy"]
elseif prop == 'font-size'
let values = ["xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "larger", "smaller"]
elseif prop == 'font-style'
let values = ["normal", "italic", "oblique"]
elseif prop == 'font-variant'
let values = ["normal", "small-caps"]
elseif prop == 'font-weight'
let values = ["normal", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", "600", "700", "800", "900"]
elseif prop == 'font'
let values = ["normal", "italic", "oblique", "small-caps", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", "600", "700", "800", "900", "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "larger", "smaller", "sans-serif", "serif", "monospace", "cursive", "fantasy", "caption", "icon", "menu", "message-box", "small-caption", "status-bar"]
elseif prop =~ '^\(height\|width\)$'
let values = ["auto"]
elseif prop =~ '^\(left\|rigth\)$'
let values = ["auto"]
elseif prop == 'letter-spacing'
let values = ["normal"]
elseif prop == 'line-height'
let values = ["normal"]
elseif prop == 'list-style-image'
let values = ["url(", "none"]
elseif prop == 'list-style-position'
let values = ["inside", "outside"]
elseif prop == 'list-style-type'
let values = ["disc", "circle", "square", "decimal", "decimal-leading-zero", "lower-roman", "upper-roman", "lower-latin", "upper-latin", "none"]
elseif prop == 'list-style'
return []
elseif prop == 'margin'
let values = ["auto"]
elseif prop =~ 'margin-\(right\|left\|top\|bottom\)$'
let values = ["auto"]
elseif prop == 'max-height'
let values = ["auto"]
elseif prop == 'max-width'
let values = ["none"]
elseif prop == 'min-height'
let values = ["none"]
elseif prop == 'min-width'
let values = ["none"]
elseif prop == 'orphans'
return []
elseif prop == 'outline-color'
let values = ["rgb(", "#"]
elseif prop == 'outline-style'
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
elseif prop == 'outline-width'
let values = ["thin", "thick", "medium"]
elseif prop == 'outline'
let vals = matchstr(line, '.*:\s*\zs.*')
if vals =~ '^\([a-zA-Z0-9,()#]\+\)\?$'
let values = ["rgb(", "#"]
elseif vals =~ '^[a-zA-Z0-9,()#]\+\s\+\([a-zA-Z]\+\)\?$'
let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"]
elseif vals =~ '^[a-zA-Z0-9,()#]\+\s\+[a-zA-Z]\+\s\+\([a-zA-Z(]\+\)\?$'
let values = ["thin", "thick", "medium"]
else
return []
endif
elseif prop == 'overflow'
let values = ["visible", "hidden", "scroll", "auto"]
elseif prop == 'padding'
return []
elseif prop =~ 'padding-\(top\|right\|bottom\|left\)$'
return []
elseif prop =~ 'page-break-\(after\|before\)$'
let values = ["auto", "always", "avoid", "left", "right"]
elseif prop == 'page-break-inside'
let values = ["auto", "avoid"]
elseif prop =~ 'pause-\(after\|before\)$'
return []
elseif prop == 'pause'
return []
elseif prop == 'pitch-range'
return []
elseif prop == 'pitch'
let values = ["x-low", "low", "medium", "high", "x-high"]
elseif prop == 'play-during'
let values = ["url(", "mix", "repeat", "auto", "none"]
elseif prop == 'position'
let values = ["static", "relative", "absolute", "fixed"]
elseif prop == 'quotes'
let values = ["none"]
elseif prop == 'richness'
return []
elseif prop == 'speak-header'
let values = ["once", "always"]
elseif prop == 'speak-numeral'
let values = ["digits", "continuous"]
elseif prop == 'speak-punctuation'
let values = ["code", "none"]
elseif prop == 'speak'
let values = ["normal", "none", "spell-out"]
elseif prop == 'speech-rate'
let values = ["x-slow", "slow", "medium", "fast", "x-fast", "faster", "slower"]
elseif prop == 'stress'
return []
elseif prop == 'table-layout'
let values = ["auto", "fixed"]
elseif prop == 'text-align'
let values = ["left", "right", "center", "justify"]
elseif prop == 'text-decoration'
let values = ["none", "underline", "overline", "line-through", "blink"]
elseif prop == 'text-indent'
return []
elseif prop == 'text-transform'
let values = ["capitalize", "uppercase", "lowercase", "none"]
elseif prop == 'top'
let values = ["auto"]
elseif prop == 'unicode-bidi'
let values = ["normal", "embed", "bidi-override"]
elseif prop == 'vertical-align'
let values = ["baseline", "sub", "super", "top", "text-top", "middle", "bottom", "text-bottom"]
elseif prop == 'visibility'
let values = ["visible", "hidden", "collapse"]
elseif prop == 'voice-family'
return []
elseif prop == 'volume'
let values = ["silent", "x-soft", "soft", "medium", "loud", "x-loud"]
elseif prop == 'white-space'
let values = ["normal", "pre", "nowrap", "pre-wrap", "pre-line"]
elseif prop == 'widows'
return []
elseif prop == 'word-spacing'
let values = ["normal"]
elseif prop == 'z-index'
let values = ["auto"]
else
" If no property match it is possible we are outside of {} and
" trying to complete pseudo-(class|element)
let element = tolower(matchstr(line, '\zs[a-zA-Z1-6]*\ze:[^:[:space:]]\{-}$'))
if ",a,abbr,acronym,address,area,b,base,bdo,big,blockquote,body,br,button,caption,cite,code,col,colgroup,dd,del,dfn,div,dl,dt,em,fieldset,form,head,h1,h2,h3,h4,h5,h6,hr,html,i,img,input,ins,kbd,label,legend,li,link,map,meta,noscript,object,ol,optgroup,option,p,param,pre,q,samp,script,select,small,span,strong,style,sub,sup,table,tbody,td,textarea,tfoot,th,thead,title,tr,tt,ul,var," =~ ','.element.','
let values = ["first-child", "link", "visited", "hover", "active", "focus", "lang", "first-line", "first-letter", "before", "after"]
else
return []
endif
endif
" Complete values
let entered_value = matchstr(line, '.\{-}\zs[a-zA-Z0-9#,.(_-]*$')
for m in values
if m =~? '^'.entered_value
call add(res, m)
elseif m =~? entered_value
call add(res2, m)
endif
endfor
return res + res2
elseif borders[min(keys(borders))] == 'closebrace'
return []
elseif borders[min(keys(borders))] == 'exclam'
" Complete values
let entered_imp = matchstr(line, '.\{-}!\s*\zs[a-zA-Z ]*$')
let values = ["important"]
for m in values
if m =~? '^'.entered_imp
call add(res, m)
endif
endfor
return res
elseif borders[min(keys(borders))] == 'atrule'
let afterat = matchstr(line, '.*@\zs.*')
if afterat =~ '\s'
let atrulename = matchstr(line, '.*@\zs[a-zA-Z-]\+\ze')
if atrulename == 'media'
let values = ["screen", "tty", "tv", "projection", "handheld", "print", "braille", "aural", "all"]
let atruleafterbase = matchstr(line, '.*@media\s\+\ze.*$')
let entered_atruleafter = matchstr(line, '.*@media\s\+\zs.*$')
elseif atrulename == 'import'
let atruleafterbase = matchstr(line, '.*@import\s\+\ze.*$')
let entered_atruleafter = matchstr(line, '.*@import\s\+\zs.*$')
if entered_atruleafter =~ "^[\"']"
let filestart = matchstr(entered_atruleafter, '^.\zs.*')
let files = split(glob(filestart.'*'), '\n')
let values = map(copy(files), '"\"".v:val')
elseif entered_atruleafter =~ "^url("
let filestart = matchstr(entered_atruleafter, "^url([\"']\\?\\zs.*")
let files = split(glob(filestart.'*'), '\n')
let values = map(copy(files), '"url(".v:val')
else
let values = ['"', 'url(']
endif
else
return []
endif
for m in values
if m =~? '^'.entered_atruleafter
call add(res, m)
elseif m =~? entered_atruleafter
call add(res2, m)
endif
endfor
return res + res2
endif
let values = ["charset", "page", "media", "import", "font-face"]
let entered_atrule = matchstr(line, '.*@\zs[a-zA-Z-]*$')
for m in values
if m =~? '^'.entered_atrule
call add(res, m .' ')
elseif m =~? entered_atrule
call add(res2, m .' ')
endif
endfor
return res + res2
endif
return []
endif
endfunction

173
runtime/autoload/gzip.vim Normal file
View File

@ -0,0 +1,173 @@
" Vim autoload file for editing compressed files.
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2005 Jul 26
" These functions are used by the gzip plugin.
" Function to check that executing "cmd [-f]" works.
" The result is cached in s:have_"cmd" for speed.
fun s:check(cmd)
let name = substitute(a:cmd, '\(\S*\).*', '\1', '')
if !exists("s:have_" . name)
let e = executable(name)
if e < 0
let r = system(name . " --version")
let e = (r !~ "not found" && r != "")
endif
exe "let s:have_" . name . "=" . e
endif
exe "return s:have_" . name
endfun
" Set b:gzip_comp_arg to the gzip argument to be used for compression, based on
" the flags in the compressed file.
" The only compression methods that can be detected are max speed (-1) and max
" compression (-9).
fun s:set_compression(line)
" get the Compression Method
let l:cm = char2nr(a:line[2])
" if it's 8 (DEFLATE), we can check for the compression level
if l:cm == 8
" get the eXtra FLags
let l:xfl = char2nr(a:line[8])
" max compression
if l:xfl == 2
let b:gzip_comp_arg = "-9"
" min compression
elseif l:xfl == 4
let b:gzip_comp_arg = "-1"
endif
endif
endfun
" After reading compressed file: Uncompress text in buffer with "cmd"
fun gzip#read(cmd)
" don't do anything if the cmd is not supported
if !s:check(a:cmd)
return
endif
" for gzip check current compression level and set b:gzip_comp_arg.
silent! unlet b:gzip_comp_arg
if a:cmd[0] == 'g'
call s:set_compression(getline(1))
endif
" make 'patchmode' empty, we don't want a copy of the written file
let pm_save = &pm
set pm=
" remove 'a' and 'A' from 'cpo' to avoid the alternate file changes
let cpo_save = &cpo
set cpo-=a cpo-=A
" set 'modifiable'
let ma_save = &ma
setlocal ma
" when filtering the whole buffer, it will become empty
let empty = line("'[") == 1 && line("']") == line("$")
let tmp = tempname()
let tmpe = tmp . "." . expand("<afile>:e")
" write the just read lines to a temp file "'[,']w tmp.gz"
execute "silent '[,']w " . tmpe
" uncompress the temp file: call system("gzip -dn tmp.gz")
call system(a:cmd . " " . tmpe)
if !filereadable(tmp)
" uncompress didn't work! Keep the compressed file then.
echoerr "Error: Could not read uncompressed file"
return
endif
" delete the compressed lines; remember the line number
let l = line("'[") - 1
if exists(":lockmarks")
lockmarks '[,']d _
else
'[,']d _
endif
" read in the uncompressed lines "'[-1r tmp"
setlocal nobin
if exists(":lockmarks")
execute "silent lockmarks " . l . "r " . tmp
else
execute "silent " . l . "r " . tmp
endif
" if buffer became empty, delete trailing blank line
if empty
silent $delete _
1
endif
" delete the temp file and the used buffers
call delete(tmp)
silent! exe "bwipe " . tmp
silent! exe "bwipe " . tmpe
let &pm = pm_save
let &cpo = cpo_save
let &l:ma = ma_save
" When uncompressed the whole buffer, do autocommands
if empty
if &verbose >= 8
execute "doau BufReadPost " . expand("%:r")
else
execute "silent! doau BufReadPost " . expand("%:r")
endif
endif
endfun
" After writing compressed file: Compress written file with "cmd"
fun gzip#write(cmd)
" don't do anything if the cmd is not supported
if s:check(a:cmd)
" Rename the file before compressing it.
let nm = resolve(expand("<afile>"))
let nmt = s:tempname(nm)
if rename(nm, nmt) == 0
if exists("b:gzip_comp_arg")
call system(a:cmd . " " . b:gzip_comp_arg . " " . nmt)
else
call system(a:cmd . " " . nmt)
endif
call rename(nmt . "." . expand("<afile>:e"), nm)
endif
endif
endfun
" Before appending to compressed file: Uncompress file with "cmd"
fun gzip#appre(cmd)
" don't do anything if the cmd is not supported
if s:check(a:cmd)
let nm = expand("<afile>")
" for gzip check current compression level and set b:gzip_comp_arg.
silent! unlet b:gzip_comp_arg
if a:cmd[0] == 'g'
call s:set_compression(readfile(nm, "b", 1)[0])
endif
" Rename to a weird name to avoid the risk of overwriting another file
let nmt = expand("<afile>:p:h") . "/X~=@l9q5"
let nmte = nmt . "." . expand("<afile>:e")
if rename(nm, nmte) == 0
if &patchmode != "" && getfsize(nm . &patchmode) == -1
" Create patchmode file by creating the decompressed file new
call system(a:cmd . " -c " . nmte . " > " . nmt)
call rename(nmte, nm . &patchmode)
else
call system(a:cmd . " " . nmte)
endif
call rename(nmt, nm)
endif
endif
endfun
" find a file name for the file to be compressed. Use "name" without an
" extension if possible. Otherwise use a weird name to avoid overwriting an
" existing file.
fun s:tempname(name)
let fn = fnamemodify(a:name, ":r")
if !filereadable(fn) && !isdirectory(fn)
return fn
endif
return fnamemodify(a:name, ":p:h") . "/X~=@l9q5"
endfun
" vim: set sw=2 :

View File

@ -0,0 +1,594 @@
" Vim completion script
" Language: XHTML 1.0 Strict
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" Last Change: 2006 Feb 18
function! htmlcomplete#CompleteTags(findstart, base)
if a:findstart
" locate the start of the word
let line = getline('.')
let start = col('.') - 1
let curline = line('.')
let compl_begin = col('.') - 2
while start >= 0 && line[start - 1] =~ '\(\k\|[:.-]\)'
let start -= 1
endwhile
" Handling of entities {{{
if start >= 0 && line[start - 1] =~ '&'
let b:entitiescompl = 1
let b:compl_context = ''
return start
endif
" }}}
" Handling of <style> tag {{{
let stylestart = searchpair('<style\>', '', '<\/style\>', "bnW")
let styleend = searchpair('<style\>', '', '<\/style\>', "nW")
if stylestart != 0 && styleend != 0
if stylestart <= curline && styleend >= curline
let start = col('.') - 1
let b:csscompl = 1
while start >= 0 && line[start - 1] =~ '\(\k\|-\)'
let start -= 1
endwhile
endif
endif
" }}}
" Handling of <script> tag {{{
let scriptstart = searchpair('<script\>', '', '<\/script\>', "bnW")
let scriptend = searchpair('<script\>', '', '<\/script\>', "nW")
if scriptstart != 0 && scriptend != 0
if scriptstart <= curline && scriptend >= curline
let start = col('.') - 1
let b:jscompl = 1
let b:jsrange = [scriptstart, scriptend]
while start >= 0 && line[start - 1] =~ '\k'
let start -= 1
endwhile
" We are inside of <script> tag. But we should also get contents
" of all linked external files and (secondary, less probably) other <script> tags
" This logic could possible be done in separate function - may be
" reused in events scripting (also with option could be reused for
" CSS
let b:js_extfiles = []
let l = line('.')
let c = col('.')
call cursor(1,1)
while search('<\@<=script\>', 'W') && line('.') <= l
if synIDattr(synID(line('.'),col('.')-1,0),"name") !~? 'comment'
let sname = matchstr(getline('.'), '<script[^>]*src\s*=\s*\([''"]\)\zs.\{-}\ze\1')
if filereadable(sname)
let b:js_extfiles += readfile(sname)
endif
endif
endwhile
call cursor(1,1)
let js_scripttags = []
while search('<script\>', 'W') && line('.') < l
if matchstr(getline('.'), '<script[^>]*src') == ''
let js_scripttag = getline(line('.'), search('</script>', 'W'))
let js_scripttags += js_scripttag
endif
endwhile
let b:js_extfiles += js_scripttags
call cursor(l,c)
unlet! l c
endif
endif
" }}}
if !exists("b:csscompl") && !exists("b:jscompl")
let b:compl_context = getline('.')[0:(compl_begin)]
if b:compl_context !~ '<[^>]*$'
" Look like we may have broken tag. Check previous lines.
let i = 1
while 1
let context_line = getline(curline-i)
if context_line =~ '<[^>]*$'
" Yep, this is this line
let context_lines = getline(curline-i, curline)
let b:compl_context = join(context_lines, ' ')
break
elseif context_line =~ '>[^<]*$'
" Normal tag line, no need for completion at all
let b:compl_context = ''
break
endif
let i += 1
endwhile
" Make sure we don't have counter
unlet! i
endif
let b:compl_context = matchstr(b:compl_context, '.*\zs<.*')
" Return proper start for on-events. Without that beginning of
" completion will be badly reported
if b:compl_context =~? 'on[a-z]*\s*=\s*\(''[^'']*\|"[^"]*\)$'
let start = col('.') - 1
while start >= 0 && line[start - 1] =~ '\k'
let start -= 1
endwhile
endif
else
let b:compl_context = getline('.')[0:compl_begin]
endif
return start
else
" Initialize base return lists
let res = []
let res2 = []
" a:base is very short - we need context
let context = b:compl_context
" Check if we should do CSS completion inside of <style> tag
" or JS completion inside of <script> tag
if exists("b:csscompl")
unlet! b:csscompl
let context = b:compl_context
unlet! b:compl_context
return csscomplete#CompleteCSS(0, context)
elseif exists("b:jscompl")
unlet! b:jscompl
return javascriptcomplete#CompleteJS(0, a:base)
else
if len(b:compl_context) == 0 && !exists("b:entitiescompl")
return []
endif
let context = matchstr(b:compl_context, '.\zs.*')
endif
unlet! b:compl_context
" Entities completion {{{
if exists("b:entitiescompl")
unlet! b:entitiescompl
if !exists("g:xmldata_xhtml10s")
runtime! autoload/xml/xhtml10s.vim
endif
let entities = g:xmldata_xhtml10s['vimxmlentities']
if len(a:base) == 1
for m in entities
if m =~ '^'.a:base
call add(res, m.';')
endif
endfor
return res
else
for m in entities
if m =~? '^'.a:base
call add(res, m.';')
elseif m =~? a:base
call add(res2, m.';')
endif
endfor
return res + res2
endif
endif
" }}}
if context =~ '>'
" Generally if context contains > it means we are outside of tag and
" should abandon action - with one exception: <style> span { bo
if context =~ 'style[^>]\{-}>[^<]\{-}$'
return csscomplete#CompleteCSS(0, context)
elseif context =~ 'script[^>]\{-}>[^<]\{-}$'
let b:jsrange = [line('.'), search('<\/script\>', 'nW')]
return javascriptcomplete#CompleteJS(0, context)
else
return []
endif
endif
" If context contains > it means we are already outside of tag and we
" should abandon action
" If context contains white space it is attribute.
" It can be also value of attribute.
" We have to get first word to offer proper completions
if context == ''
let tag = ''
else
let tag = split(context)[0]
endif
" Get last word, it should be attr name
let attr = matchstr(context, '.*\s\zs.*')
" Possible situations where any prediction would be difficult:
" 1. Events attributes
if context =~ '\s'
" Sort out style, class, and on* cases
if context =~? "\\(on[a-z]*\\|id\\|style\\|class\\)\\s*=\\s*[\"']"
" Id, class completion {{{
if context =~? "\\(id\\|class\\)\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$"
if context =~? "class\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$"
let search_for = "class"
elseif context =~? "id\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$"
let search_for = "id"
endif
" Handle class name completion
" 1. Find lines of <link stylesheet>
" 1a. Check file for @import
" 2. Extract filename(s?) of stylesheet,
call cursor(1,1)
let head = getline(search('<head\>'), search('<\/head>'))
let headjoined = join(copy(head), ' ')
if headjoined =~ '<style'
" Remove possibly confusing CSS operators
let stylehead = substitute(headjoined, '+>\*[,', ' ', 'g')
if search_for == 'class'
let styleheadlines = split(stylehead)
let headclasslines = filter(copy(styleheadlines), "v:val =~ '\\([a-zA-Z0-9:]\\+\\)\\?\\.[a-zA-Z0-9_-]\\+'")
else
let stylesheet = split(headjoined, '[{}]')
" Get all lines which fit id syntax
let classlines = filter(copy(stylesheet), "v:val =~ '#[a-zA-Z0-9_-]\\+'")
" Filter out possible color definitions
call filter(classlines, "v:val !~ ':\\s*#[a-zA-Z0-9_-]\\+'")
" Filter out complex border definitions
call filter(classlines, "v:val !~ '\\(none\\|hidden\\|dotted\\|dashed\\|solid\\|double\\|groove\\|ridge\\|inset\\|outset\\)\\s*#[a-zA-Z0-9_-]\\+'")
let templines = join(classlines, ' ')
let headclasslines = split(templines)
call filter(headclasslines, "v:val =~ '#[a-zA-Z0-9_-]\\+'")
endif
let internal = 1
else
let internal = 0
endif
let styletable = []
let secimportfiles = []
let filestable = filter(copy(head), "v:val =~ '\\(@import\\|link.*stylesheet\\)'")
for line in filestable
if line =~ "@import"
let styletable += [matchstr(line, "import\\s\\+\\(url(\\)\\?[\"']\\?\\zs\\f\\+\\ze")]
elseif line =~ "<link"
let styletable += [matchstr(line, "href\\s*=\\s*[\"']\\zs\\f\\+\\ze")]
endif
endfor
for file in styletable
if filereadable(file)
let stylesheet = readfile(file)
let secimport = filter(copy(stylesheet), "v:val =~ '@import'")
if len(secimport) > 0
for line in secimport
let secfile = matchstr(line, "import\\s\\+\\(url(\\)\\?[\"']\\?\\zs\\f\\+\\ze")
let secfile = fnamemodify(file, ":p:h").'/'.secfile
let secimportfiles += [secfile]
endfor
endif
endif
endfor
let cssfiles = styletable + secimportfiles
let classes = []
for file in cssfiles
if filereadable(file)
let stylesheet = readfile(file)
let stylefile = join(stylesheet, ' ')
let stylefile = substitute(stylefile, '+>\*[,', ' ', 'g')
if search_for == 'class'
let stylesheet = split(stylefile)
let classlines = filter(copy(stylesheet), "v:val =~ '\\([a-zA-Z0-9:]\\+\\)\\?\\.[a-zA-Z0-9_-]\\+'")
else
let stylesheet = split(stylefile, '[{}]')
" Get all lines which fit id syntax
let classlines = filter(copy(stylesheet), "v:val =~ '#[a-zA-Z0-9_-]\\+'")
" Filter out possible color definitions
call filter(classlines, "v:val !~ ':\\s*#[a-zA-Z0-9_-]\\+'")
" Filter out complex border definitions
call filter(classlines, "v:val !~ '\\(none\\|hidden\\|dotted\\|dashed\\|solid\\|double\\|groove\\|ridge\\|inset\\|outset\\)\\s*#[a-zA-Z0-9_-]\\+'")
let templines = join(classlines, ' ')
let stylelines = split(templines)
let classlines = filter(stylelines, "v:val =~ '#[a-zA-Z0-9_-]\\+'")
endif
endif
" We gathered classes definitions from all external files
let classes += classlines
endfor
if internal == 1
let classes += headclasslines
endif
if search_for == 'class'
let elements = {}
for element in classes
if element =~ '^\.'
let class = matchstr(element, '^\.\zs[a-zA-Z][a-zA-Z0-9_-]*\ze')
let class = substitute(class, ':.*', '', '')
if has_key(elements, 'common')
let elements['common'] .= ' '.class
else
let elements['common'] = class
endif
else
let class = matchstr(element, '[a-zA-Z1-6]*\.\zs[a-zA-Z][a-zA-Z0-9_-]*\ze')
let tagname = tolower(matchstr(element, '[a-zA-Z1-6]*\ze.'))
if tagname != ''
if has_key(elements, tagname)
let elements[tagname] .= ' '.class
else
let elements[tagname] = class
endif
endif
endif
endfor
if has_key(elements, tag) && has_key(elements, 'common')
let values = split(elements[tag]." ".elements['common'])
elseif has_key(elements, tag) && !has_key(elements, 'common')
let values = split(elements[tag])
elseif !has_key(elements, tag) && has_key(elements, 'common')
let values = split(elements['common'])
else
return []
endif
elseif search_for == 'id'
" Find used IDs
" 1. Catch whole file
let filelines = getline(1, line('$'))
" 2. Find lines with possible id
let used_id_lines = filter(filelines, 'v:val =~ "id\\s*=\\s*[\"''][a-zA-Z0-9_-]\\+"')
" 3a. Join all filtered lines
let id_string = join(used_id_lines, ' ')
" 3b. And split them to be sure each id is in separate item
let id_list = split(id_string, 'id\s*=\s*')
" 4. Extract id values
let used_id = map(id_list, 'matchstr(v:val, "[\"'']\\zs[a-zA-Z0-9_-]\\+\\ze")')
let joined_used_id = ','.join(used_id, ',').','
let allvalues = map(classes, 'matchstr(v:val, ".*#\\zs[a-zA-Z0-9_-]\\+")')
let values = []
for element in classes
if joined_used_id !~ ','.element.','
let values += [element]
endif
endfor
endif
" We need special version of sbase
let classbase = matchstr(context, ".*[\"']")
let classquote = matchstr(classbase, '.$')
let entered_class = matchstr(attr, ".*=\\s*[\"']\\zs.*")
for m in sort(values)
if m =~? '^'.entered_class
call add(res, m . classquote)
elseif m =~? entered_class
call add(res2, m . classquote)
endif
endfor
return res + res2
elseif context =~? "style\\s*=\\s*[\"'][^\"']*$"
return csscomplete#CompleteCSS(0, context)
endif
" }}}
" Complete on-events {{{
if context =~? 'on[a-z]*\s*=\s*\(''[^'']*\|"[^"]*\)$'
" We have to:
" 1. Find external files
let b:js_extfiles = []
let l = line('.')
let c = col('.')
call cursor(1,1)
while search('<\@<=script\>', 'W') && line('.') <= l
if synIDattr(synID(line('.'),col('.')-1,0),"name") !~? 'comment'
let sname = matchstr(getline('.'), '<script[^>]*src\s*=\s*\([''"]\)\zs.\{-}\ze\1')
if filereadable(sname)
let b:js_extfiles += readfile(sname)
endif
endif
endwhile
" 2. Find at least one <script> tag
call cursor(1,1)
let js_scripttags = []
while search('<script\>', 'W') && line('.') < l
if matchstr(getline('.'), '<script[^>]*src') == ''
let js_scripttag = getline(line('.'), search('</script>', 'W'))
let js_scripttags += js_scripttag
endif
endwhile
let b:js_extfiles += js_scripttags
" 3. Proper call for javascriptcomplete#CompleteJS
call cursor(l,c)
let js_context = matchstr(a:base, '\k\+$')
let js_shortcontext = substitute(a:base, js_context.'$', '', '')
let b:compl_context = context
let b:jsrange = [l, l]
unlet! l c
return javascriptcomplete#CompleteJS(0, js_context)
endif
" }}}
let stripbase = matchstr(context, ".*\\(on[a-zA-Z]*\\|style\\|class\\)\\s*=\\s*[\"']\\zs.*")
" Now we have context stripped from all chars up to style/class.
" It may fail with some strange style value combinations.
if stripbase !~ "[\"']"
return []
endif
endif
" Value of attribute completion {{{
" If attr contains =\s*[\"'] we catched value of attribute
if attr =~ "=\s*[\"']"
" Let do attribute specific completion
let attrname = matchstr(attr, '.*\ze\s*=')
let entered_value = matchstr(attr, ".*=\\s*[\"']\\zs.*")
let values = []
if attrname == 'media'
let values = ["screen", "tty", "tv", "projection", "handheld", "print", "braille", "aural", "all"]
elseif attrname == 'xml:space'
let values = ["preserve"]
elseif attrname == 'shape'
let values = ["rect", "circle", "poly", "default"]
elseif attrname == 'valuetype'
let values = ["data", "ref", "object"]
elseif attrname == 'method'
let values = ["get", "post"]
elseif attrname == 'dir'
let values = ["ltr", "rtl"]
elseif attrname == 'frame'
let values = ["void", "above", "below", "hsides", "lhs", "rhs", "vsides", "box", "border"]
elseif attrname == 'rules'
let values = ["none", "groups", "rows", "all"]
elseif attrname == 'align'
let values = ["left", "center", "right", "justify", "char"]
elseif attrname == 'valign'
let values = ["top", "middle", "bottom", "baseline"]
elseif attrname == 'scope'
let values = ["row", "col", "rowgroup", "colgroup"]
elseif attrname == 'href'
" Now we are looking for local anchors defined by name or id
if entered_value =~ '^#'
let file = join(getline(1, line('$')), ' ')
" Split it be sure there will be one id/name element in
" item, it will be also first word [a-zA-Z0-9_-] in element
let oneelement = split(file, "\\(meta \\)\\@<!\\(name\\|id\\)\\s*=\\s*[\"']")
for i in oneelement
let values += ['#'.matchstr(i, "^[a-zA-Z][a-zA-Z0-9%_-]*")]
endfor
endif
elseif attrname == 'type'
if context =~ '^input'
let values = ["text", "password", "checkbox", "radio", "submit", "reset", "file", "hidden", "image", "button"]
elseif context =~ '^button'
let values = ["button", "submit", "reset"]
elseif context =~ '^style'
let values = ["text/css"]
elseif context =~ '^script'
let values = ["text/javascript"]
endif
else
return []
endif
if len(values) == 0
return []
endif
" We need special version of sbase
let attrbase = matchstr(context, ".*[\"']")
let attrquote = matchstr(attrbase, '.$')
for m in values
" This if is needed to not offer all completions as-is
" alphabetically but sort them. Those beginning with entered
" part will be as first choices
if m =~ '^'.entered_value
call add(res, m . attrquote.' ')
elseif m =~ entered_value
call add(res2, m . attrquote.' ')
endif
endfor
return res + res2
endif
" }}}
" Attribute completion {{{
" Shorten context to not include last word
let sbase = matchstr(context, '.*\ze\s.*')
" Load data {{{
if !exists("g:xmldata_xhtml10s")
runtime! autoload/xml/xhtml10s.vim
endif
" }}}
"
let attrs = keys(g:xmldata_xhtml10s[tag][1])
for m in sort(attrs)
if m =~ '^'.attr
call add(res, m)
elseif m =~ attr
call add(res2, m)
endif
endfor
let menu = res + res2
if has_key(g:xmldata_xhtml10s, 'vimxmlattrinfo')
let final_menu = []
for i in range(len(menu))
let item = menu[i]
if has_key(g:xmldata_xhtml10s['vimxmlattrinfo'], item)
let m_menu = g:xmldata_xhtml10s['vimxmlattrinfo'][item][0]
let m_info = g:xmldata_xhtml10s['vimxmlattrinfo'][item][1]
if m_menu !~ 'Bool'
let item .= '="'
endif
else
let m_menu = ''
let m_info = ''
let item .= '="'
endif
let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]
endfor
else
let final_menu = map(menu, 'v:val."=\""')
endif
return final_menu
endif
" }}}
" Close tag {{{
let b:unaryTagsStack = "base meta link hr br param img area input col"
if context =~ '^\/'
let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
return [opentag.">"]
endif
" Load data {{{
if !exists("g:xmldata_xhtml10s")
runtime! autoload/xml/xhtml10s.vim
endif
" }}}
" Tag completion {{{
" Deal with tag completion.
let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
if opentag == ''
" Hack for sometimes failing GetLastOpenTag.
" As far as I tested fail isn't GLOT fault but problem
" of invalid document - not properly closed tags and other mish-mash.
" Also when document is empty. Return list of *all* tags.
let tags = keys(g:xmldata_xhtml10s)
call filter(tags, 'v:val !~ "^vimxml"')
else
let tags = g:xmldata_xhtml10s[opentag][0]
endif
" }}}
for m in sort(tags)
if m =~ '^'.context
call add(res, m)
elseif m =~ context
call add(res2, m)
endif
endfor
let menu = res + res2
if has_key(g:xmldata_xhtml10s, 'vimxmltaginfo')
let final_menu = []
for i in range(len(menu))
let item = menu[i]
if has_key(g:xmldata_xhtml10s['vimxmltaginfo'], item)
let m_menu = g:xmldata_xhtml10s['vimxmltaginfo'][item][0]
let m_info = g:xmldata_xhtml10s['vimxmltaginfo'][item][1]
else
let m_menu = ''
let m_info = ''
endif
let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]
endfor
else
let final_menu = menu
endif
return final_menu
" }}}
endif
endfunction
" vim:set foldmethod=marker:

View File

@ -0,0 +1,625 @@
" Vim completion script
" Language: Java Script
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" Last Change: 2006 Feb 6
function! javascriptcomplete#CompleteJS(findstart, base)
if a:findstart
" locate the start of the word
let line = getline('.')
let start = col('.') - 1
let curline = line('.')
let compl_begin = col('.') - 2
" Bit risky but JS is rather limited language and local chars shouldn't
" fint way into names
while start >= 0 && line[start - 1] =~ '\k'
let start -= 1
endwhile
let b:compl_context = getline('.')[0:compl_begin]
return start
else
" Initialize base return lists
let res = []
let res2 = []
" a:base is very short - we need context
" Shortcontext is context without a:base, useful for checking if we are
" looking for objects and for what objects we are looking for
let context = b:compl_context
let shortcontext = substitute(context, a:base.'$', '', '')
unlet! b:compl_context
if exists("b:jsrange")
let file = getline(b:jsrange[0],b:jsrange[1])
unlet! b:jsrange
if len(b:js_extfiles) > 0
let file = b:js_extfiles + file
endif
else
let file = getline(1, '$')
endif
" Completion of properties, methods, etc. {{{
if shortcontext =~ '\.$'
" Complete methods and properties for objects
" DOM separate
let doms = ['style.']
" Arrays
let arrayprop = ['constructor', 'index', 'input', 'length', 'prototype']
let arraymeth = ['concat', 'join', 'pop', 'push', 'reverse', 'shift',
\ 'splice', 'sort', 'toSource', 'toString', 'unshift', 'valueOf',
\ 'watch', 'unwatch']
call map(arraymeth, 'v:val."("')
let arrays = arrayprop + arraymeth
" Boolean - complete subset of array values
" properties - constructor, prototype
" methods - toSource, toString, valueOf
" Date
" properties - constructor, prototype
let datemeth = ['getDate', 'getDay', 'getFullYear', 'getHours', 'getMilliseconds',
\ 'getMinutes', 'getMonth', 'getSeconds', 'getTime', 'getTimezoneOffset',
\ 'getUTCDate', 'getUTCDay', 'getUTCFullYear', 'getUTCHours', 'getUTCMilliseconds',
\ 'getUTCMinutes', 'getUTCMonth', 'getUTCSeconds',
\ 'getYear', 'parse', 'parse',
\ 'setDate', 'setDay', 'setFullYear', 'setHours', 'setMilliseconds',
\ 'setMinutes', 'setMonth', 'setSeconds',
\ 'setUTCDate', 'setUTCDay', 'setUTCFullYear', 'setUTCHours', 'setUTCMilliseconds',
\ 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds', 'setYear', 'setTime',
\ 'toGMTString', 'toLocaleString', 'toLocaleDateString', 'toLocaleTimeString',
\ 'toSource', 'toString', 'toUTCString', 'UTC', 'valueOf', 'watch', 'unwatch']
call map(datemeth, 'v:val."("')
let dates = datemeth
" Function
let funcprop = ['arguments', 'arguments.callee', 'arguments.caller', 'arguments.length',
\ 'arity', 'constructor', 'length', 'prototype']
let funcmeth = ['apply', 'call', 'toSource', 'toString', 'valueOf']
call map(funcmeth, 'v:val."("')
let funcs = funcprop + funcmeth
" Math
let mathprop = ['E', 'LN2', 'LN10', 'LOG2E', 'LOG10E', 'PI', 'SQRT1_2', 'SQRT']
let mathmeth = ['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'exp', 'floor',
\ 'log', 'max', 'min', 'pow', 'random', 'round', 'sin', 'sqrt', 'tan',
\ 'watch', 'unwatch']
call map(mathmeth, 'v:val."("')
let maths = mathprop + mathmeth
" Number
let numbprop = ['MAX_VALUE', 'MIN_VALUE', 'NaN', 'NEGATIVE_INFINITY', 'POSITIVE_INFINITY',
\ 'constructor', 'prototype']
let numbmeth = ['toExponential', 'toFixed', 'toPrecision', 'toSource', 'toString', 'valueOf',
\ 'watch', 'unwatch']
call map(numbmeth, 'v:val."("')
let numbs = numbprop + numbmeth
" Object
let objeprop = ['constructor', 'prototype']
let objemeth = ['eval', 'toSource', 'toString', 'unwatch', 'watch', 'valueOf']
call map(objemeth, 'v:val."("')
let objes = objeprop + objemeth
" RegExp
let regeprop = ['constructor', 'global', 'ignoreCase', 'lastIndex', 'multiline', 'source', 'prototype']
let regemeth = ['exec', 'test', 'toSource', 'toString', 'watch', 'unwatch']
call map(regemeth, 'v:val."("')
let reges = regeprop + regemeth
" String
let striprop = ['constructor', 'length', 'prototype']
let strimeth = ['anchor', 'big', 'blink', 'bold', 'charAt', 'charCodeAt', 'concat',
\ 'fixed', 'fontcolor', 'fontsize', 'fromCharCode', 'indexOf', 'italics',
\ 'lastIndexOf', 'link', 'match', 'replace', 'search', 'slice', 'small',
\ 'split', 'strike', 'sub', 'substr', 'substring', 'sup', 'toLowerCase',
\ 'toSource', 'toString', 'toUpperCase', 'watch', 'unwatch']
call map(strimeth, 'v:val."("')
let stris = striprop + strimeth
" User created properties
let user_props1 = filter(copy(file), 'v:val =~ "this\\.\\k"')
let juser_props1 = join(user_props1, ' ')
let user_props1 = split(juser_props1, '\zethis\.')
unlet! juser_props1
call map(user_props1, 'matchstr(v:val, "this\\.\\zs\\k\\+\\ze")')
let user_props2 = filter(copy(file), 'v:val =~ "\\.prototype\\.\\k"')
let juser_props2 = join(user_props2, ' ')
let user_props2 = split(juser_props2, '\zeprototype\.')
unlet! juser_props2
call map(user_props2, 'matchstr(v:val, "prototype\\.\\zs\\k\\+\\ze")')
let user_props = user_props1 + user_props2
" HTML DOM properties
" Anchors - anchor.
let anchprop = ['accessKey', 'charset', 'coords', 'href', 'hreflang', 'id', 'innerHTML',
\ 'name', 'rel', 'rev', 'shape', 'tabIndex', 'target', 'type', 'onBlur', 'onFocus']
let anchmeth = ['blur', 'focus']
call map(anchmeth, 'v:val."("')
let anths = anchprop + anchmeth
" Area - area.
let areaprop = ['accessKey', 'alt', 'coords', 'hash', 'host', 'hostname', 'href', 'id',
\ 'noHref', 'pathname', 'port', 'protocol', 'search', 'shape', 'tabIndex', 'target']
let areameth = ['onClick', 'onDblClick', 'onMouseOut', 'onMouseOver']
call map(areameth, 'v:val."("')
let areas = areaprop + areameth
" Base - base.
let baseprop = ['href', 'id', 'target']
let bases = baseprop
" Body - body.
let bodyprop = ['aLink', 'background', 'gbColor', 'id', 'link', 'scrollLeft', 'scrollTop',
\ 'text', 'vLink']
let bodys = bodyprop
" Document - document.
let docuprop = ['anchors', 'applets', 'childNodes', 'embeds', 'forms', 'images', 'links', 'stylesheets',
\ 'body', 'cookie', 'documentElement', 'domain', 'lastModified', 'referrer', 'title', 'URL']
let documeth = ['close', 'createAttribute', 'createElement', 'createTextNode', 'focus', 'getElementById',
\ 'getElementsByName', 'getElementsByTagName', 'open', 'write', 'writeln',
\ 'onClick', 'onDblClick', 'onFocus', 'onKeyDown', 'onKeyPress', 'onKeyUp',
\ 'onMouseDown', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onResize']
call map(documeth, 'v:val."("')
let docuxprop = ['attributes', 'childNodes', 'doctype', 'documentElement', 'firstChild',
\ 'implementation', 'namespaceURI', 'nextSibling', 'nodeName', 'nodeType',
\ 'nodeValue', 'ownerDocument', 'parentNode', 'previousSibling']
let docuxmeth = ['createAttribute', 'createCDATASection',
\ 'createComment', 'createDocument', 'createDocumentFragment',
\ 'createElement', 'createEntityReference', 'createProcessingInstruction',
\ 'createTextNode']
call map(docuxmeth, 'v:val."("')
let docus = docuprop + docuxprop + documeth + docuxmeth
" Form - form.
let formprop = ['elements', 'acceptCharset', 'action', 'encoding', 'enctype', 'id', 'length',
\ 'method', 'name', 'tabIndex', 'target']
let formmeth = ['reset', 'submit', 'onReset', 'onSubmit']
call map(formmeth, 'v:val."("')
let forms = formprop + formmeth
" Frame - frame.
let framprop = ['contentDocument', 'frameBorder', 'id', 'longDesc', 'marginHeight', 'marginWidth',
\ 'name', 'noResize', 'scrolling', 'src']
let frammeth = ['blur', 'focus']
call map(frammeth, 'v:val."("')
let frams = framprop + frammeth
" Frameset - frameset.
let fsetprop = ['cols', 'id', 'rows']
let fsetmeth = ['blur', 'focus']
call map(fsetmeth, 'v:val."("')
let fsets = fsetprop + fsetmeth
" History - history.
let histprop = ['length']
let histmeth = ['back', 'forward', 'go']
call map(histmeth, 'v:val."("')
let hists = histprop + histmeth
" Iframe - iframe.
let ifraprop = ['align', 'frameBorder', 'height', 'id', 'longDesc', 'marginHeight', 'marginWidth',
\ 'name', 'scrolling', 'src', 'width']
let ifras = ifraprop
" Image - image.
let imagprop = ['align', 'alt', 'border', 'complete', 'height', 'hspace', 'id', 'isMap', 'longDesc',
\ 'lowSrc', 'name', 'src', 'useMap', 'vspace', 'width']
let imagmeth = ['onAbort', 'onError', 'onLoad']
call map(imagmeth, 'v:val."("')
let imags = histprop + imagmeth
" Button - accessible only by other properties
let buttprop = ['accessKey', 'disabled', 'form', 'id', 'name', 'tabIndex', 'type', 'value']
let buttmeth = ['blur', 'click', 'focus', 'onBlur', 'onClick', 'onFocus', 'onMouseDown', 'onMouseUp']
call map(buttmeth, 'v:val."("')
let butts = buttprop + buttmeth
" Checkbox - accessible only by other properties
let checprop = ['accept', 'accessKey', 'align', 'alt', 'checked', 'defaultChecked',
\ 'disabled', 'form', 'id', 'name', 'tabIndex', 'type', 'value']
let checmeth = ['blur', 'click', 'focus', 'onBlur', 'onClick', 'onFocus', 'onMouseDown', 'onMouseUp']
call map(checmeth, 'v:val."("')
let checs = checprop + checmeth
" File upload - accessible only by other properties
let fileprop = ['accept', 'accessKey', 'align', 'alt', 'defaultValue',
\ 'disabled', 'form', 'id', 'name', 'tabIndex', 'type', 'value']
let filemeth = ['blur', 'focus', 'onBlur', 'onClick', 'onFocus', 'onMouseDown', 'onMouseUp']
call map(filemeth, 'v:val."("')
let files = fileprop + filemeth
" Hidden - accessible only by other properties
let hiddprop = ['defaultValue', 'form', 'id', 'name', 'type', 'value']
let hidds = hiddprop
" Password - accessible only by other properties
let passprop = ['accept', 'accessKey', 'defaultValue',
\ 'disabled', 'form', 'id', 'maxLength', 'name', 'readOnly', 'size', 'tabIndex',
\ 'type', 'value']
let passmeth = ['blur', 'click', 'focus', 'select', 'onBlur', 'onFocus', 'onKeyDown',
\ 'onKeyPress', 'onKeyUp']
call map(passmeth, 'v:val."("')
let passs = passprop + passmeth
" Radio - accessible only by other properties
let radiprop = ['accept', 'accessKey', 'align', 'alt', 'checked', 'defaultChecked',
\ 'disabled', 'form', 'id', 'name', 'tabIndex', 'type', 'value']
let radimeth = ['blur', 'click', 'focus', 'select', 'onBlur', 'onFocus']
call map(radimeth, 'v:val."("')
let radis = radiprop + radimeth
" Reset - accessible only by other properties
let reseprop = ['accept', 'accessKey', 'align', 'alt', 'defaultValue',
\ 'disabled', 'form', 'id', 'name', 'size', 'tabIndex', 'type', 'value']
let resemeth = ['blur', 'click', 'focus', 'select', 'onBlur', 'onFocus']
call map(resemeth, 'v:val."("')
let reses = reseprop + resemeth
" Submit - accessible only by other properties
let submprop = ['accept', 'accessKey', 'align', 'alt', 'defaultValue',
\ 'disabled', 'form', 'id', 'name', 'size', 'tabIndex', 'type', 'value']
let submmeth = ['blur', 'click', 'focus', 'select', 'onClick', 'onSelectStart']
call map(submmeth, 'v:val."("')
let subms = submprop + submmeth
" Text - accessible only by other properties
let textprop = ['accept', 'accessKey', 'align', 'alt', 'defaultValue',
\ 'disabled', 'form', 'id', 'maxLength', 'name', 'readOnly',
\ 'size', 'tabIndex', 'type', 'value']
let textmeth = ['blur', 'focus', 'select', 'onBlur', 'onChange', 'onFocus', 'onKeyDown',
\ 'onKeyPress', 'onKeyUp', 'onSelect']
call map(textmeth, 'v:val."("')
let texts = textprop + textmeth
" Link - link.
let linkprop = ['charset', 'disabled', 'href', 'hreflang', 'id', 'media',
\ 'rel', 'rev', 'target', 'type']
let linkmeth = ['onLoad']
call map(linkmeth, 'v:val."("')
let links = linkprop + linkmeth
" Location - location.
let locaprop = ['href', 'hash', 'host', 'hostname', 'pathname', 'port', 'protocol',
\ 'search']
let locameth = ['assign', 'reload', 'replace']
call map(locameth, 'v:val."("')
let locas = locaprop + locameth
" Meta - meta.
let metaprop = ['charset', 'content', 'disabled', 'httpEquiv', 'name', 'scheme']
let metas = metaprop
" Navigator - navigator.
let naviprop = ['plugins', 'appCodeName', 'appName', 'appVersion', 'cookieEnabled',
\ 'platform', 'userAgent']
let navimeth = ['javaEnabled', 'taintEnabled']
call map(navimeth, 'v:val."("')
let navis = naviprop + navimeth
" Object - object.
let objeprop = ['align', 'archive', 'border', 'code', 'codeBase', 'codeType', 'data',
\ 'declare', 'form', 'height', 'hspace', 'id', 'name', 'standby', 'tabIndex',
\ 'type', 'useMap', 'vspace', 'width']
let objes = objeprop
" Option - accessible only by other properties
let optiprop = ['defaultSelected',
\ 'disabled', 'form', 'id', 'index', 'label', 'selected', 'text', 'value']
let optis = optiprop
" Screen - screen.
let screprop = ['availHeight', 'availWidth', 'colorDepth', 'height', 'width']
let scres = screprop
" Select - accessible only by other properties
let seleprop = ['options', 'disabled', 'form', 'id', 'length', 'multiple', 'name',
\ 'selectedIndex', 'size', 'tabIndex', 'type', 'value']
let selemeth = ['blur', 'focus', 'remove', 'onBlur', 'onChange', 'onFocus']
call map(selemeth, 'v:val."("')
let seles = seleprop + selemeth
" Style - style.
let stylprop = ['background', 'backgroundAttachment', 'backgroundColor', 'backgroundImage',
\ 'backgroundPosition', 'backgroundRepeat',
\ 'border', 'borderBottom', 'borderLeft', 'borderRight', 'borderTop',
\ 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor',
\ 'borderBottomStyle', 'borderLeftStyle', 'borderRightStyle', 'borderTopStyle',
\ 'borderBottomWidth', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth',
\ 'borderColor', 'borderStyle', 'borderWidth', 'margin', 'marginBottom',
\ 'marginLeft', 'marginRight', 'marginTop', 'outline', 'outlineStyle', 'outlineWidth',
\ 'outlineColor', 'outlineStyle', 'outlineWidth', 'padding', 'paddingBottom',
\ 'paddingLeft', 'paddingRight', 'paddingTop',
\ 'clear', 'clip', 'clipBottom', 'clipLeft', 'clipRight', 'clipTop', 'content',
\ 'counterIncrement', 'counterReset', 'cssFloat', 'cursor', 'direction',
\ 'display', 'markerOffset', 'marks', 'maxHeight', 'maxWidth', 'minHeight',
\ 'minWidth', 'overflow', 'overflowX', 'overflowY', 'verticalAlign', 'visibility',
\ 'width',
\ 'listStyle', 'listStyleImage', 'listStylePosition', 'listStyleType',
\ 'cssText', 'bottom', 'height', 'left', 'position', 'right', 'top', 'width', 'zindex',
\ 'orphans', 'widows', 'page', 'pageBreakAfter', 'pageBreakBefore', 'pageBreakInside',
\ 'borderCollapse', 'borderSpacing', 'captionSide', 'emptyCells', 'tableLayout',
\ 'color', 'font', 'fontFamily', 'fontSize', 'fontSizeAdjust', 'fontStretch',
\ 'fontStyle', 'fontVariant', 'fontWeight', 'letterSpacing', 'lineHeight', 'quotes',
\ 'textAlign', 'textIndent', 'textShadow', 'textTransform', 'textUnderlinePosition',
\ 'unicodeBidi', 'whiteSpace', 'wordSpacing']
let styls = stylprop
" Table - table.
let tablprop = ['rows', 'tBodies', 'align', 'bgColor', 'border', 'caption', 'cellPadding',
\ 'cellSpacing', 'frame', 'height', 'rules', 'summary', 'tFoot', 'tHead', 'width']
let tablmeth = ['createCaption', 'createTFoot', 'createTHead', 'deleteCaption', 'deleteRow',
\ 'deleteTFoot', 'deleteTHead', 'insertRow']
call map(tablmeth, 'v:val."("')
let tabls = tablprop + tablmeth
" Table data - TableData.
let tdatprop = ['abbr', 'align', 'axis', 'bgColor', 'cellIndex', 'ch', 'chOff',
\ 'colSpan', 'headers', 'noWrap', 'rowSpan', 'scope', 'vAlign', 'width']
let tdats = tdatprop
" Table row - TableRow.
let trowprop = ['cells', 'align', 'bgColor', 'ch', 'chOff', 'rowIndex', 'sectionRowIndex',
\ 'vAlign']
let trowmeth = ['deleteCell', 'insertCell']
call map(trowmeth, 'v:val."("')
let trows = trowprop + trowmeth
" Textarea - accessible only by other properties
let tareprop = ['accessKey', 'cols', 'defaultValue',
\ 'disabled', 'form', 'id', 'name', 'readOnly', 'rows',
\ 'tabIndex', 'type', 'value', 'selectionStart', 'selectionEnd']
let taremeth = ['blur', 'focus', 'select', 'onBlur', 'onChange', 'onFocus']
call map(taremeth, 'v:val."("')
let tares = tareprop + taremeth
" Window - window.
let windprop = ['frames', 'closed', 'defaultStatus', 'encodeURI', 'event', 'history',
\ 'length', 'location', 'name', 'onload', 'opener', 'parent', 'screen', 'self',
\ 'status', 'top', 'XMLHttpRequest', 'ActiveXObject']
let windmeth = ['alert', 'blur', 'clearInterval', 'clearTimeout', 'close', 'confirm', 'focus',
\ 'moveBy', 'moveTo', 'open', 'print', 'prompt', 'scrollBy', 'scrollTo', 'setInterval',
\ 'setTimeout']
call map(windmeth, 'v:val."("')
let winds = windprop + windmeth
" XMLHttpRequest - access by new xxx()
let xmlhprop = ['onreadystatechange', 'readyState', 'responseText', 'responseXML',
\ 'status', 'statusText', 'parseError']
let xmlhmeth = ['abort', 'getAllResponseHeaders', 'getResponseHeaders', 'open',
\ 'send', 'setRequestHeader']
call map(xmlhmeth, 'v:val."("')
let xmlhs = xmlhprop + xmlhmeth
" XML DOM
" Attributes - element.attributes[x].
let xdomattrprop = ['name', 'specified', 'value']
" Element - anyelement.
let xdomelemprop = ['attributes', 'childNodes', 'firstChild', 'lastChild',
\ 'namespaceURI', 'nextSibling', 'nodeName', 'nodeType', 'nodeValue',
\ 'ownerDocument', 'parentNode', 'prefix', 'previousSibling', 'tagName']
let xdomelemmeth = ['appendChild', 'cloneNode', 'getAttribute', 'getAttributeNode',
\ 'getElementsByTagName', 'hasChildNodes', 'insertBefore', 'normalize',
\ 'removeAttribute', 'removeAttributeNode', 'removeChild', 'replaceChild',
\ 'setAttribute', 'setAttributeNode']
call map(xdomelemmeth, 'v:val."("')
let xdomelems = xdomelemprop + xdomelemmeth
" Node - anynode.
let xdomnodeprop = ['attributes', 'childNodes', 'firstChild', 'lastChild',
\ 'namespaceURI', 'nextSibling', 'nodeName', 'nodeType', 'nodeValue',
\ 'ownerDocument', 'parentNode', 'prefix', 'previousSibling']
let xdomnodemeth = ['appendChild', 'cloneNode',
\ 'hasChildNodes', 'insertBefore', 'removeChild', 'replaceChild']
call map(xdomnodemeth, 'v:val."("')
let xdomnodes = xdomnodeprop + xdomnodemeth
" NodeList
let xdomnliss = ['length', 'item(']
" Error - parseError.
let xdomerror = ['errorCode', 'reason', 'line', 'linepos', 'srcText', 'url', 'filepos']
" Find object type declaration to reduce number of suggestions. {{{
" 1. Get object name
" 2. Find object declaration line
" 3. General declaration follows "= new Type" syntax, additional else
" for regexp "= /re/"
" 4. Make correction for Microsoft.XMLHTTP ActiveXObject
" 5. Repeat for external files
let object = matchstr(shortcontext, '\zs\k\+\ze\(\[.\{-}\]\)\?\.$')
if len(object) > 0
let decl_line = search(object.'.\{-}=\s*new\s*', 'bn')
if decl_line > 0
let object_type = matchstr(getline(decl_line), object.'.\{-}=\s*new\s*\zs\k\+\ze')
if object_type == 'ActiveXObject' && matchstr(getline(decl_line), object.'.\{-}=\s*new\s*ActiveXObject\s*(.Microsoft\.XMLHTTP.)') != ''
let object_type = 'XMLHttpRequest'
endif
else
let decl_line = search('var\s*'.object.'\s*=\s*\/', 'bn')
if decl_line > 0
let object_type = 'RegExp'
endif
endif
" We didn't find var declaration in current file but we may have
" something in external files.
if decl_line == 0 && exists("b:js_extfiles")
let dext_line = filter(copy(b:js_extfiles), 'v:val =~ "'.object.'.\\{-}=\\s*new\\s*"')
if len(dext_line) > 0
let object_type = matchstr(dext_line[-1], object.'.\{-}=\s*new\s*\zs\k\+\ze')
if object_type == 'ActiveXObject' && matchstr(dext_line[-1], object.'.\{-}=\s*new\s*ActiveXObject\s*(.Microsoft\.XMLHTTP.)') != ''
let object_type = 'XMLHttpRequest'
endif
else
let dext_line = filter(copy(b:js_extfiles), 'v:val =~ "var\s*'.object.'\\s*=\\s*\\/"')
if len(dext_line) > 0
let object_type = 'RegExp'
endif
endif
endif
endif
" }}}
if !exists('object_type')
let object_type = ''
endif
if object_type == 'Date'
let values = dates
elseif object_type == 'Image'
let values = imags
elseif object_type == 'Array'
let values = arrays
elseif object_type == 'Boolean'
" TODO: a bit more than real boolean
let values = arrays
elseif object_type == 'XMLHttpRequest'
let values = xmlhs
elseif object_type == 'String'
let values = stris
elseif object_type == 'RegExp'
let values = reges
elseif object_type == 'Math'
let values = maths
endif
if !exists('values')
" List of properties
if shortcontext =~ 'Math\.$'
let values = maths
elseif shortcontext =~ 'anchors\(\[.\{-}\]\)\?\.$'
let values = anths
elseif shortcontext =~ 'area\.$'
let values = areas
elseif shortcontext =~ 'base\.$'
let values = bases
elseif shortcontext =~ 'body\.$'
let values = bodys
elseif shortcontext =~ 'document\.$'
let values = docus
elseif shortcontext =~ 'forms\(\[.\{-}\]\)\?\.$'
let values = forms
elseif shortcontext =~ 'frameset\.$'
let values = fsets
elseif shortcontext =~ 'history\.$'
let values = hists
elseif shortcontext =~ 'iframe\.$'
let values = ifras
elseif shortcontext =~ 'images\(\[.\{-}\]\)\?\.$'
let values = imags
elseif shortcontext =~ 'links\(\[.\{-}\]\)\?\.$'
let values = links
elseif shortcontext =~ 'location\.$'
let values = locas
elseif shortcontext =~ 'meta\.$'
let values = metas
elseif shortcontext =~ 'navigator\.$'
let values = navis
elseif shortcontext =~ 'object\.$'
let values = objes
elseif shortcontext =~ 'screen\.$'
let values = scres
elseif shortcontext =~ 'style\.$'
let values = styls
elseif shortcontext =~ 'table\.$'
let values = tabls
elseif shortcontext =~ 'TableData\.$'
let values = tdats
elseif shortcontext =~ 'TableRow\.$'
let values = trows
elseif shortcontext =~ 'window\.$'
let values = winds
elseif shortcontext =~ 'parseError\.$'
let values = xdomerror
elseif shortcontext =~ 'attributes\[\d\+\]\.$'
let values = xdomattrprop
else
let values = user_props + arrays + dates + funcs + maths + numbs + objes + reges + stris
let values += doms + anths + areas + bases + bodys + docus + forms + frams + fsets + hists
let values += ifras + imags + links + locas + metas + navis + objes + scres
let values += tabls + trows + tares + winds
let values += xdomnodes + xdomnliss + xdomelems
endif
endif
for m in values
if m =~? '^'.a:base
call add(res, m)
elseif m =~? a:base
call add(res2, m)
endif
endfor
unlet! values
return res + res2
endif
" }}}
" Get variables data.
let variables = filter(copy(file), 'v:val =~ "var\\s"')
call map(variables, 'matchstr(v:val, ".\\{-}var\\s\\+\\zs.*\\ze")')
call map(variables, 'substitute(v:val, ";\\|$", ",", "g")')
let vars = []
" This loop (and next one) is necessary to get variable names from
" constructs like: var var1, var2, var3 = "something";
for i in range(len(variables))
let comma_separated = split(variables[i], ',\s*')
call map(comma_separated, 'matchstr(v:val, "\\k\\+")')
let vars += comma_separated
endfor
let variables = sort(vars)
unlet! vars
" Add "no var" variables.
let undeclared_variables = filter(copy(file), 'v:val =~ "^\\s*\\k\\+\\s*="')
let u_vars = []
for i in range(len(undeclared_variables))
let split_equal = split(undeclared_variables[i], '\s*=')
call map(split_equal, 'matchstr(v:val, "\\k\\+$")')
let u_vars += split_equal
endfor
let variables += sort(u_vars)
unlet! u_vars
" Get functions
let functions = filter(copy(file), 'v:val =~ "^\\s*function\\s"')
let arguments = copy(functions)
call map(functions, 'matchstr(v:val, "^\\s*function\\s\\+\\zs\\k\\+")')
call map(functions, 'v:val."("')
let functions = sort(functions)
" Create table to keep arguments for additional 'menu' info
let b:js_menuinfo = {}
for i in arguments
let g:ia = i
let f_elements = matchlist(i, 'function\s\+\(\k\+\)\s*(\(.\{-}\))')
if len(f_elements) == 3
let b:js_menuinfo[f_elements[1].'('] = f_elements[2]
endif
endfor
" Get functions arguments
call map(arguments, 'matchstr(v:val, "function.\\{-}(\\zs.\\{-}\\ze)")')
let jargs = join(arguments, ',')
let jargs = substitute(jargs, '\s', '', 'g')
let arguments = split(jargs, ',')
let arguments = sort(arguments)
" Built-in functions
let builtin = ['alert(', 'confirm(']
" Top-level HTML DOM objects
let htmldom = ['document', 'anchor', 'area', 'base', 'body', 'document', 'event', 'form', 'frame', 'frameset', 'history', 'iframe', 'image', 'input', 'link', 'location', 'meta', 'navigator', 'object', 'option', 'screen', 'select', 'table', 'tableData', 'tableHeader', 'tableRow', 'textarea', 'window']
call map(htmldom, 'v:val."."')
" Top-level properties
let properties = ['decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent',
\ 'eval', 'Infinity', 'isFinite', 'isNaN', 'NaN', 'Number', 'parseFloat',
\ 'parseInt', 'String', 'undefined', 'escape', 'unescape']
" Keywords
let keywords = ["Array", "Boolean", "Date", "Function", "Math", "Number", "Object", "RegExp", "String", "XMLHttpRequest", "ActiveXObject", "abstract", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue", "debugger", "default", "delete", "do", "double ", "else", "enum", "export", "extends", "false", "final", "finally", "float", "for", "function", "goto", "if", "implements", "import", "in ", "instanceof", "int", "interface", "long", "native", "new", "null", "package", "private", "protected", "public", "return", "short", "static", "super ", "switch", "synchronized", "this", "throw", "throws", "transient", "true", "try", "typeof", "var", "void", "volatile", "while", "with"]
let values = variables + functions + htmldom + arguments + builtin + properties + keywords
for m in values
if m =~? '^'.a:base
call add(res, m)
elseif m =~? a:base
call add(res2, m)
endif
endfor
let menu = res + res2
let final_menu = []
for i in range(len(menu))
let item = menu[i]
if item =~ '($'
let kind = 'f'
if has_key(b:js_menuinfo, item)
let m_info = b:js_menuinfo[item]
else
let m_info = ''
endif
else
let kind = 'v'
let m_info = ''
endif
let final_menu += [{'word':item, 'menu':m_info, 'kind':kind}]
endfor
let g:fm = final_menu
return final_menu
endfunction
" vim:set foldmethod=marker:

3948
runtime/autoload/netrw.vim Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,321 @@
" netrwFileHandlers: contains various extension-based file handlers for
" netrw's browsers' x command ("eXecute launcher")
" Author: Charles E. Campbell, Jr.
" Date: Oct 12, 2005
" Version: 7
" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
" netrwFileHandlers.vim is provided *as is* and comes with no
" warranty of any kind, either expressed or implied. In no
" event will the copyright holder be liable for any damages
" resulting from the use of this software.
"
" Rom 6:23 (WEB) For the wages of sin is death, but the free gift of God {{{1
" is eternal life in Christ Jesus our Lord.
" ---------------------------------------------------------------------
" Load Once: {{{1
if exists("g:loaded_netrwFileHandlers") || &cp
finish
endif
let s:keepcpo= &cpo
set cpo&vim
let g:loaded_netrwFileHandlers= "v7"
" ---------------------------------------------------------------------
" netrwFileHandlers#Init: {{{1
" This functions is here to allow a call to this function to autoload
" the netrwFileHandlers.vim file
fun! netrwFileHandlers#Init()
" call Dfunc("netrwFileHandlers#Init()")
" call Dret("netrwFileHandlers#Init")
endfun
" ---------------------------------------------------------------------
" netrwFileHandlers#NFH_html: handles html when the user hits "x" when the {{{1
" cursor is atop a *.html file
fun! netrwFileHandlers#NFH_html(pagefile)
" call Dfunc("netrwFileHandlers#NFH_html(".a:pagefile.")")
let page= substitute(a:pagefile,'^','file://','')
if executable("mozilla")
" call Decho("executing !mozilla ".page)
exe "!mozilla \"".page.'"'
elseif executable("netscape")
" call Decho("executing !netscape ".page)
exe "!netscape \"".page.'"'
else
" call Dret("netrwFileHandlers#NFH_html 0")
return 0
endif
" call Dret("netrwFileHandlers#NFH_html 1")
return 1
endfun
" ---------------------------------------------------------------------
" netrwFileHandlers#NFH_htm: handles html when the user hits "x" when the {{{1
" cursor is atop a *.htm file
fun! netrwFileHandlers#NFH_htm(pagefile)
" call Dfunc("netrwFileHandlers#NFH_htm(".a:pagefile.")")
let page= substitute(a:pagefile,'^','file://','')
if executable("mozilla")
" call Decho("executing !mozilla ".page)
exe "!mozilla \"".page.'"'
elseif executable("netscape")
" call Decho("executing !netscape ".page)
exe "!netscape \"".page.'"'
else
" call Dret("netrwFileHandlers#NFH_htm 0")
return 0
endif
" call Dret("netrwFileHandlers#NFH_htm 1")
return 1
endfun
" ---------------------------------------------------------------------
" netrwFileHandlers#NFH_jpg: {{{1
fun! netrwFileHandlers#NFH_jpg(jpgfile)
" call Dfunc("netrwFileHandlers#NFH_jpg(jpgfile<".a:jpgfile.">)")
if executable("gimp")
exe "silent! !gimp -s ".a:jpgfile
elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
" call Decho("silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".escape(a:jpgfile," []|'"))
exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:jpgfile.'"'
else
" call Dret("netrwFileHandlers#NFH_jpg 0")
return 0
endif
" call Dret("netrwFileHandlers#NFH_jpg 1")
return 1
endfun
" ---------------------------------------------------------------------
" netrwFileHandlers#NFH_gif: {{{1
fun! netrwFileHandlers#NFH_gif(giffile)
" call Dfunc("netrwFileHandlers#NFH_gif(giffile<".a:giffile.">)")
if executable("gimp")
exe "silent! !gimp -s ".a:giffile
elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:giffile.'"'
else
" call Dret("netrwFileHandlers#NFH_gif 0")
return 0
endif
" call Dret("netrwFileHandlers#NFH_gif 1")
return 1
endfun
" ---------------------------------------------------------------------
" netrwFileHandlers#NFH_png: {{{1
fun! netrwFileHandlers#NFH_png(pngfile)
" call Dfunc("netrwFileHandlers#NFH_png(pngfile<".a:pngfile.">)")
if executable("gimp")
exe "silent! !gimp -s ".a:pngfile
elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:pngfile.'"'
else
" call Dret("netrwFileHandlers#NFH_png 0")
return 0
endif
" call Dret("netrwFileHandlers#NFH_png 1")
return 1
endfun
" ---------------------------------------------------------------------
" netrwFileHandlers#NFH_pnm: {{{1
fun! netrwFileHandlers#NFH_pnm(pnmfile)
" call Dfunc("netrwFileHandlers#NFH_pnm(pnmfile<".a:pnmfile.">)")
if executable("gimp")
exe "silent! !gimp -s ".a:pnmfile
elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:pnmfile.'"'
else
" call Dret("netrwFileHandlers#NFH_pnm 0")
return 0
endif
" call Dret("netrwFileHandlers#NFH_pnm 1")
return 1
endfun
" ---------------------------------------------------------------------
" netrwFileHandlers#NFH_bmp: visualize bmp files {{{1
fun! netrwFileHandlers#NFH_bmp(bmpfile)
" call Dfunc("netrwFileHandlers#NFH_bmp(bmpfile<".a:bmpfile.">)")
if executable("gimp")
exe "silent! !gimp -s ".a:bmpfile
elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:bmpfile.'"'
else
" call Dret("netrwFileHandlers#NFH_bmp 0")
return 0
endif
" call Dret("netrwFileHandlers#NFH_bmp 1")
return 1
endfun
" ---------------------------------------------------------------------
" netrwFileHandlers#NFH_pdf: visualize pdf files {{{1
fun! netrwFileHandlers#NFH_pdf(pdf)
" " call Dfunc("netrwFileHandlers#NFH_pdf(pdf<".a:pdf.">)")
if executable("gs")
exe 'silent! !gs "'.a:pdf.'"'
else
" " call Dret("netrwFileHandlers#NFH_pdf 0")
return 0
endif
" " call Dret("netrwFileHandlers#NFH_pdf 1")
return 1
endfun
" ---------------------------------------------------------------------
" netrwFileHandlers#NFH_doc: visualize doc files {{{1
fun! netrwFileHandlers#NFH_doc(doc)
" " call Dfunc("netrwFileHandlers#NFH_doc(doc<".a:doc.">)")
if executable("oowriter")
exe 'silent! !oowriter "'.a:doc.'"'
redraw!
else
" " call Dret("netrwFileHandlers#NFH_doc 0")
return 0
endif
" " call Dret("netrwFileHandlers#NFH_doc 1")
return 1
endfun
" ---------------------------------------------------------------------
" netrwFileHandlers#NFH_sxw: visualize sxw files {{{1
fun! netrwFileHandlers#NFH_sxw(sxw)
" " call Dfunc("netrwFileHandlers#NFH_sxw(sxw<".a:sxw.">)")
if executable("oowriter")
exe 'silent! !oowriter "'.a:sxw.'"'
redraw!
else
" " call Dret("netrwFileHandlers#NFH_sxw 0")
return 0
endif
" " call Dret("netrwFileHandlers#NFH_sxw 1")
return 1
endfun
" ---------------------------------------------------------------------
" netrwFileHandlers#NFH_xls: visualize xls files {{{1
fun! netrwFileHandlers#NFH_xls(xls)
" " call Dfunc("netrwFileHandlers#NFH_xls(xls<".a:xls.">)")
if executable("oocalc")
exe 'silent! !oocalc "'.a:xls.'"'
redraw!
else
" " call Dret("netrwFileHandlers#NFH_xls 0")
return 0
endif
" " call Dret("netrwFileHandlers#NFH_xls 1")
return 1
endfun
" ---------------------------------------------------------------------
" netrwFileHandlers#NFH_ps: handles PostScript files {{{1
fun! netrwFileHandlers#NFH_ps(ps)
" call Dfunc("netrwFileHandlers#NFH_ps()")
if executable("gs")
exe "silent! !gs ".a:ps
redraw!
elseif executable("ghostscript")
exe "silent! !ghostscript ".a:ps
redraw!
elseif executable("ghostscript")
exe "silent! !ghostscript ".a:ps
redraw!
elseif executable("gswin32")
exe "silent! !gswin32 \"".a:ps.'"'
redraw!
else
" call Dret("netrwFileHandlers#NFH_ps 0")
return 0
endif
" call Dret("netrwFileHandlers#NFH_ps 1")
return 1
endfun
" ---------------------------------------------------------------------
" netrwFileHandlers#NFH_eps: handles encapsulated PostScript files {{{1
fun! netrwFileHandlers#NFH_eps(eps)
" call Dfunc("netrwFileHandlers#NFH_ps()")
if executable("gs")
exe "silent! !gs ".a:eps
redraw!
elseif executable("ghostscript")
exe "silent! !ghostscript ".a:eps
redraw!
elseif executable("ghostscript")
exe "silent! !ghostscript ".a:eps
redraw!
elseif executable("gswin32")
exe "silent! !gswin32 \"".a:eps.'"'
redraw!
else
" call Dret("netrwFileHandlers#NFH_ps 0")
return 0
endif
endfun
" ---------------------------------------------------------------------
" netrwFileHandlers#NFH_fig: handles xfig files {{{1
fun! netrwFileHandlers#NFH_fig(fig)
" call Dfunc("netrwFileHandlers#NFH_fig()")
if executable("xfig")
exe "silent! !xfig ".a:fig
redraw!
else
" call Dret("netrwFileHandlers#NFH_fig 0")
return 0
endif
" call Dret("netrwFileHandlers#NFH_fig 1")
return 1
endfun
" ---------------------------------------------------------------------
" netrwFileHandlers#NFH_obj: handles tgif's obj files {{{1
fun! netrwFileHandlers#NFH_obj(obj)
" call Dfunc("netrwFileHandlers#NFH_obj()")
if has("unix") && executable("tgif")
exe "silent! !tgif ".a:obj
redraw!
else
" call Dret("netrwFileHandlers#NFH_obj 0")
return 0
endif
" call Dret("netrwFileHandlers#NFH_obj 1")
return 1
endfun
let &cpo= s:keepcpo
" ---------------------------------------------------------------------
" Modelines: {{{1
" vim: ts=4 fdm=marker

View File

@ -0,0 +1,167 @@
" netrwSettings.vim: makes netrw settings simpler
" Date: Jan 26, 2006
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
" Version: 6a ASTRO-ONLY
" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
" netrwSettings.vim is provided *as is* and comes with no
" warranty of any kind, either expressed or implied. By using
" this plugin, you agree that in no event will the copyright
" holder be liable for any damages resulting from the use
" of this software.
"
" Mat 4:23 (WEB) Jesus went about in all Galilee, teaching in their {{{1
" synagogues, preaching the gospel of the kingdom, and healing
" every disease and every sickness among the people.
" Load Once: {{{1
if exists("g:loaded_netrwSettings") || &cp
finish
endif
let g:loaded_netrwSettings = "v6a"
" ---------------------------------------------------------------------
" NetrwSettings: {{{1
fun! netrwSettings#NetrwSettings()
" this call is here largely just to insure that netrw has been loaded
call netrw#NetSavePosn()
if !exists("g:loaded_netrw")
echohl WarningMsg | echomsg "***sorry*** netrw needs to be loaded prior to using NetrwSettings" | echohl None
return
endif
above wincmd s
enew
setlocal noswapfile bh=wipe
set ft=vim
file Netrw\ Settings
" these variables have the following default effects when they don't
" exist (ie. have not been set by the user in his/her .vimrc)
if !exists("g:netrw_longlist")
let g:netrw_longlist= 0
let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa"
endif
if !exists("g:netrw_silent")
let g:netrw_silent= 0
endif
if !exists("g:netrw_use_nt_rcp")
let g:netrw_use_nt_rcp= 0
endif
if !exists("g:netrw_ftp")
let g:netrw_ftp= 0
endif
if !exists("g:netrw_ignorenetrc")
let g:netrw_ignorenetrc= 0
endif
put ='+ --------------------------------------------'
put ='+ NetrwSettings: by Charles E. Campbell, Jr.'
put ='+ Press ? with cursor atop any line for help '
put ='+ --------------------------------------------'
let s:netrw_settings_stop= line(".")
put =''
put ='+ Netrw Protocol Commands'
put = 'let g:netrw_dav_cmd = '.g:netrw_dav_cmd
put = 'let g:netrw_fetch_cmd = '.g:netrw_fetch_cmd
put = 'let g:netrw_ftp_cmd = '.g:netrw_ftp_cmd
put = 'let g:netrw_http_cmd = '.g:netrw_http_cmd
put = 'let g:netrw_rcp_cmd = '.g:netrw_rcp_cmd
put = 'let g:netrw_rsync_cmd = '.g:netrw_rsync_cmd
put = 'let g:netrw_scp_cmd = '.g:netrw_scp_cmd
put = 'let g:netrw_sftp_cmd = '.g:netrw_sftp_cmd
put = 'let g:netrw_ssh_cmd = '.g:netrw_ssh_cmd
let s:netrw_protocol_stop= line(".")
put = ''
put ='+Netrw Transfer Control'
put = 'let g:netrw_cygwin = '.g:netrw_cygwin
put = 'let g:netrw_ftp = '.g:netrw_ftp
put = 'let g:netrw_ftpmode = '.g:netrw_ftpmode
put = 'let g:netrw_ignorenetrc = '.g:netrw_ignorenetrc
put = 'let g:netrw_use_nt_rcp = '.g:netrw_use_nt_rcp
put = 'let g:netrw_win95ftp = '.g:netrw_win95ftp
let s:netrw_xfer_stop= line(".")
put = ''
put ='+ Netrw Browser Control'
put = 'let g:netrw_alto = '.g:netrw_alto
put = 'let g:netrw_altv = '.g:netrw_altv
put = 'let g:netrw_browse_split = '.g:netrw_browse_split
if exists("g:netrw_browsex_viewer")
put = 'let g:netrw_browsex_viewer = '.g:netrw_browsex_viewer
else
put = 'let g:netrw_browsex_viewer = (not defined)'
endif
put = 'let g:netrw_dirhistmax = '.g:netrw_dirhistmax
put = 'let g:netrw_ftp_browse_reject = '.g:netrw_ftp_browse_reject
put = 'let g:netrw_ftp_list_cmd = '.g:netrw_ftp_list_cmd
put = 'let g:netrw_hide = '.g:netrw_hide
put = 'let g:netrw_keepdir = '.g:netrw_keepdir
put = 'let g:netrw_list_cmd = '.g:netrw_list_cmd
put = 'let g:netrw_list_hide = '.g:netrw_list_hide
put = 'let g:netrw_local_mkdir = '.g:netrw_local_mkdir
put = 'let g:netrw_local_rmdir = '.g:netrw_local_rmdir
put = 'let g:netrw_longlist = '.g:netrw_longlist
put = 'let g:netrw_maxfilenamelen = '.g:netrw_maxfilenamelen
put = 'let g:netrw_mkdir_cmd = '.g:netrw_mkdir_cmd
put = 'let g:netrw_rename_cmd = '.g:netrw_rename_cmd
put = 'let g:netrw_rm_cmd = '.g:netrw_rm_cmd
put = 'let g:netrw_rmdir_cmd = '.g:netrw_rmdir_cmd
put = 'let g:netrw_rmf_cmd = '.g:netrw_rmf_cmd
put = 'let g:netrw_silent = '.g:netrw_silent
put = 'let g:netrw_sort_by = '.g:netrw_sort_by
put = 'let g:netrw_sort_direction = '.g:netrw_sort_direction
put = 'let g:netrw_sort_sequence = '.g:netrw_sort_sequence
put = 'let g:netrw_ssh_browse_reject = '.g:netrw_ssh_browse_reject
put = 'let g:netrw_timefmt = '.g:netrw_timefmt
put = 'let g:netrw_winsize = '.g:netrw_winsize
put =''
put ='+ For help, place cursor on line and press ?'
1d
silent %s/^+/"/e
res 99
silent %s/= \([^0-9].*\)$/= '\1'/e
silent %s/= $/= ''/e
1
set nomod
map <buffer> <silent> ? :call NetrwSettingHelp()<cr>
let tmpfile= tempname()
exe 'au BufWriteCmd Netrw\ Settings silent w! '.tmpfile.'|so '.tmpfile.'|call delete("'.tmpfile.'")|set nomod'
endfun
" ---------------------------------------------------------------------
" NetrwSettingHelp: {{{2
fun! NetrwSettingHelp()
" call Dfunc("NetrwSettingHelp()")
let curline = getline(".")
if curline =~ '='
let varhelp = substitute(curline,'^\s*let ','','e')
let varhelp = substitute(varhelp,'\s*=.*$','','e')
" call Decho("trying help ".varhelp)
try
exe "he ".varhelp
catch /^Vim\%((\a\+)\)\=:E149/
echo "***sorry*** no help available for <".varhelp.">"
endtry
elseif line(".") < s:netrw_settings_stop
he netrw-settings
elseif line(".") < s:netrw_protocol_stop
he netrw-externapp
elseif line(".") < s:netrw_xfer_stop
he netrw-variables
else
he netrw-browse-var
endif
" call Dret("NetrwSettingHelp")
endfun
" ---------------------------------------------------------------------
" Modelines: {{{1
" vim:ts=8 fdm=marker

View File

@ -0,0 +1,351 @@
"pycomplete.vim - Omni Completion for python
" Maintainer: Aaron Griffin
" Version: 0.3
" Last Updated: 23 January 2006
"
" v0.3 Changes:
" added top level def parsing
" for safety, call returns are not evaluated
" handful of parsing changes
" trailing ( and . characters
" argument completion on open parens
" stop parsing at current line - ++performance, local var resolution
"
" TODO
" RExec subclass
" Code cleanup + make class
" use internal dict, not globals()
if !has('python')
echo "Error: Required vim compiled with +python"
finish
endif
function! pycomplete#Complete(findstart, base)
"findstart = 1 when we need to get the text length
if a:findstart
let line = getline('.')
let idx = col('.')
while idx > 0
let idx -= 1
let c = line[idx-1]
if c =~ '\w'
continue
elseif ! c =~ '\.'
idx = -1
break
else
break
endif
endwhile
return idx
"findstart = 0 when we need to return the list of completions
else
execute "python get_completions('" . a:base . "')"
return g:pycomplete_completions
endif
endfunction
function! s:DefPython()
python << PYTHONEOF
import vim, sys, types
import __builtin__
import tokenize, keyword, cStringIO
LOCALDEFS = \
['LOCALDEFS', 'clean_up','eval_source_code', \
'get_completions', '__builtin__', '__builtins__', \
'dbg', '__name__', 'vim', 'sys', 'parse_to_end', \
'parse_statement', 'tokenize', 'keyword', 'cStringIO', \
'debug_level', 'safe_eval', '_ctor', 'get_arguments', \
'strip_calls', 'types', 'parse_block']
def dbg(level,msg):
debug_level = 1
try:
debug_level = vim.eval("g:pycomplete_debug_level")
except:
pass
if level <= debug_level: print(msg)
def strip_calls(stmt):
parsed=''
level = 0
for c in stmt:
if c in ['[','(']:
level += 1
elif c in [')',']']:
level -= 1
elif level == 0:
parsed += c
##dbg(10,"stripped: %s" % parsed)
return parsed
def get_completions(base):
stmt = vim.eval('expand("<cWORD>")')
#dbg(1,"statement: %s - %s" % (stmt, base))
stmt = stmt+base
eval_source_code()
try:
ridx = stmt.rfind('.')
if stmt[-1] == '(':
match = ""
stmt = strip_calls(stmt[:len(stmt)-1])
all = get_arguments(eval(stmt))
elif ridx == -1:
match = stmt
all = globals() + __builtin__.__dict__
else:
match = stmt[ridx+1:]
stmt = strip_calls(stmt[:ridx])
all = eval(stmt).__dict__
#dbg(15,"completions for: %s, match=%s" % (stmt,match))
completions = []
if type(all) == types.DictType:
for m in all:
if m.find('_') != 0 and m.find(match) == 0 and \
m not in LOCALDEFS:
#dbg(25,"matched... %s, %s" % (m, m.find(match)))
typestr = str(all[m])
if "function" in typestr: m += '('
elif "method" in typestr: m += '('
elif "module" in typestr: m += '.'
elif "class" in typestr: m += '('
completions.append(m)
completions.sort()
else:
completions.append(all)
#dbg(10,"all completions: %s" % completions)
vim.command("let g:pycomplete_completions = %s" % completions)
except:
vim.command("let g:pycomplete_completions = []")
#dbg(1,"exception: %s" % sys.exc_info()[1])
clean_up()
def get_arguments(func_obj):
def _ctor(obj):
try:
return class_ob.__init__.im_func
except AttributeError:
for base in class_ob.__bases__:
rc = _find_constructor(base)
if rc is not None: return rc
return None
arg_offset = 1
if type(func_obj) == types.ClassType: func_obj = _ctor(func_obj)
elif type(func_obj) == types.MethodType: func_obj = func_obj.im_func
else: arg_offset = 0
#dbg(20,"%s, offset=%s" % (str(func_obj), arg_offset))
arg_text = ''
if type(func_obj) in [types.FunctionType, types.LambdaType]:
try:
cd = func_obj.func_code
real_args = cd.co_varnames[arg_offset:cd.co_argcount]
defaults = func_obj.func_defaults or []
defaults = list(map(lambda name: "=%s" % name, defaults))
defaults = [""] * (len(real_args)-len(defaults)) + defaults
items = map(lambda a,d: a+d, real_args, defaults)
if func_obj.func_code.co_flags & 0x4:
items.append("...")
if func_obj.func_code.co_flags & 0x8:
items.append("***")
arg_text = ", ".join(items) + ')'
except:
#dbg(1,"exception: %s" % sys.exc_info()[1])
pass
if len(arg_text) == 0:
# The doc string sometimes contains the function signature
# this works for alot of C modules that are part of the
# standard library
doc = getattr(func_obj, '__doc__', '')
if doc:
doc = doc.lstrip()
pos = doc.find('\n')
if pos > 0:
sigline = doc[:pos]
lidx = sigline.find('(')
ridx = sigline.find(')')
retidx = sigline.find('->')
ret = sigline[retidx+2:].strip()
if lidx > 0 and ridx > 0:
arg_text = sigline[lidx+1:ridx] + ')'
if len(ret) > 0: arg_text += ' #returns %s' % ret
#dbg(15,"argument completion: %s" % arg_text)
return arg_text
def parse_to_end(gen):
stmt=''
level = 0
for type, str, begin, end, line in gen:
if line == vim.eval('getline(\'.\')'): break
elif str == '\\': continue
elif str == ';':
break
elif type == tokenize.NEWLINE and level == 0:
break
elif str in ['[','(']:
level += 1
elif str in [')',']']:
level -= 1
elif level == 0:
stmt += str
#dbg(10,"current statement: %s" % stmt)
return stmt
def parse_block(gen):
lines = []
level = 0
for type, str, begin, end, line in gen:
if line.replace('\n','') == vim.eval('getline(\'.\')'): break
elif type == tokenize.INDENT:
level += 1
elif type == tokenize.DEDENT:
level -= 1
if level == 0: break;
else:
stmt = parse_statement(gen,str)
if len(stmt) > 0: lines.append(stmt)
return lines
def parse_statement(gen,curstr=''):
var = curstr
type, str, begin, end, line = gen.next()
if str == '=':
type, str, begin, end, line = gen.next()
if type == tokenize.NEWLINE:
return ''
elif type == tokenize.STRING or str == 'str':
return '%s = str' % var
elif str == '[' or str == 'list':
return '%s= list' % var
elif str == '{' or str == 'dict':
return '%s = dict' % var
elif type == tokenize.NUMBER:
return '%s = 0' % var
elif str == 'Set':
return '%s = Set' % var
elif str == 'open' or str == 'file':
return '%s = file' % var
else:
inst = str + parse_to_end(gen)
if len(inst) > 0:
#dbg(5,"found [%s = %s]" % (var, inst))
return '%s = %s' % (var, inst)
return ''
def eval_source_code():
LINE=vim.eval('getline(\'.\')')
s = cStringIO.StringIO('\n'.join(vim.current.buffer[:]) + '\n')
g = tokenize.generate_tokens(s.readline)
stmts = []
lineNo = 0
try:
for type, str, begin, end, line in g:
if line.replace('\n','') == vim.eval('getline(\'.\')'): break
elif begin[0] == lineNo: continue
#junk
elif type == tokenize.INDENT or \
type == tokenize.DEDENT or \
type == tokenize.ERRORTOKEN or \
type == tokenize.ENDMARKER or \
type == tokenize.NEWLINE or \
type == tokenize.COMMENT:
continue
#import statement
elif str == 'import':
import_stmt=parse_to_end(g)
if len(import_stmt) > 0:
#dbg(5,"found [import %s]" % import_stmt)
stmts.append("import %s" % import_stmt)
#import from statement
elif str == 'from':
type, str, begin, end, line = g.next()
mod = str
type, str, begin, end, line = g.next()
if str != "import": break
from_stmt=parse_to_end(g)
if len(from_stmt) > 0:
#dbg(5,"found [from %s import %s]" % (mod, from_stmt))
stmts.append("from %s import %s" % (mod, from_stmt))
#def statement
elif str == 'def':
funcstr = ''
for type, str, begin, end, line in g:
if line.replace('\n','') == vim.eval('getline(\'.\')'): break
elif str == ':':
stmts += parse_block(g)
break
funcstr += str
if len(funcstr) > 0:
#dbg(5,"found [def %s]" % funcstr)
stmts.append("def %s:\n pass" % funcstr)
#class declaration
elif str == 'class':
type, str, begin, end, line = g.next()
classname = str
#dbg(5,"found [class %s]" % classname)
level = 0
members = []
for type, str, begin, end, line in g:
if line.replace('\n','') == vim.eval('getline(\'.\')'): break
elif type == tokenize.INDENT:
level += 1
elif type == tokenize.DEDENT:
level -= 1
if level == 0: break;
elif str == 'def':
memberstr = ''
for type, str, begin, end, line in g:
if line.replace('\n','') == vim.eval('getline(\'.\')'): break
elif str == ':':
stmts += parse_block(g)
break
memberstr += str
#dbg(5," member [%s]" % memberstr)
members.append(memberstr)
classstr = 'class %s:' % classname
for m in members:
classstr += ("\n def %s:\n pass" % m)
stmts.append("%s\n" % classstr)
elif keyword.iskeyword(str) or str in globals():
#dbg(5,"keyword = %s" % str)
lineNo = begin[0]
else:
assign = parse_statement(g,str)
if len(assign) > 0: stmts.append(assign)
for s in stmts:
try:
#dbg(15,"evaluating: %s\n" % s)
exec(s) in globals()
except:
#dbg(1,"exception: %s" % sys.exc_info()[1])
pass
except:
#dbg(1,"exception: %s" % sys.exc_info()[1])
pass
def clean_up():
for o in globals().keys():
if o not in LOCALDEFS:
try:
exec('del %s' % o) in globals()
except: pass
sys.path.extend(['.','..'])
PYTHONEOF
endfunction
let g:pycomplete_debug_level = 0
call s:DefPython()
" vim: set et ts=4:

View File

@ -0,0 +1,111 @@
" Vim script to download a missing spell file
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2006 Feb 01
if !exists('g:spellfile_URL')
let g:spellfile_URL = 'ftp://ftp.vim.org/pub/vim/unstable/runtime/spell'
endif
let s:spellfile_URL = '' " Start with nothing so that s:donedict is reset.
" This function is used for the spellfile plugin.
function! spellfile#LoadFile(lang)
" If the netrw plugin isn't loaded we silently skip everything.
if !exists(":Nread")
if &verbose
echomsg 'spellfile#LoadFile(): Nread command is not available.'
endif
return
endif
" If the URL changes we try all files again.
if s:spellfile_URL != g:spellfile_URL
let s:donedict = {}
let s:spellfile_URL = g:spellfile_URL
endif
" I will say this only once!
if has_key(s:donedict, a:lang . &enc)
if &verbose
echomsg 'spellfile#LoadFile(): Tried this language/encoding before.'
endif
return
endif
let s:donedict[a:lang . &enc] = 1
" Find spell directories we can write in.
let dirlist = []
let dirchoices = '&Cancel'
for dir in split(globpath(&rtp, 'spell'), "\n")
if filewritable(dir) == 2
call add(dirlist, dir)
let dirchoices .= "\n&" . len(dirlist)
endif
endfor
if len(dirlist) == 0
if &verbose
echomsg 'spellfile#LoadFile(): There is no writable spell directory.'
endif
return
endif
let msg = 'Cannot find spell file for "' . a:lang . '" in ' . &enc
let msg .= "\nDo you want me to try downloading it?"
if confirm(msg, "&Yes\n&No", 2) == 1
let enc = &encoding
if enc == 'iso-8859-15'
let enc = 'latin1'
endif
let fname = a:lang . '.' . enc . '.spl'
" Split the window, read the file into a new buffer.
new
setlocal bin
echo 'Downloading ' . fname . '...'
exe 'Nread ' g:spellfile_URL . '/' . fname
if getline(2) !~ 'VIMspell'
" Didn't work, perhaps there is an ASCII one.
g/^/d
let fname = a:lang . '.ascii.spl'
echo 'Could not find it, trying ' . fname . '...'
exe 'Nread ' g:spellfile_URL . '/' . fname
if getline(2) !~ 'VIMspell'
echo 'Sorry, downloading failed'
bwipe!
return
endif
endif
" Delete the empty first line and mark the file unmodified.
1d
set nomod
let msg = "In which directory do you want to write the file:"
for i in range(len(dirlist))
let msg .= "\n" . (i + 1) . '. ' . dirlist[i]
endfor
let dirchoice = confirm(msg, dirchoices) - 2
if dirchoice >= 0
exe "write " . escape(dirlist[dirchoice], ' ') . '/' . fname
" Also download the .sug file, if the user wants to.
let msg = "Do you want me to try getting the .sug file?\n"
let msg .= "This will improve making suggestions for spelling mistakes,\n"
let msg .= "but it uses quite a bit of memory."
if confirm(msg, "&No\n&Yes") == 2
g/^/d
let fname = substitute(fname, '\.spl$', '.sug', '')
echo 'Downloading ' . fname . '...'
exe 'Nread ' g:spellfile_URL . '/' . fname
if getline(2) !~ 'VIMsug'
echo 'Sorry, downloading failed'
else
1d
exe "write " . escape(dirlist[dirchoice], ' ') . '/' . fname
endif
set nomod
endif
endif
bwipe
endif
endfunc

View File

@ -0,0 +1,179 @@
" Vim completion script
" Language: All languages, uses existing syntax highlighting rules
" Maintainer: David Fishburn <fishburn@ianywhere.com>
" Version: 1.0
" Last Change: Sun Jan 08 2006 10:17:51 PM
" Set completion with CTRL-X CTRL-O to autoloaded function.
if exists('&ofu')
setlocal ofu=syntaxcomplete#Complete
endif
if exists('g:loaded_syntax_completion')
finish
endif
let g:loaded_syntax_completion = 1
" This script will build a completion list based on the syntax
" elements defined by the files in $VIMRUNTIME/syntax.
let s:syn_remove_words = 'match,matchgroup=,contains,'.
\ 'links to,start=,end=,nextgroup='
let s:cache_name = []
let s:cache_list = []
" This function is used for the 'omnifunc' option.
function! syntaxcomplete#Complete(findstart, base)
if a:findstart
" Locate the start of the item, including "."
let line = getline('.')
let start = col('.') - 1
let lastword = -1
while start > 0
if line[start - 1] =~ '\w'
let start -= 1
elseif line[start - 1] =~ '\.'
" The user must be specifying a column name
if lastword == -1
let lastword = start
endif
let start -= 1
let b:sql_compl_type = 'column'
else
break
endif
endwhile
" Return the column of the last word, which is going to be changed.
" Remember the text that comes before it in s:prepended.
if lastword == -1
let s:prepended = ''
return start
endif
let s:prepended = strpart(line, start, lastword - start)
return lastword
endif
let base = s:prepended . a:base
let list_idx = index(s:cache_name, &filetype, 0, &ignorecase)
if list_idx > -1
let compl_list = s:cache_list[list_idx]
else
let compl_list = s:SyntaxList()
let s:cache_name = add( s:cache_name, &filetype )
let s:cache_list = add( s:cache_list, compl_list )
endif
" Return list of matches.
if base =~ '\w'
let compstr = join(compl_list, ' ')
let compstr = substitute(compstr, '\<\%('.base.'\)\@!\w\+\s*', '', 'g')
let compl_list = split(compstr, '\s\+')
endif
return compl_list
endfunc
function! s:SyntaxList()
let saveL = @l
" Loop through all the syntax groupnames, and build a
" syntax file which contains these names. This can
" work generically for any filetype that does not already
" have a plugin defined.
" This ASSUMES the syntax groupname BEGINS with the name
" of the filetype. From my casual viewing of the vim7\sytax
" directory.
redir @l
silent! exec 'syntax list '
redir END
let syntax_groups = @l
let @l = saveL
if syntax_groups =~ 'E28'
\ || syntax_groups =~ 'E411'
\ || syntax_groups =~ 'E415'
\ || syntax_groups =~ 'No sytax items'
return -1
endif
" Abort names - match, links to, matchgroup=, start=, contains=, contained,
" cluster=, nextgroup=, end=
let next_group_regex = '\n' .
\ '\zs'.&filetype.'\w\+\ze'.
\ '\s\+xxx\s\+'.
\ '\<\('.
\ substitute(s:syn_remove_words, ',', '\\|', 'g').
\ '\)\@!'
let syn_list = ''
let index = 0
let index = match(syntax_groups, next_group_regex, index)
while index > 0
let group_name = matchstr( syntax_groups, '\w\+', index )
let extra_syn_list = s:SyntaxGroupItems(group_name)
let syn_list = syn_list . extra_syn_list . "\n"
let index = index + strlen(group_name)
let index = match(syntax_groups, next_group_regex, index)
endwhile
return sort(split(syn_list))
endfunction
function! s:SyntaxGroupItems( group_name )
let saveL = @l
" Generate (based on the syntax highlight rules) a list of
" the Statements, functions, keywords and so on available
" If this needs updating, the syntax\sql.vim file should be
" updated
redir @l
silent! exec 'syntax list ' . a:group_name
redir END
if @l !~ 'E28'
" let syn_list = substitute( @l, '^.*xxx\s*\%(contained\s*\)\?', "", '' )
let syn_list = substitute( @l, '^.*xxx\s*', "", '' )
" We only want the words for the lines begining with
" containedin, but there could be other items.
" Tried to remove all lines that do not begin with contained
" but this does not work in all cases since you can have
" contained nextgroup=...
" So this will strip off the ending of lines with known
" keywords.
let syn_list = substitute( syn_list, '\<\('.
\ substitute(
\ escape( s:syn_remove_words, '\\/.*$^~[]')
\ , ',', '\\|', 'g').
\ '\).\{-}\%($\|'."\n".'\)'
\ , "\n", 'g' )
" Now strip off the newline + blank space + contained
let syn_list = substitute( syn_list, '\%(^\|\n\)\@<=\s*\<\('.
\ 'contained\)'
\ , "", 'g' )
" There are a number of items which have non-word characters in
" them, *'T_F1'*. vim.vim is one such file.
" This will replace non-word characters with spaces.
let syn_list = substitute( syn_list, '[^0-9A-Za-z_ ]', ' ', 'g' )
else
let syn_list = ''
endif
let @l = saveL
return syn_list
endfunction

333
runtime/autoload/tar.vim Normal file
View File

@ -0,0 +1,333 @@
" tar.vim: Handles browsing tarfiles
" AUTOLOAD PORTION
" Date: Dec 24, 2005
" Version: 7
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
" License: Vim License (see vim's :help license)
"
" Contains many ideas from Michael Toren's <tar.vim>
"
" Copyright: Copyright (C) 2005 Charles E. Campbell, Jr. {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
" tarPlugin.vim is provided *as is* and comes with no warranty
" of any kind, either expressed or implied. By using this
" plugin, you agree that in no event will the copyright
" holder be liable for any damages resulting from the use
" of this software.
" ---------------------------------------------------------------------
" Initialization: {{{1
let s:keepcpo= &cpo
set cpo&vim
if exists("g:loaded_tar")
finish
endif
let g:loaded_tar= "v7"
" ---------------------------------------------------------------------
" Default Settings: {{{1
if !exists("g:tar_browseoptions")
let g:tar_browseoptions= "Ptf"
endif
if !exists("g:tar_readoptions")
let g:tar_readoptions= "OPxf"
endif
if !exists("g:tar_writeoptions")
let g:tar_writeoptions= "uf"
endif
" ----------------
" Functions: {{{1
" ----------------
" ---------------------------------------------------------------------
" tar#Browse: {{{2
fun! tar#Browse(tarfile)
" call Dfunc("tar#Browse(tarfile<".a:tarfile.">)")
let repkeep= &report
set report=10
" sanity checks
if !executable("tar")
echohl Error | echo '***error*** (tar#Browse) "tar" not available on your system'
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let &report= repkeep
" call Dret("tar#Browse")
return
endif
if !filereadable(a:tarfile)
if a:tarfile !~# '^\a\+://'
" if its an url, don't complain, let url-handlers such as vim do its thing
echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
let &report= repkeep
" call Dret("tar#Browse : file<".a:tarfile."> not readable")
return
endif
if &ma != 1
set ma
endif
let w:tarfile= a:tarfile
setlocal noswapfile
setlocal buftype=nofile
setlocal bufhidden=hide
setlocal nobuflisted
setlocal nowrap
set ft=tar
" give header
exe "$put ='".'\"'." tar.vim version ".g:loaded_tar."'"
exe "$put ='".'\"'." Browsing tarfile ".a:tarfile."'"
exe "$put ='".'\"'." Select a file with cursor and press ENTER"."'"
0d
$
if a:tarfile =~# '\.\(gz\|tgz\)$'
exe "silent r! gzip -d -c '".a:tarfile."'| tar -".g:tar_browseoptions." - "
elseif a:tarfile =~# '\.bz2$'
exe "silent r! bzip2 -d -c '".a:tarfile."'| tar -".g:tar_browseoptions." - "
else
exe "silent r! tar -".g:tar_browseoptions." '".a:tarfile."'"
endif
silent %g@/$@d
setlocal noma nomod ro
noremap <silent> <buffer> <cr> :call <SID>TarBrowseSelect()<cr>
let &report= repkeep
" call Dret("tar#Browse : w:tarfile<".w:tarfile.">")
endfun
" ---------------------------------------------------------------------
" TarBrowseSelect: {{{2
fun! s:TarBrowseSelect()
" call Dfunc("TarBrowseSelect() w:tarfile<".w:tarfile."> curfile<".expand("%").">")
let repkeep= &report
set report=10
let fname= getline(".")
" call Decho("fname<".fname.">")
" sanity check
if fname =~ '^"'
let &report= repkeep
" call Dret("TarBrowseSelect")
return
endif
" about to make a new window, need to use w:tarfile
let tarfile= w:tarfile
let curfile= expand("%")
new
wincmd _
let s:tblfile_{winnr()}= curfile
" call Decho("exe e tarfile:".tarfile.':'.fname)
exe "e tarfile:".tarfile.':'.fname
filetype detect
let &report= repkeep
" call Dret("TarBrowseSelect : s:tblfile_".winnr()."<".s:tblfile_{winnr()}.">")
endfun
" ---------------------------------------------------------------------
" tar#Read: {{{2
fun! tar#Read(fname,mode)
" call Dfunc("tar#Read(fname<".a:fname.">,mode=".a:mode.")")
let repkeep= &report
set report=10
let tarfile = substitute(a:fname,'tarfile:\(.\{-}\):.*$','\1','')
let fname = substitute(a:fname,'tarfile:.\{-}:\(.*\)$','\1','')
" call Decho("tarfile<".tarfile."> fname<".fname.">")
if tarfile =~# '\.\(gz\|tgz\)$'
" call Decho("exe silent r! gzip -d -c '".tarfile."'| tar -OPxf - '".fname."'")
exe "silent r! gzip -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'"
elseif tarfile =~# '\.bz2$'
" call Decho("exe silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'")
exe "silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'"
else
" call Decho("exe silent r! tar -".g:tar_readoptions." '".tarfile."' '".fname."'")
exe "silent r! tar -".g:tar_readoptions." '".tarfile."' '".fname."'"
endif
let w:tarfile= a:fname
exe "file tarfile:".fname
" cleanup
0d
set nomod
let &report= repkeep
" call Dret("tar#Read : w:tarfile<".w:tarfile.">")
endfun
" ---------------------------------------------------------------------
" tar#Write: {{{2
fun! tar#Write(fname)
" call Dfunc("tar#Write(fname<".a:fname.">) w:tarfile<".w:tarfile."> tblfile_".winnr()."<".s:tblfile_{winnr()}.">")
let repkeep= &report
set report=10
" sanity checks
if !executable("tar")
echohl Error | echo '***error*** (tar#Browse) "tar" not available on your system'
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let &report= repkeep
" call Dret("tar#Write")
return
endif
if !exists("*mkdir")
echohl Error | echo "***error*** (tar#Write) sorry, mkdir() doesn't work on your system" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let &report= repkeep
" call Dret("tar#Write")
return
endif
let curdir= getcwd()
let tmpdir= tempname()
" call Decho("orig tempname<".tmpdir.">")
if tmpdir =~ '\.'
let tmpdir= substitute(tmpdir,'\.[^.]*$','','e')
endif
" call Decho("tmpdir<".tmpdir.">")
call mkdir(tmpdir,"p")
" attempt to change to the indicated directory
try
exe "cd ".escape(tmpdir,' \')
catch /^Vim\%((\a\+)\)\=:E344/
echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let &report= repkeep
" call Dret("tar#Write")
return
endtry
" call Decho("current directory now: ".getcwd())
" place temporary files under .../_ZIPVIM_/
if isdirectory("_ZIPVIM_")
call s:Rmdir("_ZIPVIM_")
endif
call mkdir("_ZIPVIM_")
cd _ZIPVIM_
" call Decho("current directory now: ".getcwd())
let tarfile = substitute(w:tarfile,'tarfile:\(.\{-}\):.*$','\1','')
let fname = substitute(w:tarfile,'tarfile:.\{-}:\(.*\)$','\1','')
" handle compressed archives
if tarfile =~# '\.gz'
call system("gzip -d ".tarfile)
let tarfile = substitute(tarfile,'\.gz','','e')
let compress= "gzip '".tarfile."'"
elseif tarfile =~# '\.tgz'
call system("gzip -d ".tarfile)
let tarfile = substitute(tarfile,'\.tgz','.tar','e')
let compress= "gzip '".tarfile."'"
let tgz = 1
elseif tarfile =~# '\.bz2'
call system("bzip2 -d ".tarfile)
let tarfile = substitute(tarfile,'\.bz2','','e')
let compress= "bzip2 '".tarfile."'"
endif
if v:shell_error != 0
echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
else
" call Decho("tarfile<".tarfile."> fname<".fname.">")
if fname =~ '/'
let dirpath = substitute(fname,'/[^/]\+$','','e')
if executable("cygpath")
let dirpath = substitute(system("cygpath ".dirpath),'\n','','e')
endif
call mkdir(dirpath,"p")
endif
if tarfile !~ '/'
let tarfile= curdir.'/'.tarfile
endif
" call Decho("tarfile<".tarfile."> fname<".fname.">")
exe "w! ".fname
if executable("cygpath")
let tarfile = substitute(system("cygpath ".tarfile),'\n','','e')
endif
" delete old file from tarfile
" call Decho("tar --delete -f '".tarfile."' '".fname."'")
call system("tar --delete -f '".tarfile."' '".fname."'")
if v:shell_error != 0
echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
else
" update tarfile with new file
" call Decho("tar -".g:tar_writeoptions." '".tarfile."' '".fname."'")
call system("tar -".g:tar_writeoptions." '".tarfile."' '".fname."'")
if v:shell_error != 0
echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
elseif exists("compress")
" call Decho("call system(".compress.")")
call system(compress)
if exists("tgz")
" call Decho("rename(".tarfile.".gz,".substitute(tarfile,'\.tar$','.tgz','e').")")
call rename(tarfile.".gz",substitute(tarfile,'\.tar$','.tgz','e'))
endif
endif
endif
" support writing tarfiles across a network
if s:tblfile_{winnr()} =~ '^\a\+://'
" call Decho("handle writing <".tarfile."> across network to <".s:tblfile_{winnr()}.">")
let tblfile= s:tblfile_{winnr()}
1split|enew
let binkeep= &binary
let eikeep = &ei
set binary ei=all
exe "e! ".tarfile
call netrw#NetWrite(tblfile)
let &ei = eikeep
let &binary = binkeep
q!
unlet s:tblfile_{winnr()}
endif
endif
" cleanup and restore current directory
cd ..
call s:Rmdir("_ZIPVIM_")
exe "cd ".escape(curdir,' \')
setlocal nomod
let &report= repkeep
" call Dret("tar#Write")
endfun
" ---------------------------------------------------------------------
" Rmdir: {{{2
fun! s:Rmdir(fname)
" call Dfunc("Rmdir(fname<".a:fname.">)")
if has("unix")
call system("/bin/rm -rf ".a:fname)
elseif has("win32") || has("win95") || has("win64") || has("win16")
if &shell =~? "sh$"
call system("/bin/rm -rf ".a:fname)
else
call system("del /S ".a:fname)
endif
endif
" call Dret("Rmdir")
endfun
" ------------------------------------------------------------------------
" Modelines And Restoration: {{{1
let &cpo= s:keepcpo
unlet s:keepcpo
" vim:ts=8 fdm=marker

View File

@ -0,0 +1,502 @@
" Vim completion script
" Language: XML
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" Last Change: 2006 Feb 18
" This function will create Dictionary with users namespace strings and values
" canonical (system) names of data files. Names should be lowercase,
" descriptive to avoid any future conflicts. For example 'xhtml10s' should be
" name for data of XHTML 1.0 Strict and 'xhtml10t' for XHTML 1.0 Transitional
" User interface will be provided by XMLns command defined ...
" Currently supported canonicals are:
" xhtml10s - XHTML 1.0 Strict
" xsl - XSL
function! xmlcomplete#CreateConnection(canonical, ...)
" When only one argument provided treat name as default namespace (without
" 'prefix:').
if exists("a:1")
let users = a:1
else
let users = 'DEFAULT'
endif
" Source data file. Due to suspected errors in autoload do it with
" :runtime.
" TODO: make it properly (using autoload, that is) later
exe "runtime autoload/xml/".a:canonical.".vim"
" Remove all traces of unexisting files to return [] when trying
" omnicomplete something
" TODO: give warning about non-existing canonicals - should it be?
if !exists("g:xmldata_".a:canonical)
unlet! g:xmldata_connection
return 0
endif
" We need to initialize Dictionary to add key-value pair
if !exists("g:xmldata_connection")
let g:xmldata_connection = {}
endif
let g:xmldata_connection[users] = a:canonical
endfunction
function! xmlcomplete#CreateEntConnection(...)
if a:0 > 0
let g:xmldata_entconnect = a:1
else
let g:xmldata_entconnect = 'DEFAULT'
endif
endfunction
function! xmlcomplete#CompleteTags(findstart, base)
if a:findstart
" locate the start of the word
let curline = line('.')
let line = getline('.')
let start = col('.') - 1
let compl_begin = col('.') - 2
while start >= 0 && line[start - 1] =~ '\(\k\|[:.-]\)'
let start -= 1
endwhile
if start >= 0 && line[start - 1] =~ '&'
let b:entitiescompl = 1
let b:compl_context = ''
return start
endif
let b:compl_context = getline('.')[0:(compl_begin)]
if b:compl_context !~ '<[^>]*$'
" Look like we may have broken tag. Check previous lines. Up to
" 10?
let i = 1
while 1
let context_line = getline(curline-i)
if context_line =~ '<[^>]*$'
" Yep, this is this line
let context_lines = getline(curline-i, curline)
let b:compl_context = join(context_lines, ' ')
break
elseif context_line =~ '>[^<]*$'
" Normal tag line, no need for completion at all
let b:compl_context = ''
break
endif
let i += 1
endwhile
" Make sure we don't have counter
unlet! i
endif
let b:compl_context = matchstr(b:compl_context, '.*\zs<.*')
" Make sure we will have only current namespace
unlet! b:xml_namespace
let b:xml_namespace = matchstr(b:compl_context, '^<\zs\k*\ze:')
if b:xml_namespace == ''
let b:xml_namespace = 'DEFAULT'
endif
return start
else
" There is no connction of namespace and data file. Abandon action
if !exists("g:xmldata_connection") || g:xmldata_connection == {}
return []
endif
" Initialize base return lists
let res = []
let res2 = []
" a:base is very short - we need context
if len(b:compl_context) == 0 && !exists("b:entitiescompl")
return []
endif
let context = matchstr(b:compl_context, '^<\zs.*')
unlet! b:compl_context
" Make entities completion
if exists("b:entitiescompl")
unlet! b:entitiescompl
if !exists("g:xmldata_entconnect") || g:xmldata_entconnect == 'DEFAULT'
let values = g:xmldata{'_'.g:xmldata_connection['DEFAULT']}['vimxmlentities']
else
let values = g:xmldata{'_'.g:xmldata_entconnect}['vimxmlentities']
endif
" Get only lines with entity declarations but throw out
" parameter-entities - they may be completed in future
let entdecl = filter(getline(1, "$"), 'v:val =~ "<!ENTITY\\s\\+[^%]"')
if len(entdecl) > 0
let intent = map(copy(entdecl), 'matchstr(v:val, "<!ENTITY\\s\\+\\zs\\(\\k\\|[.-:]\\)\\+\\ze")')
let values = intent + values
endif
if len(a:base) == 1
for m in values
if m =~ '^'.a:base
call add(res, m.';')
endif
endfor
return res
else
for m in values
if m =~? '^'.a:base
call add(res, m.';')
elseif m =~? a:base
call add(res2, m.';')
endif
endfor
return res + res2
endif
endif
if context =~ '>'
" Generally if context contains > it means we are outside of tag and
" should abandon action
return []
endif
" find tags matching with "a:base"
" If a:base contains white space it is attribute.
" It could be also value of attribute...
" We have to get first word to offer
" proper completions
if context == ''
let tag = ''
else
let tag = split(context)[0]
endif
" Get rid of namespace
let tag = substitute(tag, '^'.b:xml_namespace.':', '', '')
" Get last word, it should be attr name
let attr = matchstr(context, '.*\s\zs.*')
" Possible situations where any prediction would be difficult:
" 1. Events attributes
if context =~ '\s'
" If attr contains =\s*[\"'] we catched value of attribute
if attr =~ "=\s*[\"']"
" Let do attribute specific completion
let attrname = matchstr(attr, '.*\ze\s*=')
let entered_value = matchstr(attr, ".*=\\s*[\"']\\zs.*")
if tag =~ '^[?!]'
" Return nothing if we are inside of ! or ? tag
return []
else
let values = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][attrname]
endif
if len(values) == 0
return []
endif
" We need special version of sbase
let attrbase = matchstr(context, ".*[\"']")
let attrquote = matchstr(attrbase, '.$')
for m in values
" This if is needed to not offer all completions as-is
" alphabetically but sort them. Those beginning with entered
" part will be as first choices
if m =~ '^'.entered_value
call add(res, m . attrquote.' ')
elseif m =~ entered_value
call add(res2, m . attrquote.' ')
endif
endfor
return res + res2
endif
if tag =~ '?xml'
" Two possible arguments for <?xml> plus variation
let attrs = ['encoding', 'version="1.0"', 'version']
elseif tag =~ '^!'
" Don't make completion at all
return []
else
let attrs = keys(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1])
endif
for m in sort(attrs)
if m =~ '^'.attr
call add(res, m)
elseif m =~ attr
call add(res2, m)
endif
endfor
let menu = res + res2
let final_menu = []
if has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}, 'vimxmlattrinfo')
for i in range(len(menu))
let item = menu[i]
if has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmlattrinfo'], item)
let m_menu = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmlattrinfo'][item][0]
let m_info = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmlattrinfo'][item][1]
else
let m_menu = ''
let m_info = ''
endif
if tag !~ '^[?!]' && len(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][item]) > 0 && g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][item][0] =~ '^\(BOOL\|'.item.'\)$'
let item = item
else
let item .= '="'
endif
let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]
endfor
else
for i in range(len(menu))
let item = menu[i]
if tag !~ '^[?!]' && len(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][item]) > 0 && g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][item][0] =~ '^\(BOOL\|'.item.'\)$'
let item = item
else
let item .= '="'
endif
let final_menu += [item]
endfor
endif
return final_menu
endif
" Close tag
let b:unaryTagsStack = "base meta link hr br param img area input col"
if context =~ '^\/'
let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
return [opentag.">"]
endif
" Complete elements of XML structure
" TODO: #REQUIRED, #IMPLIED, #FIXED, #PCDATA - but these should be detected like
" entities - in first run
" keywords: CDATA, ID, IDREF, IDREFS, ENTITY, ENTITIES, NMTOKEN, NMTOKENS
" are hardly recognizable but keep it in reserve
" also: EMPTY ANY SYSTEM PUBLIC DATA
if context =~ '^!'
let tags = ['!ELEMENT', '!DOCTYPE', '!ATTLIST', '!ENTITY', '!NOTATION', '![CDATA[', '![INCLUDE[', '![IGNORE[']
for m in tags
if m =~ '^'.context
let m = substitute(m, '^!\[\?', '', '')
call add(res, m)
elseif m =~ context
let m = substitute(m, '^!\[\?', '', '')
call add(res2, m)
endif
endfor
return res + res2
endif
" Complete text declaration
let g:co = context
if context =~ '^?'
let tags = ['?xml']
for m in tags
if m =~ '^'.context
call add(res, substitute(m, '^?', '', ''))
elseif m =~ context
call add(res, substitute(m, '^?', '', ''))
endif
endfor
return res + res2
endif
" Deal with tag completion.
let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
let opentag = substitute(opentag, '^\k*:', '', '')
if opentag == ''
"return []
let tags = keys(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]})
call filter(tags, 'v:val !~ "^vimxml"')
else
let tags = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[opentag][0]
endif
let context = substitute(context, '^\k*:', '', '')
for m in tags
if m =~ '^'.context
call add(res, m)
elseif m =~ context
call add(res2, m)
endif
endfor
let menu = res + res2
if has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}, 'vimxmltaginfo')
let final_menu = []
for i in range(len(menu))
let item = menu[i]
if has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmltaginfo'], item)
let m_menu = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmltaginfo'][item][0]
let m_info = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmltaginfo'][item][1]
else
let m_menu = ''
let m_info = ''
endif
if b:xml_namespace == 'DEFAULT'
let xml_namespace = ''
else
let xml_namespace = b:xml_namespace.':'
endif
let final_menu += [{'word':xml_namespace.item, 'menu':m_menu, 'info':m_info}]
endfor
else
let final_menu = menu
endif
return final_menu
endif
endfunction
" MM: This is greatly reduced closetag.vim used with kind permission of Steven
" Mueller
" Changes: strip all comments; delete error messages; add checking for
" namespace
" Author: Steven Mueller <diffusor@ugcs.caltech.edu>
" Last Modified: Tue May 24 13:29:48 PDT 2005
" Version: 0.9.1
function! xmlcomplete#GetLastOpenTag(unaryTagsStack)
let linenum=line('.')
let lineend=col('.') - 1 " start: cursor position
let first=1 " flag for first line searched
let b:TagStack='' " main stack of tags
let startInComment=s:InComment()
if exists("b:xml_namespace")
if b:xml_namespace == 'DEFAULT'
let tagpat='</\=\(\k\|[.-]\)\+\|/>'
else
let tagpat='</\='.b:xml_namespace.':\(\k\|[.-]\)\+\|/>'
endif
else
let tagpat='</\=\(\k\|[.-]\)\+\|/>'
endif
while (linenum>0)
let line=getline(linenum)
if first
let line=strpart(line,0,lineend)
else
let lineend=strlen(line)
endif
let b:lineTagStack=''
let mpos=0
let b:TagCol=0
while (mpos > -1)
let mpos=matchend(line,tagpat)
if mpos > -1
let b:TagCol=b:TagCol+mpos
let tag=matchstr(line,tagpat)
if exists('b:closetag_disable_synID') || startInComment==s:InCommentAt(linenum, b:TagCol)
let b:TagLine=linenum
call s:Push(matchstr(tag,'[^<>]\+'),'b:lineTagStack')
endif
let lineend=lineend-mpos
let line=strpart(line,mpos,lineend)
endif
endwhile
while (!s:EmptystackP('b:lineTagStack'))
let tag=s:Pop('b:lineTagStack')
if match(tag, '^/') == 0 "found end tag
call s:Push(tag,'b:TagStack')
elseif s:EmptystackP('b:TagStack') && !s:Instack(tag, a:unaryTagsStack) "found unclosed tag
return tag
else
let endtag=s:Peekstack('b:TagStack')
if endtag == '/'.tag || endtag == '/'
call s:Pop('b:TagStack') "found a open/close tag pair
elseif !s:Instack(tag, a:unaryTagsStack) "we have a mismatch error
return ''
endif
endif
endwhile
let linenum=linenum-1 | let first=0
endwhile
return ''
endfunction
function! s:InComment()
return synIDattr(synID(line('.'), col('.'), 0), 'name') =~ 'Comment\|String'
endfunction
function! s:InCommentAt(line, col)
return synIDattr(synID(a:line, a:col, 0), 'name') =~ 'Comment\|String'
endfunction
function! s:SetKeywords()
let g:IsKeywordBak=&iskeyword
let &iskeyword='33-255'
endfunction
function! s:RestoreKeywords()
let &iskeyword=g:IsKeywordBak
endfunction
function! s:Push(el, sname)
if !s:EmptystackP(a:sname)
exe 'let '.a:sname."=a:el.' '.".a:sname
else
exe 'let '.a:sname.'=a:el'
endif
endfunction
function! s:EmptystackP(sname)
exe 'let stack='.a:sname
if match(stack,'^ *$') == 0
return 1
else
return 0
endif
endfunction
function! s:Instack(el, sname)
exe 'let stack='.a:sname
call s:SetKeywords()
let m=match(stack, '\<'.a:el.'\>')
call s:RestoreKeywords()
if m < 0
return 0
else
return 1
endif
endfunction
function! s:Peekstack(sname)
call s:SetKeywords()
exe 'let stack='.a:sname
let top=matchstr(stack, '\<.\{-1,}\>')
call s:RestoreKeywords()
return top
endfunction
function! s:Pop(sname)
if s:EmptystackP(a:sname)
return ''
endif
exe 'let stack='.a:sname
call s:SetKeywords()
let loc=matchend(stack,'\<.\{-1,}\>')
exe 'let '.a:sname.'=strpart(stack, loc+1, strlen(stack))'
let top=strpart(stack, match(stack, '\<'), loc)
call s:RestoreKeywords()
return top
endfunction
function! s:Clearstack(sname)
exe 'let '.a:sname."=''"
endfunction

271
runtime/autoload/zip.vim Normal file
View File

@ -0,0 +1,271 @@
" zip.vim: Handles browsing zipfiles
" AUTOLOAD PORTION
" Date: Dec 21, 2005
" Version: 6
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
" License: Vim License (see vim's :help license)
" Copyright: Copyright (C) 2005 Charles E. Campbell, Jr. {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
" zipPlugin.vim is provided *as is* and comes with no warranty
" of any kind, either expressed or implied. By using this
" plugin, you agree that in no event will the copyright
" holder be liable for any damages resulting from the use
" of this software.
" ---------------------------------------------------------------------
" Initialization: {{{1
let s:keepcpo= &cpo
set cpo&vim
if exists("g:loaded_zip")
finish
endif
let g:loaded_zip= "v6"
" ----------------
" Functions: {{{1
" ----------------
" ---------------------------------------------------------------------
" zip#Browse: {{{2
fun! zip#Browse(zipfile)
" call Dfunc("zip#Browse(zipfile<".a:zipfile.">)")
let repkeep= &report
set report=10
" sanity checks
if !executable("unzip")
echohl Error | echo "***error*** (zip#Browse) unzip not available on your system"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let &report= repkeep
" call Dret("zip#Browse")
return
endif
if !filereadable(a:zipfile)
if a:zipfile !~# '^\a\+://'
" if its an url, don't complain, let url-handlers such as vim do its thing
echohl Error | echo "***error*** (zip#Browse) File not readable<".a:zipfile.">" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
let &report= repkeep
" call Dret("zip#Browse : file<".a:zipfile."> not readable")
return
endif
if &ma != 1
set ma
endif
let w:zipfile= a:zipfile
setlocal noswapfile
setlocal buftype=nofile
setlocal bufhidden=hide
setlocal nobuflisted
setlocal nowrap
set ft=tar
" give header
exe "$put ='".'\"'." zip.vim version ".g:loaded_zip."'"
exe "$put ='".'\"'." Browsing zipfile ".a:zipfile."'"
exe "$put ='".'\"'." Select a file with cursor and press ENTER"."'"
$put =''
0d
$
exe "silent r! unzip -l ".a:zipfile
$d
silent 4,$v/^\s\+\d\+\s\{0,5}\d/d
silent 4,$s/^\%(.*\)\s\+\(\S\)/\1/
setlocal noma nomod ro
noremap <silent> <buffer> <cr> :call <SID>ZipBrowseSelect()<cr>
let &report= repkeep
" call Dret("zip#Browse")
endfun
" ---------------------------------------------------------------------
" ZipBrowseSelect: {{{2
fun! s:ZipBrowseSelect()
" call Dfunc("ZipBrowseSelect() zipfile<".w:zipfile."> curfile<".expand("%").">")
let repkeep= &report
set report=10
let fname= getline(".")
" sanity check
if fname =~ '^"'
let &report= repkeep
" call Dret("ZipBrowseSelect")
return
endif
if fname =~ '/$'
echohl Error | echo "***error*** (zip#Browse) Please specify a file, not a directory" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let &report= repkeep
" call Dret("ZipBrowseSelect")
return
endif
" call Decho("fname<".fname.">")
" get zipfile to the new-window
let zipfile= substitute(w:zipfile,'.zip$','','e')
let curfile= expand("%")
new
wincmd _
let s:zipfile_{winnr()}= curfile
exe "e zipfile:".zipfile.':'.fname
filetype detect
let &report= repkeep
" call Dret("ZipBrowseSelect : s:zipfile_".winnr()."<".s:zipfile_{winnr()}.">")
endfun
" ---------------------------------------------------------------------
" zip#Read: {{{2
fun! zip#Read(fname,mode)
" call Dfunc("zip#Read(fname<".a:fname.">,mode=".a:mode.")")
let repkeep= &report
set report=10
let zipfile = substitute(a:fname,'zipfile:\(.\{-}\):.*$','\1','')
let fname = substitute(a:fname,'zipfile:.\{-}:\(.*\)$','\1','')
" call Decho("zipfile<".zipfile."> fname<".fname.">")
exe "r! unzip -p ".zipfile." ".fname
" cleanup
0d
set nomod
let &report= repkeep
" call Dret("zip#Read")
endfun
" ---------------------------------------------------------------------
" zip#Write: {{{2
fun! zip#Write(fname)
" call Dfunc("zip#Write(fname<".a:fname.") zipfile_".winnr()."<".s:zipfile_{winnr()}.">")
let repkeep= &report
set report=10
" sanity checks
if !executable("zip")
echohl Error | echo "***error*** (zip#Write) sorry, your system doesn't appear to have the zip pgm" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let &report= repkeep
" call Dret("zip#Write")
return
endif
if !exists("*mkdir")
echohl Error | echo "***error*** (zip#Write) sorry, mkdir() doesn't work on your system" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let &report= repkeep
" call Dret("zip#Write")
return
endif
let curdir= getcwd()
let tmpdir= tempname()
" call Decho("orig tempname<".tmpdir.">")
if tmpdir =~ '\.'
let tmpdir= substitute(tmpdir,'\.[^.]*$','','e')
endif
" call Decho("tmpdir<".tmpdir.">")
call mkdir(tmpdir,"p")
" attempt to change to the indicated directory
try
exe "cd ".escape(tmpdir,' \')
catch /^Vim\%((\a\+)\)\=:E344/
echohl Error | echo "***error*** (zip#Write) cannot cd to temporary directory" | Echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let &report= repkeep
" call Dret("zip#Write")
return
endtry
" call Decho("current directory now: ".getcwd())
" place temporary files under .../_ZIPVIM_/
if isdirectory("_ZIPVIM_")
call s:Rmdir("_ZIPVIM_")
endif
call mkdir("_ZIPVIM_")
cd _ZIPVIM_
" call Decho("current directory now: ".getcwd())
let zipfile = substitute(a:fname,'zipfile:\(.\{-}\):.*$','\1','')
let fname = substitute(a:fname,'zipfile:.\{-}:\(.*\)$','\1','')
if fname =~ '/'
let dirpath = substitute(fname,'/[^/]\+$','','e')
if executable("cygpath")
let dirpath = substitute(system("cygpath ".dirpath),'\n','','e')
endif
call mkdir(dirpath,"p")
endif
if zipfile !~ '/'
let zipfile= curdir.'/'.zipfile
endif
" call Decho("zipfile<".zipfile."> fname<".fname.">")
exe "w! ".fname
if executable("cygpath")
let zipfile = substitute(system("cygpath ".zipfile),'\n','','e')
endif
" call Decho("zip -u ".zipfile.".zip ".fname)
call system("zip -u ".zipfile.".zip ".fname)
if v:shell_error != 0
echohl Error | echo "***error*** (zip#Write) sorry, unable to update ".zipfile." with ".fname | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
elseif s:zipfile_{winnr()} =~ '^\a\+://'
" support writing zipfiles across a network
let netzipfile= s:zipfile_{winnr()}
" call Decho("handle writing <".zipfile.".zip> across network as <".netzipfile.">")
1split|enew
let binkeep= &binary
let eikeep = &ei
set binary ei=all
exe "e! ".zipfile.".zip"
call netrw#NetWrite(netzipfile)
let &ei = eikeep
let &binary = binkeep
q!
unlet s:zipfile_{winnr()}
endif
" cleanup and restore current directory
cd ..
call s:Rmdir("_ZIPVIM_")
exe "cd ".escape(curdir,' \')
setlocal nomod
let &report= repkeep
" call Dret("zip#Write")
endfun
" ---------------------------------------------------------------------
" Rmdir: {{{2
fun! s:Rmdir(fname)
" call Dfunc("Rmdir(fname<".a:fname.">)")
if has("unix")
call system("/bin/rm -rf ".a:fname)
elseif has("win32") || has("win95") || has("win64") || has("win16")
if &shell =~? "sh$"
call system("/bin/rm -rf ".a:fname)
else
call system("del /S ".a:fname)
endif
endif
" call Dret("Rmdir")
endfun
" ------------------------------------------------------------------------
" Modelines And Restoration: {{{1
let &cpo= s:keepcpo
unlet s:keepcpo
" vim:ts=8 fdm=marker

View File

@ -2,7 +2,7 @@
:" information about the environment of a possible bug in Vim.
:"
:" Maintainer: Bram Moolenaar <Bram@vim.org>
:" Last change: 2001 Feb 02
:" Last change: 2005 Jun 12
:"
:" To use inside Vim:
:" :so $VIMRUNTIME/bugreport.vim
@ -49,6 +49,8 @@
: call <SID>CheckFile($VIMRUNTIME . "/syntax/synload.vim")
: delfun <SID>CheckDir
: delfun <SID>CheckFile
: echo "--- Scripts sourced ---"
: scriptnames
:endif
:set all
:set termcap

View File

@ -1,6 +1,6 @@
" Vim color file
" Maintainer: Bohdan Vlasyuk <bohdan@vstu.edu.ua>
" Last Change: 2002 Mar 09
" Last Change: 2005 Mar 28
" darkblue -- for those who prefer dark background
" [note: looks bit uglier with come terminal palettes,
@ -32,31 +32,31 @@ hi MoreMsg ctermfg=darkgreen ctermfg=darkgreen
hi Question guifg=green gui=none ctermfg=green cterm=none
hi NonText guifg=#0030ff ctermfg=darkblue
hi StatusLine guifg=blue guibg=darkgray gui=none ctermfg=blue ctermbg=gray term=none cterm=none
hi StatusLineNC guifg=black guibg=darkgray gui=none ctermfg=black ctermbg=gray term=none cterm=none
hi VertSplit guifg=black guibg=darkgray gui=none ctermfg=black ctermbg=gray term=none cterm=none
hi StatusLine guifg=blue guibg=darkgray gui=none ctermfg=blue ctermbg=gray term=none cterm=none
hi StatusLineNC guifg=black guibg=darkgray gui=none ctermfg=black ctermbg=gray term=none cterm=none
hi VertSplit guifg=black guibg=darkgray gui=none ctermfg=black ctermbg=gray term=none cterm=none
hi Folded guifg=#808080 guibg=#000040 ctermfg=darkgrey ctermbg=black cterm=bold term=bold
hi FoldColumn guifg=#808080 guibg=#000040 ctermfg=darkgrey ctermbg=black cterm=bold term=bold
hi LineNr guifg=#90f020 ctermfg=green cterm=none
hi Folded guifg=#808080 guibg=#000040 ctermfg=darkgrey ctermbg=black cterm=bold term=bold
hi FoldColumn guifg=#808080 guibg=#000040 ctermfg=darkgrey ctermbg=black cterm=bold term=bold
hi LineNr guifg=#90f020 ctermfg=green cterm=none
hi DiffAdd guibg=darkblue ctermbg=darkblue term=none cterm=none
hi DiffChange guibg=darkmagenta ctermbg=magenta cterm=none
hi DiffDelete ctermfg=blue ctermbg=cyan gui=bold guifg=Blue guibg=DarkCyan
hi DiffText cterm=bold ctermbg=red gui=bold guibg=Red
hi DiffAdd guibg=darkblue ctermbg=darkblue term=none cterm=none
hi DiffChange guibg=darkmagenta ctermbg=magenta cterm=none
hi DiffDelete ctermfg=blue ctermbg=cyan gui=bold guifg=Blue guibg=DarkCyan
hi DiffText cterm=bold ctermbg=red gui=bold guibg=Red
hi Cursor guifg=#000020 guibg=#ffaf38 ctermfg=bg ctermbg=brown
hi lCursor guifg=#ffffff guibg=#000000 ctermfg=bg ctermbg=darkgreen
hi Cursor guifg=black guibg=yellow ctermfg=black ctermbg=yellow
hi lCursor guifg=black guibg=white ctermfg=black ctermbg=white
hi Comment guifg=#80a0ff ctermfg=darkred
hi Constant ctermfg=magenta guifg=#ffa0a0 cterm=none
hi Special ctermfg=brown guifg=Orange cterm=none gui=none
hi Identifier ctermfg=cyan guifg=#40ffff cterm=none
hi Statement ctermfg=yellow cterm=none guifg=#ffff60 gui=none
hi PreProc ctermfg=magenta guifg=#ff80ff gui=none cterm=none
hi type ctermfg=green guifg=#60ff60 gui=none cterm=none
hi Underlined cterm=underline term=underline
hi Ignore guifg=bg ctermfg=bg
hi Comment guifg=#80a0ff ctermfg=darkred
hi Constant ctermfg=magenta guifg=#ffa0a0 cterm=none
hi Special ctermfg=brown guifg=Orange cterm=none gui=none
hi Identifier ctermfg=cyan guifg=#40ffff cterm=none
hi Statement ctermfg=yellow cterm=none guifg=#ffff60 gui=none
hi PreProc ctermfg=magenta guifg=#ff80ff gui=none cterm=none
hi type ctermfg=green guifg=#60ff60 gui=none cterm=none
hi Underlined cterm=underline term=underline
hi Ignore guifg=bg ctermfg=bg

View File

@ -1,7 +1,7 @@
" Vim Compiler File
" Compiler: ant
" Maintainer: Johannes Zellner <johannes@zellner.org>
" Last Change: Tue, 27 Apr 2004 15:01:45 CEST
" Last Change: Mi, 13 Apr 2005 22:50:07 CEST
if exists("current_compiler")
finish
@ -21,15 +21,15 @@ CompilerSet makeprg=ant
" ant with jikes +E, which assumes the following
" two property lines in your 'build.xml':
"
" <property name = "build.compiler" value = "jikes"/>
" <property name = "build.compiler.emacs" value = "true"/>
" <property name = "build.compiler" value = "jikes"/>
" <property name = "build.compiler.emacs" value = "true"/>
"
" second line:
" ant with javac
"
" note that this will work also for tasks like [wtkbuild]
"
setlocal errorformat=\ %#[%.%#]\ %#%f:%l:%v:%*\\d:%*\\d:\ %t%[%^:]%#:%m,
CompilerSet errorformat=\ %#[%.%#]\ %#%f:%l:%v:%*\\d:%*\\d:\ %t%[%^:]%#:%m,
\%A\ %#[%.%#]\ %f:%l:\ %m,%-Z\ %#[%.%#]\ %p^,%C\ %#[%.%#]\ %#%m
" ,%-C%.%#

View File

@ -1,19 +1,13 @@
" Vim compiler file
" Compiler: BDF to PCF Conversion
" Maintainer: Nikolai Weibull <sourc@pcppopper.org>
" URL: http://www.pcppopper.org/vim/compiler/pcp/bdf/
" Latest Revision: 2004-05-22
" arch-tag: 2e2f3a55-199b-468c-aa2e-d6b1a7b87806
" Compiler: BDF to PCF Conversion
" Maintainer: Nikolai Weibull <nikolai+work.vim@bitwi.se>
" Latest Revision: 2005-06-29
if exists("current_compiler")
finish
endif
let current_compiler = "bdf"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo-=C
@ -26,5 +20,3 @@ CompilerSet errorformat=%ABDF\ %trror\ on\ line\ %l:\ %m,
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: set sts=2 sw=2:

View File

@ -1,8 +1,8 @@
" Vim compiler file
" Compiler: Checkstyle
" Maintainer: Doug Kearns <djkea2@mugca.its.monash.edu.au>
" URL: http://mugca.its.monash.edu.au/~djkea2/vim/compiler/checkstyle.vim
" Last Change: 2004 Mar 27
" Maintainer: Doug Kearns <djkea2@gus.gscit.monash.edu.au>
" URL: http://gus.gscit.monash.edu.au/~djkea2/vim/compiler/checkstyle.vim
" Last Change: 2004 Nov 27
if exists("current_compiler")
finish

View File

@ -0,0 +1,41 @@
" Vim compiler file
" Language: eRuby
" Maintainer: Doug Kearns <djkea2 at gus.gscit.monash.edu.au>
" Info: $Id$
" URL: http://vim-ruby.rubyforge.org
" Anon CVS: See above site
" ----------------------------------------------------------------------------
if exists("current_compiler")
finish
endif
let current_compiler = "eruby"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo-=C
if exists("eruby_compiler") && eruby_compiler == "eruby"
CompilerSet makeprg=eruby
else
CompilerSet makeprg=erb
endif
CompilerSet errorformat=
\eruby:\ %f:%l:%m,
\%+E%f:%l:\ parse\ error,
\%W%f:%l:\ warning:\ %m,
\%E%f:%l:in\ %*[^:]:\ %m,
\%E%f:%l:\ %m,
\%-C%\tfrom\ %f:%l:in\ %.%#,
\%-Z%\tfrom\ %f:%l,
\%-Z%p^,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: nowrap sw=2 sts=2 ts=8 ff=unix:

17
runtime/compiler/fpc.vim Normal file
View File

@ -0,0 +1,17 @@
" Vim compiler file
" Compiler: FPC 2.1
" Maintainer: Jaroslaw Blasiok <jaro3000@o2.pl>
" Last Change: 2005 October 07
if exists("current_compiler")
finish
endif
let current_compiler = "fpc"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
" NOTE: compiler must be runned with -vb to write whole source path, not only file
" name.
CompilerSet errorformat=%f(%l\\,%c)\ %m

26
runtime/compiler/gcc.vim Normal file
View File

@ -0,0 +1,26 @@
" Vim compiler file
" Compiler: GNU C Compiler
" Maintainer: Nikolai Weibull <nikolai+work.vim@bitwi.se>
" Latest Revision: 2005-06-29
if exists("current_compiler")
finish
endif
let current_compiler = "gcc"
let s:cpo_save = &cpo
set cpo-=C
setlocal errorformat=
\%*[^\"]\"%f\"%*\\D%l:\ %m,
\\"%f\"%*\\D%l:\ %m,
\%-G%f:%l:\ %trror:\ (Each\ undeclared\ identifier\ is\ reported\ only\ once,
\%-G%f:%l:\ %trror:\ for\ each\ function\ it\ appears\ in.),
\%f:%l:\ %m,
\\"%f\"\\,\ line\ %l%*\\D%c%*[^\ ]\ %m,
\%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
\%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f',
\%DMaking\ %*\\a\ in\ %f
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -1,8 +1,8 @@
" Vim compiler file
" Compiler: HP aCC
" Maintainer: Matthias Ulrich <matthias-ulrich@web.de>
" URL: http://www.subhome.de/vim/hp_acc.vim
" Last Change: 2004 Mar 27
" URL: http://www.subhome.de/vim/hp_acc.vim
" Last Change: 2005 Nov 19
"
" aCC --version says: "HP ANSI C++ B3910B A.03.13"
" This compiler has been tested on:
@ -10,6 +10,10 @@
"
" Tim Brown's aCC is: "HP ANSI C++ B3910B A.03.33"
" and it also works fine...
"
" Now suggestions by aCC are supported (compile flag aCC +w).
" Thanks to Tim Brown again!!
"
if exists("current_compiler")
finish
@ -21,6 +25,7 @@ if exists(":CompilerSet") != 2 " older Vim always used :setlocal
endif
CompilerSet errorformat=%A%trror\ %n\:\ \"%f\"\\,\ line\ %l\ \#\ %m,
\%A%tarning\ (suggestion)\ %n\:\ \"%f\"\\,\ line\ %l\ \#\ %m\ %#,
\%A%tarning\ %n\:\ \"%f\"\\,\ line\ %l\ \#\ %m\ %#,
\%Z\ \ \ \ %p^%.%#,
\%-C%.%#

View File

@ -1,8 +1,8 @@
" Vim compiler file
" Compiler: javac
" Maintainer: Doug Kearns <djkea2@mugca.its.monash.edu.au>
" URL: http://mugca.its.monash.edu.au/~djkea2/vim/compiler/javac.vim
" Last Change: 2004 Apr 15
" Maintainer: Doug Kearns <djkea2@gus.gscit.monash.edu.au>
" URL: http://gus.gscit.monash.edu.au/~djkea2/vim/compiler/javac.vim
" Last Change: 2004 Nov 27
if exists("current_compiler")
finish

View File

@ -1,17 +1,13 @@
" Vim compiler file
" Compiler: Miscrosoft Visual C
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2004 Mar 19
" Last Change: 2005 Nov 30
if exists("current_compiler")
finish
endif
let current_compiler = "msvc"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
" The errorformat for MSVC is the default.
CompilerSet errorformat&
CompilerSet makeprg=nmake

28
runtime/compiler/php.vim Normal file
View File

@ -0,0 +1,28 @@
" Vim compiler file
" Compiler: PHP
" Maintainer: Doug Kearns <djkea2@gus.gscit.monash.edu.au>
" URL: http://gus.gscit.monash.edu.au/~djkea2/vim/compiler/php.vim
" Last Change: 2004 Nov 27
if exists("current_compiler")
finish
endif
let current_compiler = "php"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo-=C
CompilerSet makeprg=php\ -lq
CompilerSet errorformat=%E<b>Parse\ error</b>:\ %m\ in\ <b>%f</b>\ on\ line\ <b>%l</b><br\ />,
\%W<b>Notice</b>:\ %m\ in\ <b>%f</b>\ on\ line\ <b>%l</b><br\ />,
\%EParse\ error:\ %m\ in\ %f\ on\ line\ %l,
\%WNotice:\ %m\ in\ %f</b>\ on\ line\ %l,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -1,19 +1,13 @@
" Vim compiler file
" Compiler: reStructuredText Documentation Format
" Maintainer: Nikolai Weibull <source@pcppopper.org>
" URL: http://www.pcppopper.org/vim/compiler/pcp/rst/
" Latest Revision: 2004-05-22
" arch-tag: ac64a95a-5d45-493d-a9f9-f96fc8568657
" Compiler: reStructuredText Documentation Format
" Maintainer: Nikolai Weibull <nikolai+work.vim@bitwi.se>
" Latest Revision: 2005-06-29
if exists("current_compiler")
finish
endif
let current_compiler = "rst"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo-=C
@ -29,5 +23,3 @@ CompilerSet errorformat=
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: set sts=2 sw=2:

View File

@ -1,16 +1,20 @@
" Vim compiler file
" Compiler: Ruby syntax check and/or error reporting
" Maintainer: Tim Hammerquist <timmy@cpan.org>
" Last Change: Tue Jul 16 00:38:00 PDT 2002
" Language: Ruby
" Function: Syntax check and/or error reporting
" Maintainer: Tim Hammerquist <timh at rubyforge.org>
" Info: $Id$
" URL: http://vim-ruby.rubyforge.org
" Anon CVS: See above site
" ----------------------------------------------------------------------------
"
" Changelog:
" 0.2: script saves and restores 'cpoptions' value to prevent problems with
" line continuations
" 0.1: initial release
" 0.2: script saves and restores 'cpoptions' value to prevent problems with
" line continuations
" 0.1: initial release
"
" Contributors:
" Hugh Sasse <hgs@dmu.ac.uk>
" Doug Kearns <djkea2@mugca.its.monash.edu.au>
" Doug Kearns <djkea2@gus.gscit.monash.edu.au>
"
" Todo:
" match error type %m
@ -22,6 +26,7 @@
" This is my first experience with 'errorformat' and compiler plugins and
" I welcome any input from more experienced (or clearer-thinking)
" individuals.
" ----------------------------------------------------------------------------
if exists("current_compiler")
finish
@ -59,4 +64,4 @@ CompilerSet errorformat=
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: ft=vim
" vim: nowrap sw=2 sts=2 ts=8 ff=unix:

View File

@ -0,0 +1,35 @@
" Vim compiler file
" Language: Test::Unit - Ruby Unit Testing Framework
" Maintainer: Doug Kearns <djkea2 at gus.gscit.monash.edu.au>
" Info: $Id$
" URL: http://vim-ruby.rubyforge.org
" Anon CVS: See above site
" ----------------------------------------------------------------------------
if exists("current_compiler")
finish
endif
let current_compiler = "rubyunit"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo-=C
CompilerSet makeprg=testrb
CompilerSet errorformat=\%W\ %\\+%\\d%\\+)\ Failure:,
\%C%m\ [%f:%l]:,
\%E\ %\\+%\\d%\\+)\ Error:,
\%C%m:,
\%C\ \ \ \ %f:%l:%.%#,
\%C%m,
\%Z\ %#,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: nowrap sw=2 sts=2 ts=8 ff=unix:

View File

@ -1,8 +1,8 @@
" Vim compiler file
" Compiler: se (SmartEiffel Compiler)
" Maintainer: Doug Kearns <djkea2@mugca.its.monash.edu.au>
" URL: http://mugca.its.monash.edu.au/~djkea2/vim/compiler/se.vim
" Last Change: 2004 May 16
" Maintainer: Doug Kearns <djkea2@gus.gscit.monash.edu.au>
" URL: http://gus.gscit.monash.edu.au/~djkea2/vim/compiler/se.vim
" Last Change: 2004 Nov 27
if exists("current_compiler")
finish

View File

@ -2,7 +2,7 @@
" Compiler: splint/lclint (C source code checker)
" Maintainer: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
" Splint Home: http://www.splint.org/
" Last Change: $Date$
" Last Change: 2005 Apr 21
" $Revision$
if exists("current_compiler")
@ -53,6 +53,7 @@ CompilerSet makeprg=splint\ %
CompilerSet errorformat=%OLCLint*m,
\%OSplint*m,
\%f(%l\\,%c):\ %m,
\%*[\ ]%f:%l:%c:\ %m,
\%*[\ ]%f:%l:\ %m,
\%*[^\"]\"%f\"%*\\D%l:\ %m,
@ -64,7 +65,7 @@ CompilerSet errorformat=%OLCLint*m,
\%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
\%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f',
\%DMaking\ %*\\a\ in\ %f,
\%C\ \ %m
\%C\ %#%m
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@ -1,8 +1,8 @@
" Vim compiler file
" Compiler: tcl
" Maintainer: Doug Kearns <djkea2@mugca.its.monash.edu.au>
" URL: http://mugca.its.monash.edu.au/~djkea2/vim/compiler/tcl.vim
" Last Change: 2004 Mar 27
" Maintainer: Doug Kearns <djkea2@gus.gscit.monash.edu.au>
" URL: http://gus.gscit.monash.edu.au/~djkea2/vim/compiler/tcl.vim
" Last Change: 2004 Nov 27
if exists("current_compiler")
finish

View File

@ -1,8 +1,8 @@
" Vim compiler file
" Compiler: HTML Tidy
" Maintainer: Doug Kearns <djkea2@mugca.its.monash.edu.au>
" URL: http://mugca.its.monash.edu.au/~djkea2/vim/compiler/tidy.vim
" Last Change: 2004 Mar 27
" Maintainer: Doug Kearns <djkea2@gus.gscit.monash.edu.au>
" URL: http://gus.gscit.monash.edu.au/~djkea2/vim/compiler/tidy.vim
" Last Change: 2004 Nov 27
" NOTE: set 'tidy_compiler_040800' if you are using the 4th August 2000 release
" of HTML Tidy.

View File

@ -1,8 +1,8 @@
" Vim compiler file
" Compiler: xmllint
" Maintainer: Doug Kearns <djkea2@mugca.its.monash.edu.au>
" URL: http://mugca.its.monash.edu.au/~djkea2/vim/compiler/xmllint.vim
" Last Change: 2004 Mar 27
" Maintainer: Doug Kearns <djkea2@gus.gscit.monash.edu.au>
" URL: http://gus.gscit.monash.edu.au/~djkea2/vim/compiler/xmllint.vim
" Last Change: 2004 Nov 27
if exists("current_compiler")
finish

View File

@ -19,6 +19,7 @@ DOCS = \
change.txt \
cmdline.txt \
debugger.txt \
debug.txt \
develop.txt \
diff.txt \
digraph.txt \
@ -36,6 +37,7 @@ DOCS = \
help.txt \
howto.txt \
if_cscop.txt \
if_mzsch.txt \
if_ole.txt \
if_perl.txt \
if_pyth.txt \
@ -67,10 +69,11 @@ DOCS = \
os_vms.txt \
os_win32.txt \
pattern.txt \
pi_expl.txt \
pi_gzip.txt \
pi_netrw.txt \
pi_spec.txt \
pi_tar.txt \
pi_zip.txt \
print.txt \
quickfix.txt \
quickref.txt \
@ -84,7 +87,9 @@ DOCS = \
sign.txt \
sponsor.txt \
starting.txt \
spell.txt \
syntax.txt \
tabpage.txt \
tagsrch.txt \
term.txt \
tips.txt \
@ -138,6 +143,7 @@ HTMLS = \
autocmd.html \
change.html \
cmdline.html \
debug.html \
debugger.html \
develop.html \
diff.html \
@ -156,6 +162,7 @@ HTMLS = \
help.html \
howto.html \
if_cscop.html \
if_mzsch.html \
if_ole.html \
if_perl.html \
if_pyth.html \
@ -187,7 +194,6 @@ HTMLS = \
os_vms.html \
os_win32.html \
pattern.html \
pi_expl.html \
pi_gzip.html \
pi_netrw.html \
pi_spec.html \
@ -204,7 +210,9 @@ HTMLS = \
sign.html \
sponsor.html \
starting.html \
spell.html \
syntax.html \
tabpage.html \
tagsrch.html \
tags.html \
term.html \
@ -254,10 +262,27 @@ HTMLS = \
windows.html \
workshop.html
CONVERTED = \
vim-fr.UTF-8.1 \
evim-fr.UTF-8.1 \
vimdiff-fr.UTF-8.1 \
vimtutor-fr.UTF-8.1 \
xxd-fr.UTF-8.1 \
vim-it.UTF-8.1 \
evim-it.UTF-8.1 \
vimdiff-it.UTF-8.1 \
vimtutor-it.UTF-8.1 \
xxd-it.UTF-8.1 \
vim-ru.UTF-8.1 \
evim-ru.UTF-8.1 \
vimdiff-ru.UTF-8.1 \
vimtutor-ru.UTF-8.1 \
xxd-ru.UTF-8.1 \
.SUFFIXES:
.SUFFIXES: .c .o .txt .html
all: tags vim.man vimdiff.man vimtutor.man xxd.man
all: tags vim.man vimdiff.man vimtutor.man xxd.man $(CONVERTED)
# Use Vim to generate the tags file. Can only be used when Vim has been
# compiled and installed. Supports multiple languages.
@ -365,3 +390,48 @@ os_risc.txt:
os_win32.txt:
touch os_win32.txt
vim-fr.UTF-8.1: vim-fr.1
iconv -f latin1 -t utf-8 $< >$@
evim-fr.UTF-8.1: evim-fr.1
iconv -f latin1 -t utf-8 $< >$@
vimdiff-fr.UTF-8.1: vimdiff-fr.1
iconv -f latin1 -t utf-8 $< >$@
vimtutor-fr.UTF-8.1: vimtutor-fr.1
iconv -f latin1 -t utf-8 $< >$@
xxd-fr.UTF-8.1: xxd-fr.1
iconv -f latin1 -t utf-8 $< >$@
vim-it.UTF-8.1: vim-it.1
iconv -f latin1 -t utf-8 $< >$@
evim-it.UTF-8.1: evim-it.1
iconv -f latin1 -t utf-8 $< >$@
vimdiff-it.UTF-8.1: vimdiff-it.1
iconv -f latin1 -t utf-8 $< >$@
vimtutor-it.UTF-8.1: vimtutor-it.1
iconv -f latin1 -t utf-8 $< >$@
xxd-it.UTF-8.1: xxd-it.1
iconv -f latin1 -t utf-8 $< >$@
vim-ru.UTF-8.1: vim-ru.1
iconv -f KOI8-R -t utf-8 $< >$@
evim-ru.UTF-8.1: evim-ru.1
iconv -f KOI8-R -t utf-8 $< >$@
vimdiff-ru.UTF-8.1: vimdiff-ru.1
iconv -f KOI8-R -t utf-8 $< >$@
vimtutor-ru.UTF-8.1: vimtutor-ru.1
iconv -f KOI8-R -t utf-8 $< >$@
xxd-ru.UTF-8.1: xxd-ru.1
iconv -f KOI8-R -t utf-8 $< >$@

View File

@ -1,4 +1,4 @@
*arabic.txt* For Vim version 7.0aa. Last change: 2004 Jun 09
*arabic.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Nadim Shaikli
@ -24,7 +24,7 @@ Introduction
------------
Arabic is a rather demanding language in which a number of special
features are required. Characters are right-to-left oriented and
ought to appear as such on the screen (ie. from right to left).
ought to appear as such on the screen (i.e. from right to left).
Arabic also requires shaping of its characters, meaning the same
character has a different visual form based on its relative location
within a word (initial, medial, final or stand-alone). Arabic also
@ -60,7 +60,7 @@ o Changing keyboard mapping and reverse insert modes using a single
o Toggling complete Arabic support via a single command.
o While in Arabic mode, numbers are entered from left to right. Upon
o While in Arabic mode, numbers are entered from left to right. Upon
entering a none number character, that character will be inserted
just into the left of the last number.
@ -101,14 +101,14 @@ need to be accounted for and invoked.
o Setting the Arabic fonts
+ For VIM GUI set the 'guifont' to your_ARABIC_FONT. This is done
+ For VIM GUI set the 'guifont' to your_ARABIC_FONT. This is done
by entering the following command in the VIM window.
>
:set guifont=your_ARABIC_FONT
<
NOTE: the string 'your_ARABIC_FONT' is used to denote a complete
font name akin to that used in linux/unix system.
(eg. -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1)
font name akin to that used in Linux/Unix systems.
(e.g. -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1)
You can append the 'guifont' set command to your .vimrc file
in order to get the same above noted results. In other words,
@ -179,11 +179,11 @@ o Enable Arabic settings [short-cut]
If, on the other hand, you'd like to be verbose and explicit and
are opting not to use the 'arabic' short-cut command, here's what
is needed (ie. if you use ':set arabic' you can skip this section) -
is needed (i.e. if you use ':set arabic' you can skip this section) -
+ Arabic Keymapping Activation
To activate the Arabic keymap (ie. to remap your English/Latin
To activate the Arabic keymap (i.e. to remap your English/Latin
keyboard to look-n-feel like a standard Arabic one), set the
'keymap' command to "arabic". This is done by entering
>
@ -197,14 +197,14 @@ o Enable Arabic settings [short-cut]
default mapping (English), it is advised that users use the 'CTRL-^'
key press while in insert (or add/replace) mode. The command-line
will display your current mapping by displaying an "Arabic" string
next to your insertion mode (eg. -- INSERT Arabic --) indicating
next to your insertion mode (e.g. -- INSERT Arabic --) indicating
your current keymap.
+ Arabic deletion of a combined pair character
By default VIM has the 'delcombine' option disabled. This option
allows the deletion of ALEF in a LAM_ALEF (LAA) combined character
and still retain the LAM (ie. it reverts to treating the combined
and still retain the LAM (i.e. it reverts to treating the combined
character as its natural two characters form -- this also pertains
to harakat and their combined forms). You can enable this option
by entering
@ -227,7 +227,7 @@ o Enable Arabic settings [short-cut]
- While in Left-to-right mode, enter ':set rl' in the command line
('rl' is the abbreviation for rightleft).
- Put the ':set rl' line in your '.vimrc' file to start the VIM in
- Put the ':set rl' line in your '.vimrc' file to start Vim in
right-to-left mode permanently.
+ Arabic right-to-left command-line Mode
@ -295,7 +295,7 @@ Restrictions
------------
o VIM in its GUI form does not currently support Bi-directionality
(ie. the ability to see both Arabic and Latin intermixed within
(i.e. the ability to see both Arabic and Latin intermixed within
the same line).
@ -304,7 +304,7 @@ Known Bugs
There is one known minor bug,
1. If you insert a haraka (eg. Fatha (U+064E)) after a LAM (U+0644)
1. If you insert a haraka (e.g. Fatha (U+064E)) after a LAM (U+0644)
and then insert an ALEF (U+0627), the appropriate combining will
not happen due to the sandwiched haraka resulting in something
that will NOT be displayed correctly.
@ -320,4 +320,3 @@ There is one known minor bug,
No other bugs are known to exist.
vim:tw=78:ts=8:ft=help:norl:

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
*change.txt* For Vim version 7.0aa. Last change: 2004 Jun 16
*change.txt* For Vim version 7.0aa. Last change: 2006 Feb 15
VIM REFERENCE MANUAL by Bram Moolenaar
@ -13,8 +13,13 @@ commands with the "." command.
2. Delete and insert |delete-insert|
3. Simple changes |simple-change| *changing*
4. Complex changes |complex-change|
4.1 Filter commands |filter|
4.2 Substitute |:substitute|
4.3 Search and replace |search-replace|
4.4 Changing tabs |change-tabs|
5. Copying and moving text |copy-move|
6. Formatting text |formatting|
7. Sorting text |sorting|
For inserting text see |insert.txt|.
@ -48,6 +53,8 @@ For inserting text see |insert.txt|.
of the line and [count]-1 more lines [into register
x]; synonym for "d$".
(not |linewise|)
When the '#' flag is in 'cpoptions' the count is
ignored.
{Visual}["x]x or *v_x* *v_d* *v_<Del>*
{Visual}["x]d or
@ -106,19 +113,22 @@ gJ Join [count] lines, with a minimum of two lines.
Vi}
*:j* *:join*
:[range]j[oin][!] Join [range] lines. Same as "J", except with [!]
:[range]j[oin][!] [flags]
Join [range] lines. Same as "J", except with [!]
the join does not insert or delete any spaces.
If a [range] has equal start and end values, this
command does nothing. The default behavior is to
join the current line with the line below it.
{not in Vi: !}
See |ex-flags| for [flags].
:[range]j[oin][!] {count}
:[range]j[oin][!] {count} [flags]
Join {count} lines, starting with [range] (default:
current line |cmdline-ranges|). Same as "J", except
with [!] the join does not insert or delete any
spaces.
{not in Vi: !}
See |ex-flags| for [flags].
These commands delete the <EOL> between lines. This has the effect of joining
multiple lines into one line. You can repeat these commands (except ":j") and
@ -230,10 +240,12 @@ If you prefer "cw" to include the space after a word, use this mapping: >
:map cw dwi
<
*:c* *:ch* *:change*
:{range}c[hange] Replace lines of text with some different text.
:{range}c[hange][!] Replace lines of text with some different text.
Type a line containing only "." to stop replacing.
Without {range}, this command changes only the current
line.
Adding [!] toggles 'autoindent' for the time this
command is executed.
==============================================================================
3. Simple changes *simple-change*
@ -346,29 +358,35 @@ CTRL-X Subtract [count] from the number or alphabetic
The CTRL-A and CTRL-X commands work for (signed) decimal numbers, unsigned
octal and hexadecimal numbers and alphabetic characters. This depends on the
'nrformats' option.
- When 'nrformats' includes "alpha", Vim will change the alphabetic character
under or after the cursor. This is useful to make lists with an alphabetic
index.
- When 'nrformats' includes "octal", Vim considers numbers starting with a '0'
to be octal, unless the number includes a '8' or '9'. Other numbers are
decimal and may have a preceding minus sign.
If the cursor is on a number, the commands apply to that number; otherwise
Vim uses the number to the right of the cursor.
- When 'nrformats' includes "hex", Vim assumes numbers starting with '0x' or
'0X' are hexadecimal. The case of the rightmost letter in the number
determines the case of the resulting hexadecimal number. If there is no
letter in the current number, Vim uses the previously detected case.
- When 'nrformats' includes "octal", Vim considers numbers starting with a '0'
to be octal. Other numbers are decimal and may have a preceding minus sign.
If the cursor is on a number, the commands apply to that number; otherwise
Vim uses the number to the right of the cursor.
- When 'nrformats' includes "alpha", Vim will change the alphabetic character
under or after the cursor. This is useful to make lists with an alphabetic
index.
For numbers with leading zeros (including all octal and hexadecimal numbers),
Vim preserves the number of characters in the number when possible. CTRL-A on
"0077" results in "0100", CTRL-X on "0x100" results in "0x0ff". Note that
when 'nrformats' includes "octal", decimal numbers with leading zeros are
impossible because they are indistinguishable from octal numbers.
"0077" results in "0100", CTRL-X on "0x100" results in "0x0ff".
There is one exception: When a number that starts with a zero is found not to
be octal (it contains a '8' or '9'), but 'nrformats' does include "octal",
leading zeros are removed to avoid that the result may be recognized as an
octal number.
Note that when 'nrformats' includes "octal", decimal numbers with leading
zeros cause mistakes, because they can be confused with octal numbers.
The CTRL-A command is very useful in a macro. Example: Use the following
steps to make a numbered list.
1. Create the first list entry, make sure it starts with a number.
2. qa - start recording into buffer 'a'
2. qa - start recording into register 'a'
3. Y - yank the entry
4. p - put a copy of the entry below the first one
5. CTRL-A - increment the number
@ -412,12 +430,15 @@ SHIFTING LINES LEFT OR RIGHT *shift-left-right*
lines to [indent] (default 0). {not in Vi}
*:>*
:[range]> Shift {count} [range] lines one 'shiftwidth' right.
:[range]> [flags] Shift {count} [range] lines one 'shiftwidth' right.
Repeat '>' for shifting multiple 'shiftwidth's.
See |ex-flags| for [flags].
:[range]> {count} Shift {count} lines one 'shiftwidth' right, starting
:[range]> {count} [flags]
Shift {count} lines one 'shiftwidth' right, starting
with [range] (default current line |cmdline-ranges|).
Repeat '>' for shifting multiple 'shiftwidth's.
See |ex-flags| for [flags].
The ">" and "<" commands are handy for changing the indentation within
programs. Use the 'shiftwidth' option to set the size of the white space
@ -449,7 +470,19 @@ For example: >
==============================================================================
4. Complex changes *complex-change*
*!* *filter*
4.1 Filter commands *filter*
A filter is a program that accepts text at standard input, changes it in some
way, and sends it to standard output. You can use the commands below to send
some text through a filter, so that it is replace by the filter output.
Examples of filters are "sort", which sorts lines alphabetically, and
"indent", which formats C program files (you need a version of indent that
works like a filter; not all versions do). The 'shell' option specifies the
shell Vim uses to execute the filter command (See also the 'shelltype'
option). You can repeat filter commands with ".". Vim does not recognize a
comment (starting with '"') after the ":!" command.
*!*
!{motion}{filter} Filter {motion} text lines through the external
program {filter}.
@ -470,6 +503,8 @@ For example: >
temporary file and then reads the file into the
buffer. Vim uses the 'shellredir' option to redirect
the filter output to the temporary file.
However, if the 'shelltemp' option is off then pipes
are used when possible (on Unix).
When the 'R' flag is included in 'cpoptions' marks in
the filtered lines are deleted, unless the
|:keepmarks| command is used. Example: >
@ -492,18 +527,10 @@ For example: >
{Visual}= Filter the highlighted lines like with ={motion}.
{not in Vi}
A filter is a program that accepts text at standard input, changes it in some
way, and sends it to standard output. You can use the commands above to send
some text through a filter. Examples of filters are "sort", which sorts lines
alphabetically, and "indent", which formats C program files (you need a
version of indent that works like a filter; not all versions do). The 'shell'
option specifies the shell Vim uses to execute the filter command (See also
the 'shelltype' option). You can repeat filter commands with ".". Vim does
not recognize a comment (starting with '"') after the ":!" command.
*:s* *:su* *:substitute*
:[range]s[ubstitute]/{pattern}/{string}/[&][c][e][g][p][r][i][I] [count]
4.2 Substitute *:substitute*
*:s* *:su*
:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]
For each line in [range] replace a match of {pattern}
with {string}.
For the {pattern} see |pattern|.
@ -515,31 +542,31 @@ not recognize a comment (starting with '"') after the ":!" command.
starting with the last line in [range]. When [range]
is omitted start in the current line.
Also see |cmdline-ranges|.
See |:s_flags| for the flags.
See |:s_flags| for [flags].
:[range]s[ubstitute] [c][e][g][p][r][i][I] [count]
:[range]&[&][c][e][g][p][r][i][I] [count] *:&*
:[range]s[ubstitute] [flags] [count]
:[range]&[&][flags] [count] *:&*
Repeat last :substitute with same search pattern and
substitute string, but without the same flags. You
may add extra flags (see |:s_flags|).
may add [flags], see |:s_flags|.
Note that after ":substitute" the '&' flag can't be
used, it's recognized as a pattern separator.
The space between ":substitute" and the 'c', 'g' and
'r' flags isn't required, but in scripts it's a good
idea to keep it to avoid confusion.
:[range]~[&][c][e][g][p][r][i][I] [count] *:~*
:[range]~[&][flags] [count] *:~*
Repeat last substitute with same substitute string
but with last used search pattern. This is like
":&r". See |:s_flags| for the flags.
":&r". See |:s_flags| for [flags].
*&*
*&*
& Synonym for ":s//~/" (repeat last substitute). Note
that the flags are not remembered, thus it might
actually work differently. You can use ":&&" to keep
the flags.
*g&*
*g&*
g& Synonym for ":%s//~/&" (repeat last substitute on all
lines with the same flags).
Mnemonic: global substitute. {not in Vi}
@ -605,8 +632,15 @@ The flags that you can use for the substitute commands:
options are not used.
{not in Vi}
[n] Report the number of matches, do not actually substitute. The [c]
flag is ignored. The matches are reported as if 'report' is zero.
Useful to |count-items|.
[p] Print the line containing the last substitute.
{not in Vi}
[#] Like [p] and prepend the line number.
[l] Like [l] but print the text like |:list|.
[r] Only useful in combination with ":&" or ":s" without arguments. ":&r"
works the same way as ":~": When the search pattern is empty, use the
@ -650,8 +684,11 @@ For the definition of a pattern, see |pattern|.
*sub-replace-special* *:s\=*
When the {string} starts with "\=" it is evaluated as an expression, see
|sub-replace-expression|. Otherwise these characters in {string} have a
special meaning:
|sub-replace-expression|. You can use that for any special characters.
Otherwise these characters in {string} have a special meaning:
*:s%*
When {string} is equal to "%" and '/' is included with the 'cpotions' option,
then the {string} of the previous substitute command is used. |cpo-/|
magic nomagic action ~
& \& replaced with the whole matched pattern *s/\&*
@ -659,7 +696,7 @@ magic nomagic action ~
\0 replaced with the whole matched pattern *\0* *s/\0*
\1 replaced with the matched pattern in the first
pair of () *s/\1*
\2 replaced with the matched pattern in the first
\2 replaced with the matched pattern in the second
pair of () *s/\2*
.. .. *s/\3*
\9 replaced with the matched pattern in the ninth
@ -714,8 +751,8 @@ either the first or second pattern in parentheses did not match, so either
<
Substitute with an expression *sub-replace-expression*
When the substitute string starts with "\=" the remainer is interpreted as an
*sub-replace-\=*
When the substitute string starts with "\=" the remainder is interpreted as an
expression. This does not work recursively: a substitute() function inside
the expression cannot use "\=" for the substitute string.
@ -736,12 +773,17 @@ Be careful: The separation character must not appear in the expression!
Consider using a character like "@" or ":". There is no problem if the result
of the expression contains the separation character.
Example: >
Examples: >
:s@\n@\="\r" . expand("$HOME") . "\r"@
This replaces an end-of-line with a new line containing the value of $HOME.
This replaces an end-of-line with a new line containing the value of $HOME. >
s/E/\="\<Char-0x20ac>"/g
This replaces 'E' characters with an euro sign. Read more in |<Char->|.
*:pro* *:promptfind*
4.3 Search and replace *search-replace*
*:pro* *:promptfind*
:promptf[ind] [string]
Put up a Search dialog. When [string] is given, it is
used as the initial search string.
@ -753,6 +795,8 @@ This replaces an end-of-line with a new line containing the value of $HOME.
given, it is used as the initial search string.
{only for Win32, Motif and GTK GUI}
4.4 Changing tabs *change-tabs*
*:ret* *:retab*
:[range]ret[ab][!] [new_tabstop]
Replace all sequences of white-space containing a
@ -851,8 +895,10 @@ inside of strings can change! Also see 'softtabstop' option. >
*<MiddleMouse>*
["x]<MiddleMouse> Put the text from a register before the cursor [count]
times. Uses the "* register, unless another is
specified. Using the mouse only works when 'mouse'
contains 'n' or 'a'.
specified.
Leaves the cursor at the end of the new text.
Using the mouse only works when 'mouse' contains 'n'
or 'a'.
{not in Vi}
If you have a scrollwheel and often accidentally paste
text, you can use these mappings to disable the
@ -875,6 +921,8 @@ inside of strings can change! Also see 'softtabstop' option. >
current line). This always works |linewise|, thus
this command can be used to put a yanked block as new
lines.
The cursor is left on the first non-blank in the last
new line.
The register can also be '=' followed by an optional
expression. The expression continues until the end of
the command. You need to escape the '|' and '"'
@ -924,9 +972,9 @@ When using a put command like |p| or |P| in Visual mode, Vim will try to
replace the selected text with the contents of the register. Whether this
works well depends on the type of selection and the type of the text in the
register. With blockwise selection it also depends on the size of the block
and whether the corners are on an existing character. (implementation detail:
and whether the corners are on an existing character. (Implementation detail:
it actually works by first putting the register after the selection and then
deleting the selection).
deleting the selection.)
*blockwise-register*
If you use a blockwise Visual mode command to get the text into the register,
@ -965,10 +1013,11 @@ Vim fills this register with text deleted with the "d", "c", "s", "x" commands
or copied with the yank "y" command, regardless of whether or not a specific
register was used (e.g. "xdd). This is like the unnamed register is pointing
to the last used register. An exception is the '_' register: "_dd does not
store the deleted text in any register. Vim uses the contents of this
register for any put command (p or P) which does not specify a register.
Additionally you can access it with the name '"'. This means you have to type
two double quotes. Writing to the "" register writes to register "0.
store the deleted text in any register.
Vim uses the contents of the unnamed register for any put command (p or P)
which does not specify a register. Additionally you can access it with the
name '"'. This means you have to type two double quotes. Writing to the ""
register writes to register "0.
{Vi: register contents are lost when changing files, no '"'}
2. Numbered registers "0 to "9 *quote_number* *quote0* *quote1*
@ -979,9 +1028,9 @@ unless the command specified another register with ["x].
Numbered register 1 contains the text deleted by the most recent delete or
change command, unless the command specified another register or the text is
less than one line (the small delete register is used then). An exception is
made for these commands: |%|, |(|, |)|, |`|, |/|, |?|, |n|, |N|, |{| and |}|.
Register "1 is always used then (this is Vi compatible). The "- register is
used as well if the delete is within a line.
made for the delete operator with these movement commands: |%|, |(|, |)|, |`|,
|/|, |?|, |n|, |N|, |{| and |}|. Register "1 is always used then (this is Vi
compatible). The "- register is used as well if the delete is within a line.
With each successive deletion or change, Vim shifts the previous contents
of register 1 into register 2, 2 into 3, and so forth, losing the previous
contents of register 9.
@ -996,7 +1045,8 @@ except when the command specifies a register with ["x].
4. Named registers "a to "z or "A to "Z *quote_alpha* *quotea*
Vim fills these registers only when you say so. Specify them as lowercase
letters to replace their previous contents or as uppercase letters to append
to their previous contents.
to their previous contents. When the '>' flag is present in 'cpoptions' then
a line break is inserted before the appended text.
5. Read-only registers ":, "., "% and "#
These are '%', '#', ':' and '.'. You can use them only with the "p", "P",
@ -1029,14 +1079,18 @@ normal command-line editing commands are available, including a special
history for expressions. When you end the command-line by typing <CR>, Vim
computes the result of the expression. If you end it with <Esc>, Vim abandons
the expression. If you do not enter an expression, Vim uses the previous
expression (like with the "/" command). If the "= register is used for the
"p" command, the string is split up at <NL> characters. If the string ends in
a <NL>, it is regarded as a linewise register. {not in Vi}
expression (like with the "/" command). The expression must evaluate to a
string. If the result is a number it's turned into a string. A List,
Dictionary or FuncRef results in an error message (use string() to convert).
If the "= register is used for the "p" command, the string is split up at <NL>
characters. If the string ends in a <NL>, it is regarded as a linewise
register. {not in Vi}
7. Selection and drop registers "*, "+ and "~
Use these register for storing and retrieving the selected text for the GUI.
See |quotestar| and |quoteplus|. When the clipboard is not available or not
working, the unnamed register is used instead. {not in Vi}
working, the unnamed register is used instead. For Unix systems the clipboard
is only available when the |+xterm_clipboard| feature is present. {not in Vi}
Note that there is only a distinction between "* and "+ for X11 systems. For
an explanation of the difference, see |x11-selection|. Under MS-Windows, use
@ -1113,13 +1167,23 @@ The next three commands always work on whole lines.
compile time.
*gq*
gq{motion} Format the lines that {motion} moves over. The
'textwidth' option controls the length of each
formatted line (see below). If the 'textwidth' option
is 0, the formatted line length is the screen width
(with a maximum width of 79). {not in Vi}
gq{motion} Format the lines that {motion} moves over.
Formatting is done with one of three methods:
1. If 'formatexpr' is not empty the expression is
evaluated. This can differ for each buffer.
2. If 'formatprg' is not empty an external program
is used.
3. Otherise formatting is done internally.
In the third case the 'textwidth' option controls the
length of each formatted line (see below).
If the 'textwidth' option is 0, the formatted line
length is the screen width (with a maximum width of
79).
The 'formatoptions' option controls the type of
formatting |fo-table|.
The cursor is left on the first non-blank of the last
formatted line.
NOTE: The "Q" command formerly performed this
function. If you still want to use "Q" for
formatting, use this mapping: >
@ -1135,8 +1199,8 @@ gqq Format the current line. {not in Vi}
*gw*
gw{motion} Format the lines that {motion} moves over. Similar to
|gq| but puts the cursor back at the same position in
the text. However, 'formatprg' is not used.
{not in Vi}
the text. However, 'formatprg' and 'formatexpr' are
not used. {not in Vi}
gwgw *gwgw* *gww*
gww Format the current line as with "gw". {not in Vi}
@ -1167,9 +1231,10 @@ white space!).
The 'joinspaces' option is used when lines are joined together.
You can set the 'formatprg' option to the name of an external program for Vim
to use for text formatting. The 'textwidth' and other options have no effect
on formatting by an external program.
You can set the 'formatexpr' option to an expression or the 'formatprg' option
to the name of an external program for Vim to use for text formatting. The
'textwidth' and other options have no effect on formatting by an external
program.
*right-justify*
There is no command in Vim to right justify text. You can do it with
@ -1312,10 +1377,12 @@ a Automatic formatting of paragraphs. Every time text is inserted or
deleted the paragraph will be reformatted. See |auto-format|.
When the 'c' flag is present this only happens for recognized
comments.
n When formatting text, recognize numbered lists. The indent of the
text after the number is used for the next line. The number may
optionally be followed by '.', ':', ')', ']' or '}'. Note that
'autoindent' must be set too. Doesn't work well together with "2".
n When formatting text, recognize numbered lists. This actually uses
the 'formatlistpat' option, thus any kind of list can be used. The
indent of the text after the number is used for the next line. The
default is to find a number, optionally be followed by '.', ':', ')',
']' or '}'. Note that 'autoindent' must be set too. Doesn't work
well together with "2".
Example: >
1. the first item
wraps
@ -1369,7 +1436,7 @@ If the 'comments' option includes "/*", "*" and/or "*/", then Vim has some
built in stuff to treat these types of comments a bit more cleverly.
Opening a new line before or after "/*" or "*/" (with 'r' or 'o' present in
'formatoptions') gives the correct start of the line automatically. The same
happens with formatting and auto-wrapping. Opening a line after a line
happens with formatting and auto-wrapping. Opening a line after a line
starting with "/*" or "*" and containing "*/", will cause no comment leader to
be inserted, and the indent of the new line is taken from the line containing
the start of the comment.
@ -1429,5 +1496,57 @@ And a few warnings:
- Formatting a long paragraph and/or with complicated indenting may be slow.
==============================================================================
7. Sorting text *sorting*
Vim has a sorting function and a sorting command. The sorting function can be
found here: |sort()|.
*:sor* *:sort*
:[range]sor[t][!] [i][u][n][x][o] [/{pattern}/]
Sort lines in [range]. When no range is given all
lines are sorted.
With [!] the order is reversed.
With [i] case is ignored.
With [n] sorting is done on the first decimal number
in the line (after a {pattern} match).
With [x] sorting is done on the first hexadecimal
number in the line (after a {pattern} match). A
leading "0x" or "0X" is ignored.
With [o] sorting is done on the first octal number in
the line (after a {pattern} match).
With [u] only keep the first of a sequence of
identical lines (ignoring case when [i] is used).
Note that leading and trailing white space may cause
lines to be different.
When /{pattern}/ is specified the text matched with
{pattern} is skipped, so that you sort on what comes
after the match. For lines without a match sorting
starts in the first column (e.g., for empty lines).
Instead of the slash any non-letter can be used.
For example, to sort on the second comma-separated
field: >
:sort /[^,]*,/
< To sort on the text at virtual column 10 (thus
ignoring the difference between tabs and spaces): >
:sort /.*\%10v/
<
Note that using ":sort" with ":global" doesn't sort the matching lines, it's
quite useless.
The details about sorting depend on the library function used. There is no
guarantee that sorting is "stable" or obeys the current locale. You will have
to try it out.
The sorting itself cannot be interrupted, because of using a system library
function. You can interrupt the preparation (for undo) and putting the sorted
lines into the buffer. In the last case you may end up with duplicated lines.
vim:tw=78:ts=8:ft=help:norl:

View File

@ -1,4 +1,4 @@
*cmdline.txt* For Vim version 7.0aa. Last change: 2004 Jul 14
*cmdline.txt* For Vim version 7.0aa. Last change: 2006 Feb 01
VIM REFERENCE MANUAL by Bram Moolenaar
@ -17,8 +17,9 @@ Basic command line editing is explained in chapter 20 of the user manual
2. Command-line completion |cmdline-completion|
3. Ex command-lines |cmdline-lines|
4. Ex command-line ranges |cmdline-ranges|
5. Ex special characters |cmdline-special|
6. Command-line window |cmdline-window|
5. Ex command-line flags |ex-flags|
6. Ex special characters |cmdline-special|
7. Command-line window |cmdline-window|
==============================================================================
1. Command-line editing *cmdline-editing*
@ -152,7 +153,14 @@ CTRL-R {0-9a-z"%#:-=.} *c_CTRL-R* *c_<C-R>*
*c_CTRL-R_=*
'=' the expression register: you are prompted to
enter an expression (see |expression|)
(doesn't work at the expression prompt; some
things such as changing the buffer or current
window are not allowed to avoid side effects)
See |registers| about registers. {not in Vi}
Implementation detail: When using the |expression| register
and invoking setcmdpos(), this sets the position before
inserting the resulting string. Use CTRL-R CTRL-R to set the
position afterwards.
CTRL-R CTRL-F *c_CTRL-R_CTRL-F* *c_<C-R>_<C-F>*
CTRL-R CTRL-P *c_CTRL-R_CTRL-P* *c_<C-R>_<C-P>*
@ -186,10 +194,13 @@ CTRL-\ e {expr} *c_CTRL-\_e*
to finish it. It's most useful in mappings though. See
|expression|.
See |c_CTRL-R_=| for inserting the result of an expression.
Useful functions are |getcmdline()| and |getcmdpos()|.
Useful functions are |getcmdtype()|, |getcmdline()| and
|getcmdpos()|.
The cursor position is unchanged, except when the cursor was
at the end of the line, then it stays at the end.
|setcmdpos()| can be used to set the cursor position.
The |sandbox| is used for evaluating the expression to avoid
nasty side effects.
Example: >
:cmap <F7> <C-\>eAppendSome()<CR>
:func AppendSome()
@ -198,7 +209,9 @@ CTRL-\ e {expr} *c_CTRL-\_e*
:call setcmdpos(strlen(cmd))
:return cmd
:endfunc
<
< This doesn't work recursively, thus not when already editing
an expression.
*c_CTRL-Y*
CTRL-Y When there is a modeless selection, copy the selection into
the clipboard. |modeless-selection|
@ -355,6 +368,8 @@ CTRL-D List names that match the pattern in front of the cursor.
When showing file names, directories are highlighted (see
'highlight' option). Names where 'suffixes' matches are moved
to the end.
The 'wildoptions' option can be set to "tagfile" to list the
file of matching tags.
*c_CTRL-I* *c_wildchar* *c_<Tab>*
'wildchar' option
A match is done on the pattern in front of the cursor. The
@ -464,6 +479,7 @@ followed by another command:
:global
:help
:helpfind
:lcscope
:make
:normal
:perl
@ -551,7 +567,7 @@ argument for the command, which has a different meaning. For example:
"name"
==============================================================================
4. Ex command-line ranges *cmdline-ranges* *[range]* *E16* *E493*
4. Ex command-line ranges *cmdline-ranges* *[range]* *E16*
Some Ex commands accept a line range in front of them. This is noted as
[range]. It consists of one or more line specifiers, separated with ',' or
@ -637,11 +653,15 @@ When folds are active the line numbers are rounded off to include the whole
closed fold. See |fold-behavior|.
Reverse Range
Reverse Range *E493*
A range should have the lower line number first. If this is not the case, Vim
will ask you if it should swap the line numbers. This is not done within the
global command ":g".
will ask you if it should swap the line numbers.
Backwards range given, OK to swap ~
This is not done within the global command ":g".
You can use ":silent" before a command to avoid the question, the range will
always be swapped then.
Count and Range *N:*
@ -662,7 +682,26 @@ Visual Mode and Range *v_:*
lines.
==============================================================================
5. Ex special characters *cmdline-special*
5. Ex command-line flags *ex-flags*
These flags are supported by a selection of Ex commands. They print the line
that the cursor ends up after executing the command:
l output like for |:list|
# add line number
p output like for |:print|
The flags can be combined, thus "l#" uses both a line number and |:list| style
output.
==============================================================================
6. Ex special characters *cmdline-special*
Note: These are special characters in the executed command line. If you want
to insert special things while typing you can use the CTRL-R command. For
example, "%" stands for the current file name, while CTRL-R % inserts the
current file name right away. See |c_CTRL-R|.
In Ex commands, at places where a file name can be used, the following
characters have a special meaning. These can also be used in the expression
@ -706,9 +745,9 @@ Note: these are typed literally, they are not special keys!
effective buffer number (for ":r file" it is the current
buffer, the file being read is not in a buffer).
<amatch> when executing autocommands, is replaced with the match for
which this autocommand was executed. It differs form
which this autocommand was executed. It differs from
<afile> only when the file name isn't used to match with
(for FileType and Syntax events).
(for FileType, Syntax and SpellFileMissing events).
<sfile> when executing a ":source" command, is replaced with the
file name of the sourced file;
when executing a function, is replaced with

70
runtime/doc/debug.txt Normal file
View File

@ -0,0 +1,70 @@
*debug.txt* For Vim version 7.0aa. Last change: 2005 Dec 17
VIM REFERENCE MANUAL by Bram Moolenaar
Debugging Vim *debug-vim*
This is for debugging Vim itself, when it doesn't work properly.
For debugging Vim scripts, functions, etc. see |debug-scripts|
1. Location of a crash, using gcc and gdb |debug-gcc|
2. Windows Bug Reporting |debug-win32|
==============================================================================
1. Location of a crash, using gcc and gdb *debug-gcc*
When Vim crashes in one of the test files, and you are using gcc for
compilation, here is what you can do to find out exactly where Vim crashes.
This also applies when using the MingW tools.
1. Compile Vim with the "-g" option (there is a line in the Makefile for this,
which you can uncomment).
2. Execute these commands (replace "11" with the test that fails): >
cd testdir
gdb ../vim
run -u unix.vim -U NONE -s dotest.in test11.in
3. Check where Vim crashes, gdb should give a message for this.
4. Get a stack trace from gdb with this command: >
where
< You can check out different places in the stack trace with: >
frame 3
< Replace "3" with one of the numbers in the stack trace.
==============================================================================
2. Windows Bug Reporting *debug-win32*
If the Windows version of Vim crashes in a reproducible manner,
you can take some steps to provide a useful bug report.
First, you must obtain the debugger symbols (PDB) file for your executable:
gvim.pdb for gvim.exe, or vim.pdb for vim.exe. It should be available
from the same place that you obtained the executable. Be sure to use
the PDB that matches the EXE.
If you built the executable yourself with the Microsoft Visual C++ compiler,
then the PDB was built with the EXE.
You can download the Microsoft Visual C++ Toolkit from
http://msdn.microsoft.com/visualc/vctoolkit2003/
This contains the command-line tools, but not the Visual Studio IDE.
The Debugging Tools for Windows can be downloaded from
http://www.microsoft.com/whdc/devtools/debugging/default.mspx
This includes the WinDbg debugger.
If you have Visual Studio, use that instead of the VC Toolkit
and WinDbg.
For other compilers, you should always use the corresponding debugger: TD for
a Vim executable compiled with the Borland compiler; gdb (see above
|debug-gcc|) for the Cygwin and MinGW compilers.
=========================================================================
vim:tw=78:ts=8:ft=help:norl:

View File

@ -1,4 +1,4 @@
*debugger.txt* For Vim version 7.0aa. Last change: 2001 Dec 22
*debugger.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Gordon Prieur
@ -27,19 +27,19 @@ Environment (IDE):
These features were added specifically for use in the Motif version of gvim.
However, the |alt-input| and |debug-highlight| were written to be usable in
both vim and gvim. Some of the other features could be used in the non-GUI
vim with slight modifications. However, I did not do this nor did I test the
both vim and gvim. Some of the other features could be used in the non-GUI
vim with slight modifications. However, I did not do this nor did I test the
reliability of building for vim or non Motif GUI versions.
1.1 Alternate Command Input *alt-input*
For Vim to work with a debugger there must be at least an input connection
with a debugger or external tool. In many cases there will also be an output
with a debugger or external tool. In many cases there will also be an output
connection but this isn't absolutely necessary.
The purpose of the input connection is to let the external debugger send
commands to Vim. The commands sent by the debugger should give the debugger
commands to Vim. The commands sent by the debugger should give the debugger
enough control to display the current debug environment and state.
The current implementation is based on the X Toolkit dispatch loop and the
@ -49,15 +49,15 @@ XtAddInput() function call.
1.2 Debug Signs *debug-signs*
Many debuggers mark specific lines by placing a small sign or color highlight
on the line. The |:sign| command lets the debugger set this graphic mark. Some
on the line. The |:sign| command lets the debugger set this graphic mark. Some
examples where this feature would be used would be a debugger showing an arrow
representing the Program Counter (PC) of the program being debugged. Another
example would be a small stop sign for a line with a breakpoint. These visible
representing the Program Counter (PC) of the program being debugged. Another
example would be a small stop sign for a line with a breakpoint. These visible
highlights let the user keep track of certain parts of the state of the
debugger.
This feature can be used with more than debuggers, too. An IPE can use a sign
to highlight build errors, searched text, or other things. The sign feature
This feature can be used with more than debuggers, too. An IPE can use a sign
to highlight build errors, searched text, or other things. The sign feature
can also work together with the |debug-highlight| to ensure the mark is
highly visible.
@ -66,17 +66,17 @@ Debug signs are defined and placed using the |:sign| command.
1.3 Debug Source Highlight *debug-highlight*
This feature allows a line to have a predominant highlight. The highlight is
intended to make a specific line stand out. The highlight could be made to
This feature allows a line to have a predominant highlight. The highlight is
intended to make a specific line stand out. The highlight could be made to
work for both vim and gvim, whereas the debug sign is, in most cases, limited
to gvim. The one exception to this is Sun Microsystem's dtterm. The dtterm
to gvim. The one exception to this is Sun Microsystem's dtterm. The dtterm
from Sun has a "sign gutter" for showing signs.
1.4 Message Footer *gui-footer*
The message footer can be used to display messages from a debugger or IPE. It
can also be used to display menu and toolbar tips. The footer area is at the
The message footer can be used to display messages from a debugger or IPE. It
can also be used to display menu and toolbar tips. The footer area is at the
bottom of the GUI window, below the line used to display colon commands.
The display of the footer is controlled by the 'guioptions' letter 'F'.
@ -85,30 +85,33 @@ The display of the footer is controlled by the 'guioptions' letter 'F'.
1.5 Balloon Evaluation *balloon-eval*
This feature allows a debugger, or other external tool, to display dynamic
information based on where the mouse is pointing. The purpose of this feature
information based on where the mouse is pointing. The purpose of this feature
was to allow Sun's Visual WorkShop debugger to display expression evaluations.
However, the feature was implemented in as general a manner as possible and
could be used for displaying other information as well.
The Balloon Evaluation has some settable parameters too. The font list and
colors can be set via X resources (XmNballoonEvalFontList,
The Balloon Evaluation has some settable parameters too. For Motif the font
list and colors can be set via X resources (XmNballoonEvalFontList,
XmNballoonEvalBackground, and XmNballoonEvalForeground).
The 'balloondelay' option sets the delay before an attempt is made to show a
balloon.
The 'ballooneval' option needs to be set to switch it on.
Balloon evaluation is only available when compiled with the |+balloon_eval|
and |+sun_workshop| features.
feature.
The Balloon evaluation functions are also used to show a tooltip for the
toolbar. The 'ballooneval' option does not need to be set for this. But the
other settings apply.
Another way to use the balloon is with the 'balloonexpr' option. This is
completely user definable.
==============================================================================
2. Vim Compile Options *debugger-compilation*
The debugger features were added explicitly for use with Sun's Visual
WorkShop Integrated Programming Environment (ipe). However, they were done
WorkShop Integrated Programming Environment (ipe). However, they were done
in as generic a manner as possible so that integration with other debuggers
could also use some or all of the tools used with Sun's ipe.
@ -120,7 +123,7 @@ The following compile time preprocessor variables control the features:
Message Footer FEAT_FOOTER
Balloon Evaluation FEAT_BEVAL
The first integration with a full IPE/IDE was with Sun Visual WorkShop. To
The first integration with a full IPE/IDE was with Sun Visual WorkShop. To
compile a gvim which interfaces with VWS set the following flag, which sets
all the above flags:
@ -129,7 +132,9 @@ all the above flags:
==============================================================================
3. Integrated Debuggers *debugger-integration*
Currently the only fully integrated debugger/IPE/IDE is Sun's Visual WorkShop
Integrated Programming Environment.
One fully integrated debugger/IPE/IDE is Sun's Visual WorkShop Integrated
Programming Environment.
For Sun NetBeans support see |netbeans|.
vim:tw=78:sw=4:ts=8:ft=help:norl:

View File

@ -1,4 +1,4 @@
*develop.txt* For Vim version 7.0aa. Last change: 2004 Jan 17
*develop.txt* For Vim version 7.0aa. Last change: 2006 Jan 12
VIM REFERENCE MANUAL by Bram Moolenaar
@ -123,7 +123,8 @@ VIM IS... MAINTAINABLE *design-maintain*
- The source code should not become a mess. It should be reliable code.
- Use the same layout in all files to make it easy to read |coding-style|.
- Use comments in a useful way!
- Use comments in a useful way! Quoting the function name and argument names
is NOT useful. Do explain what they are for.
- Porting to another platform should be made easy, without having to change
too much platform-independent code.
- Use the object-oriented spirit: Put data and code together. Minimize the
@ -237,8 +238,8 @@ get_env_value() Linux system function
VARIOUS *style-various*
Typedef'ed names should end in "_t": >
typedef int some_t;
Typedef'ed names should end in "_T": >
typedef int some_T;
Define'ed names should be uppercase: >
#define SOME_THING
Features always start with "FEAT_": >
@ -366,7 +367,111 @@ window View on a buffer. There can be several windows in Vim,
fit in the shell.
To be continued...
Spell checking *develop-spell*
When spell checking was going to be added to Vim a survey was done over the
available spell checking libraries and programs. Unfortunately, the result
was that none of them provided sufficient capabilities to be used as the spell
checking engine in Vim, for various reasons:
- Missing support for multi-byte encodings. At least UTF-8 must be supported,
so that more than one language can be used in the same file.
Doing on-the-fly conversion is not always possible (would require iconv
support).
- For the programs and libraries: Using them as-is would require installing
them separately from Vim. That's mostly not impossible, but a drawback.
- Performance: A few tests showed that it's possible to check spelling on the
fly (while redrawing), just like syntax highlighting. But the mechanisms
used by other code are much slower. Myspell uses a hashtable, for example.
The affix compression that most spell checkers use makes it slower too.
- For using an external program like aspell a communication mechanism would
have to be setup. That's complicated to do in a portable way (Unix-only
would be relatively simple, but that's not good enough). And performance
will become a problem (lots of process switching involved).
- Missing support for words with non-word characters, such as "Etten-Leur" and
"et al.", would require marking the pieces of them OK, lowering the
reliability.
- Missing support for regions or dialects. Makes it difficult to accept
all English words and highlight non-Canadian words differently.
- Missing support for rare words. Many words are correct but hardly ever used
and could be a misspelled often-used word.
- For making suggestions the speed is less important and requiring to install
another program or library would be acceptable. But the word lists probably
differ, the suggestions may be wrong words.
Spelling suggestions *develop-spell-suggestions*
For making suggestions there are two basic mechanisms:
1. Try changing the bad word a little bit and check for a match with a good
word. Or go through the list of good words, change them a little bit and
check for a match with the bad word. The changes are deleting a character,
inserting a character, swapping two characters, etc.
2. Perform soundfolding on both the bad word and the good words and then find
matches, possibly with a few changes like with the first mechanism.
The first is good for finding typing mistakes. After experimenting with
hashtables and looking at solutions from other spell checkers the conclusion
was that a trie (a kind of tree structure) is ideal for this. Both for
reducing memory use and being able to try sensible changes. For example, when
inserting a character only characters that lead to good words need to be
tried. Other mechanisms (with hashtables) need to try all possible letters at
every position in the word. Also, a hashtable has the requirement that word
boundaries are identified separately, while a trie does not require this.
That makes the mechanism a lot simpler.
Soundfolding is useful when someone knows how the words sounds but doesn't
know how it is spelled. For example, the word "dictionary" might be written
as "daktonerie". The number of changes that the first method would need to
try is very big, it's hard to find the good word that way. After soundfolding
the words become "tktnr" and "tkxnry", these differ by only two letters.
To find words by their soundfolded equivalent (soundalike word) we need a list
of all soundfolded words. A few experiments have been done to find out what
the best method is. Alternatives:
1. Do the sound folding on the fly when looking for suggestions. This means
walking through the trie of good words, soundfolding each word and
checking how different it is from the bad word. This is very efficient for
memory use, but takes a long time. On a fast PC it takes a couple of
seconds for English, which can be acceptable for interactive use. But for
some languages it takes more than ten seconds (e.g., German, Catalan),
which is unacceptable slow. For batch processing (automatic corrections)
it's to slow for all languages.
2. Use a trie for the soundfolded words, so that searching can be done just
like how it works without soundfolding. This requires remembering a list
of good words for each soundfolded word. This makes finding matches very
fast but requires quite a lot of memory, in the order of 1 to 10 Mbyte.
For some languages more than the original word list.
3. Like the second alternative, but reduce the amount of memory by using affix
compression and store only the soundfolded basic word. This is what Aspell
does. Disadvantage is that affixes need to be stripped from the bad word
before soundfolding it, which means that mistakes at the start and/or end
of the word will cause the mechanism to fail. Also, this becomes slow when
the bad word is quite different from the good word.
The choice made is to use the second mechanism and use a separate file. This
way a user with sufficient memory can get very good suggestions while a user
who is short of memory or just wants the spell checking and no suggestions
doesn't use so much memory.
Word frequency
For sorting suggestions it helps to know which words are common. In theory we
could store a word frequency with the word in the dictionary. However, this
requires storing a count per word. That degrades word tree compression a lot.
And maintaining the word frequency for all languages will be a heavy task.
Also, it would be nice to prefer words that are already in the text. This way
the words that appear in the specific text are preferred for suggestions.
What has been implemented is to count words that have been seen during
displaying. A hashtable is used to quickly find the word count. The count is
initialized from words listed in COMMON items in the affix file, so that it
also works when starting a new file.
This isn't ideal, because the longer Vim is running the higher the counts
become. But in practice it is a noticable improvement over not using the word
count.
==============================================================================
4. Assumptions *design-assumptions*
@ -374,8 +479,8 @@ To be continued...
Size of variables:
char 8 bit signed
char_u 8 bit unsigned
int 16, 32 or 64 bit signed
unsigned 16, 32 or 64 bit unsigned
int 32 or 64 bit signed (16 might be possible with limited features)
unsigned 32 or 64 bit unsigned (16 as with ints)
long 32 or 64 bit signed, can hold a pointer
Note that some compilers cannot handle long lines or strings. The C89

View File

@ -1,4 +1,4 @@
*diff.txt* For Vim version 7.0aa. Last change: 2004 Jul 11
*diff.txt* For Vim version 7.0aa. Last change: 2006 Feb 18
VIM REFERENCE MANUAL by Bram Moolenaar
@ -41,6 +41,10 @@ the file.
This only works when a standard "diff" command is available. See 'diffexpr'.
Diffs are local to the current tab page |tab-page|. You can't see diffs with
a window in another tab page. This does make it possible to have several
diffs at the same time, each in their own tab page.
What happens is that Vim opens a window for each of the files. This is like
using the |-O| argument. This uses vertical splits. If you prefer horizontal
splits add the |-o| argument: >
@ -113,7 +117,7 @@ file for a moment and come back to the same file and be in diff mode again.
*:diffo* *:diffoff*
:diffoff Switch off diff mode for the current window.
:diffoff! Switch off diff mode for all windows.
:diffoff! Switch off diff mode for all windows in the current tab page.
The ":diffoff" command resets the relevant options to their default value.
This may be different from what the values were before diff mode was started,
@ -157,10 +161,12 @@ original file and diff with that. For example: >
A buffer that is unloaded cannot be used for the diff. But it does work for
hidden buffers. You can use ":hide" to close a window without unloading the
buffer.
buffer. If you don't want a buffer to remain used for the diff do ":set
nodiff" before hiding it.
*:diffu* *:diffupdate*
:diffu[pdate] Update the diff highlighting and folds.
Vim attempts to keep the differences updated when you make changes to the
text. This mostly takes care of inserted and deleted lines. Changes within a
line and more complicated changes do not cause the differences to be updated.
@ -216,7 +222,7 @@ It is an error if there is no change for the cursor to move to.
==============================================================================
4. Diff copying *copy-diffs* *E99* *E100* *E101* *E102* *E103*
*merge*
There are two commands to copy text from one buffer to another. The result is
that the buffers will be equal within the specified range.
@ -233,6 +239,8 @@ that the buffers will be equal within the specified range.
Modify another buffer to undo difference with the current
buffer. Just like ":diffget" but the other buffer is modified
instead of the current one.
When [bufspec] is omitted and there is more than one other
buffer in diff mode where 'modifiable' is set this fails.
See below for [range].
*do*
@ -341,8 +349,12 @@ get an error message. Possible causes:
- The 'shell' and associated options are not set correctly. Try if filtering
works with a command like ":!sort".
- You are using 'diffexpr' and it doesn't work.
If it's not clear what the problem is set the 'verbose' option to see more
messages.
If it's not clear what the problem is set the 'verbose' option to one or more
to see more messages.
The self-installing Vim includes a diff program. If you don't have it you
might want to download a diff.exe. For example from
http://jlb.twu.net/code/unixkit.php.
USING PATCHES *diff-patchexpr*

View File

@ -1,4 +1,4 @@
*digraph.txt* For Vim version 7.0aa. Last change: 2001 Sep 03
*digraph.txt* For Vim version 7.0aa. Last change: 2005 Sep 11
VIM REFERENCE MANUAL by Bram Moolenaar
@ -28,7 +28,8 @@ An alternative is using the 'keymap' option.
*E104* *E39*
:dig[raphs] {char1}{char2} {number} ...
Add digraph {char1}{char2} to the list. {number} is
the decimal representation of the character.
the decimal representation of the character. Normally
it is the Unicode character, see |digraph-encoding|.
Example: >
:digr e: 235 a: 228
< Avoid defining a digraph with '_' (underscore) as the
@ -48,7 +49,24 @@ In the middle of each column is the resulting character. This may be mangled
if you look at it on a system that does not support digraphs or if you print
this file.
The decimal number is the number of the character.
*digraph-encoding*
The decimal number normally is the Unicode number of the character. Note that
the meaning doesn't change when 'encoding' changes. The character will be
converted from Unicode to 'encoding' when needed. This does require the
conversion to be available, it might fail.
When Vim was compiled without the +multi_byte feature, you need to specify the
character in the encoding given with 'encoding'. You might want to use
something like this: >
if has("multi_byte")
digraph oe 339
elseif &encoding == "iso-8859-15"
digraph oe 189
endif
This defines the "oe" digraph for a character that is number 339 in Unicode
and 189 in latin9 (iso-8859-15).
==============================================================================
2. Using digraphs *digraphs-use*
@ -142,6 +160,15 @@ Example: a: is
These are the RFC1345 digraphs for the one-byte characters. See the output of
":digraphs" for the others. The characters above 255 are only available when
Vim was compiled with the |+multi_byte| feature.
EURO
Exception: RFC1345 doesn't specify the euro sign. In Vim the digraph =e was
added for this. Note the difference between latin1, where the digraph Cu is
used for the currency sign, and latin9 (iso-8859-15), where the digraph =e is
used for the euro sign, while both of them are the character 164, 0xa4. For
compatibility with zsh Eu can also be used for the euro sign.
*digraph-table*
char digraph hex dec official name ~
^@ NU 0x00 0 NULL (NUL)

View File

@ -1,4 +1,4 @@
*editing.txt* For Vim version 7.0aa. Last change: 2004 Jul 04
*editing.txt* For Vim version 7.0aa. Last change: 2006 Feb 18
VIM REFERENCE MANUAL by Bram Moolenaar
@ -8,45 +8,58 @@ Editing files *edit-files*
1. Introduction |edit-intro|
2. Editing a file |edit-a-file|
3. Dialogs |edit-dialogs|
4. The current directory |current-directory|
5. The argument list |argument-list|
6. Writing |writing|
7. Writing and quitting |write-quit|
3. The argument list |argument-list|
4. Writing |writing|
5. Writing and quitting |write-quit|
6. Dialogs |edit-dialogs|
7. The current directory |current-directory|
8. Editing binary files |edit-binary|
9. Encryption |encryption|
10. Timestamps |timestamps|
11. File Searching |file-searching|
==============================================================================
1. Introduction *edit-intro*
Editing a file with Vim means:
1. reading the file into the internal buffer
1. reading the file into a buffer
2. changing the buffer with editor commands
3. writing the buffer into a file
*current-file*
As long as you don't write the buffer, the original file remains unchanged.
If you start editing a file (read a file into the buffer), the file name is
remembered as the "current file name".
remembered as the "current file name". This is also known as the name of the
current buffer. It can be used with "%" on the command line |:_%|.
*alternate-file*
If there already was a current file name, then that one becomes the alternate
file name. All file names are remembered in the file list. When you enter a
file name, for editing (e.g., with ":e filename") or writing (e.g., with (:w
file name"), the file name is added to the list. You can use this list to
remember which files you edited and to quickly switch from one file to
another with the CTRL-^ command (e.g., to copy text). First type the number
of the file and then hit CTRL-^. {Vi: only one alternate file name}
file name. It can be used with "#" on the command line |:_#| and you can use
the |CTRL-^| command to toggle between the current and the alternate file.
However, the alternate file name is not changed when |:keepalt| is used.
*:keepalt* *:keepa*
:keepalt {cmd} Execute {cmd} while keeping the current alternate file
name. Note that commands invoked indirectly (e.g.,
with a function) may still set the alternate file
name. {not in Vi}
All file names are remembered in the buffer list. When you enter a file name,
for editing (e.g., with ":e filename") or writing (e.g., with ":w filename"),
the file name is added to the list. You can use the buffer list to remember
which files you edited and to quickly switch from one file to another (e.g.,
to copy text) with the |CTRL-^| command. First type the number of the file
and then hit CTRL-^. {Vi: only one alternate file name is remembered}
CTRL-G or *CTRL-G* *:f* *:fi* *:file*
:f[ile] Prints the current file name (as typed), the
cursor position (unless the 'ruler' option is set),
and the file status (readonly, modified, read errors,
new file)). See the 'shortmess' option about how tho
make this message shorter. {Vi does not include
column number}
:f[ile] Prints the current file name (as typed, unless ":cd"
was used), the cursor position (unless the 'ruler'
option is set), and the file status (readonly,
modified, read errors, new file). See the 'shortmess'
option about how to make this message shorter.
{Vi does not include column number}
:f[ile]! like |:file|, but don't truncate the name even when
'shortmess' indicates this.
@ -56,25 +69,31 @@ CTRL-G or *CTRL-G* *:f* *:fi* *:file*
buffer number is also given. {not in Vi}
*g_CTRL-G* *word-count* *byte-count*
g CTRL-G Prints the current position of the cursor in four
ways: Column, Line, Word and Byte. If there are
characters in the line that take more than one
position on the screen (<Tab> or special character),
both the "real" column and the screen column are
shown, separated with a dash. See also 'ruler'
option. {not in Vi}
g CTRL-G Prints the current position of the cursor in five
ways: Column, Line, Word, Character and Byte. If the
number of Characters and Bytes is the same then the
Character position is omitted.
If there are characters in the line that take more
than one position on the screen (<Tab> or special
character), both the "real" column and the screen
column are shown, separated with a dash.
See also 'ruler' option. {not in Vi}
*v_g_CTRL-G*
{Visual}g CTRL-G Similar to "g CTRL-G", but Word, Line, and Byte counts
for the visually selected region are displayed. In
Blockwise mode, Column count is also shown. (For
{Visual}g CTRL-G Similar to "g CTRL-G", but Word, Character, Line, and
Byte counts for the visually selected region are
displayed.
In Blockwise mode, Column count is also shown. (For
{Visual} see |Visual-mode|.)
{not in VI}
*:file_f*
:f[ile][!] {name} Sets the current file name to {name}. The optional !
avoids truncating the message, as with |:file|.
If the buffer did have a name, that name becomes the
|alternate-file| name. An unlisted buffer is created
to hold the old name.
*:0file*
:0f[ile][!] Remove the name of the current buffer. The optional !
avoids truncating the message, as with |:file|. {not
in Vi}
@ -95,7 +114,7 @@ string, it is often displayed with HOME replaced with "~". This was done to
keep file names short. When reading or writing files the full name is still
used, the "~" is only used when displaying file names. When replacing the
file name would result in just "~", "~/" is used instead (to avoid confusion
with 'backupext' set to "~").
between options set to $HOME with 'backupext' set to "~").
When writing the buffer, the default is to use the current file name. Thus
when you give the "ZZ" or ":wq" command, the original file will be
@ -136,11 +155,14 @@ Technical: On the Amiga you can use 30 characters for a file name. But on an
When you started editing without giving a file name, "No File" is displayed in
messages. If the ":write" command is used with a file name argument, the file
name for the current file is set to that file name. This only happens when
the 'F' flag is included in 'cpoptions' (by default it is included). This is
useful when entering text in an empty buffer and then writing it to a file.
If 'cpoptions' contains the 'f' flag (by default it is NOT included) the file
name is set for the ":read file" command. This is useful when starting Vim
without an argument and then doing ":read file" to start editing a file.
the 'F' flag is included in 'cpoptions' (by default it is included) |cpo-F|.
This is useful when entering text in an empty buffer and then writing it to a
file. If 'cpoptions' contains the 'f' flag (by default it is NOT included)
|cpo-f| the file name is set for the ":read file" command. This is useful
when starting Vim without an argument and then doing ":read file" to start
editing a file.
When the file name was set and 'filetype' is empty the filetype detection
autocommands will be triggered.
*not-edited*
Because the file name was set without really starting to edit that file, you
are protected from overwriting that file. This is done by setting the
@ -202,11 +224,10 @@ If you want to keep the changed buffer without saving it, switch on the
{Vi: no ++opt}
:e[dit] [++opt] [+cmd] #[count]
Edit the [count]th alternate file name (as shown by
:files). This command does the same as
[count] CTRL-^. But ":e #" doesn't work if the
alternate buffer doesn't have a file name, while
CTRL-^ still works then.
Edit the [count]th buffer (as shown by |:files|).
This command does the same as [count] CTRL-^. But ":e
#" doesn't work if the alternate buffer doesn't have a
file name, while CTRL-^ still works then.
Also see |++opt| and |+cmd|.
{Vi: no ++opt}
@ -245,20 +266,20 @@ If you want to keep the changed buffer without saving it, switch on the
*:vi* *:visual*
:vi[sual][!] [++opt] [+cmd] [file]
When entered in Ex mode: Leave |Ex-mode|, go back to
When used in Ex mode: Leave |Ex-mode|, go back to
Normal mode. Otherwise same as |:edit|.
*:vie* *:view*
:vie[w] [++opt] [+cmd] file
When entered in Ex mode: Leave Ex mode, go back to
When used in Ex mode: Leave |Ex mode|, go back to
Normal mode. Otherwise same as |:edit|, but set
'readonly' option for this buffer. {not in Vi}
*CTRL-^* *CTRL-6*
[count]CTRL-^ Edit [count]th alternate file (equivalent to ":e
#[count]"). Without count this gets you to the
previously edited file. This is a quick way to toggle
between two (or more) files.
CTRL-^ Edit the alternate file (equivalent to ":e #").
Mostly the alternate file is the previously edited
file. This is a quick way to toggle between two
files.
If the 'autowrite' or 'autowriteall' option is on and
the buffer was changed, write it.
Mostly the ^ character is positioned on the 6 key,
@ -266,6 +287,12 @@ If you want to keep the changed buffer without saving it, switch on the
But on some non-US keyboards CTRL-^ is produced in
another way.
{count}CTRL-^ Edit [count]th file in the buffer list (equivalent to
":e #[count]"). This is a quick way to switch between
files.
See |CTRL-^| above for further details.
{not in Vi}
[count]]f *]f* *[f*
[count][f Same as "gf". Deprecated.
@ -307,6 +334,22 @@ If you want to keep the changed buffer without saving it, switch on the
(For {Visual} see |Visual-mode|.)
{not in VI}
*gF*
[count]gF Same as "gf", except if a number follows the file
name, then the cursor is positioned on that line in
the file. The file name and the number must be
separated by a non-filename (see 'isfname') and
non-numeric character. White space between the
filename, the separator and the number are ignored.
Examples: >
eval.c:10
eval.c @ 20
eval.c (30)
eval.c 40
<
*v_gF*
{Visual}[count]gF Same as "v_gf".
These commands are used to start editing a single file. This means that the
file is read into the buffer and the current file name is set. The file that
is opened depends on the current directory, see |:cd|.
@ -322,23 +365,43 @@ current file name.
Note for systems other than Unix and MS-DOS: When using a command that
accepts a single file name (like ":edit file") spaces in the file name are
allowed, but trailing spaces are ignored. This is useful on systems that
allow file names with embedded spaces (like the Amiga). Example: The command
":e Long File Name " will edit the file "Long File Name". When using a
command that accepts more than one file name (like ":next file1 file2")
embedded spaces must be escaped with a backslash.
allow file names with embedded spaces (like MS-Windows and the Amiga).
Example: The command ":e Long File Name " will edit the file "Long File
Name". When using a command that accepts more than one file name (like ":next
file1 file2") embedded spaces must be escaped with a backslash.
*wildcard*
Wildcards in {file} are expanded. Which wildcards are supported depends on
the system. These are the common ones:
* matches anything, including nothing
? matches one character
* matches anything, including nothing
** matches anything, including nothing, recurses into directories
[abc] match 'a', 'b' or 'c'
To avoid the special meaning of the wildcards prepend a backslash. However,
on MS-Windows the backslash is a path separator and "path\[abc]" is still seen
as a wildcard when "[" is in the 'isfname' option. A simple way to avoid this
is to use "path\[[]abc]". Then the file "path[abc]" literally.
*starstar-wildcard*
Expanding "**" is possible on Unix, Win32, Mac OS/X and a few other systems.
This allows searching a directory tree. This goes up to 100 directories deep.
Example: >
:n **/*.txt
Finds files:
ttt.txt
subdir/ttt.txt
a/b/c/d/ttt.txt
When non-wildcard characters are used these are only matched in the first
directory. Example: >
:n /usr/inc**/*.h
Finds files:
/usr/include/types.h
/usr/include/sys/types.h
/usr/inc_old/types.h
*backtick-expansion* *`-expansion*
On Unix you can also use backticks in the file name, for example: >
On Unix and a few other systems you can also use backticks in the file name,
for example: >
:e `find . -name ver\\*.c -print`
The backslashes before the star are required to prevent "ver*.c" to be
expanded by the shell before executing the find program.
@ -347,16 +410,16 @@ backticks must be around the whole item. It is not possible to have text
directly before the first or just after the last backtick.
*`=*
You can have the backticks expanded as a Vim expression, instead of
an external command, by using the syntax `={expr}` e.g.: >
:let foo='bar'
:e `=foo . ".c" `
This will edit "bar.c". The expression can contain just about anything, thus
this can also be used to avoid the special meaning of '"', '|', '%' and '#'.
You can have the backticks expanded as a Vim expression, instead of an
external command, by using the syntax `={expr}` e.g.: >
:e `=tempname()`
The expression can contain just about anything, thus this can also be used to
avoid the special meaning of '"', '|', '%' and '#'.
*++opt* *[++opt]*
The [++opt] argument can be used to force the value of 'fileformat' or
'fileencoding' to a value for one command. The form is: >
The [++opt] argument can be used to force the value of 'fileformat',
'fileencoding' or 'binary' to a value for one command, and to specify the
behavior for bad characters. The form is: >
++{optname}={value}
Where {optname} is one of: *++ff* *++enc* *++bin* *++nobin*
@ -364,6 +427,7 @@ Where {optname} is one of: *++ff* *++enc* *++bin* *++nobin*
enc or encoding overrides 'fileencoding'
bin or binary sets 'binary'
nobin or nobinary resets 'binary'
bad specifies behavior for bad characters
{value} cannot contain white space. It can be any valid value for these
options. Examples: >
@ -373,12 +437,24 @@ This edits the same file again with 'fileformat' set to "unix". >
:w ++enc=latin1 newfile
This writes the current buffer to "newfile" in latin1 format.
There may be several ++opt arguments, separated by white space. They must all
appear before any |+cmd| argument.
*++bad*
The argument of "++bad=" specifies what happens with characters that can't be
converted and illegal bytes. It can be one of three things:
++bad=X A single-byte character that replaces each bad character.
++bad=keep Keep bad characters without conversion. Note that this may
result in illegal bytes in your text!
++bad=drop Remove the bad characters.
The default is like "++bad=?": Replace each bad character with a question
mark.
Note that when reading, the 'fileformat' and 'fileencoding' options will be
set to the used format. When writing this doesn't happen, thus a next write
will use the old value of the option. Same for the 'binary' option.
There may be several ++opt arguments, separated by white space. They must all
appear before any |+cmd| argument.
*+cmd* *[+cmd]*
The [+cmd] argument can be used to position the cursor in the newly opened
@ -457,241 +533,17 @@ You can encrypt files that are written by setting the 'key' option. This
provides some security against others reading your files. |encryption|
File Searching *file-searching*
{not available when compiled without the |+path_extra| feature}
The file searching is currently used for the 'path', 'cdpath' and 'tags'
options. There are three different types of searching:
1) Downward search:
Downward search uses the wildcards '*', '**' and possibly others
supported by your operating system. '*' and '**' are handled inside Vim, so
they work on all operating systems.
The usage of '*' is quite simple: It matches 0 or more characters.
'**' is more sophisticated:
- It ONLY matches directories.
- It matches up to 30 directories deep, so you can use it to search an
entire directory tree
- The maximum number of levels matched can be given by appending a number
to '**'.
Thus '/usr/**2' can match: >
/usr
/usr/include
/usr/include/sys
/usr/include/g++
/usr/lib
/usr/lib/X11
....
< It does NOT match '/usr/include/g++/std' as this would be three
levels.
The allowed number range is 0 ('**0' is removed) to 255.
If the given number is smaller than 0 it defaults to 30, if it's
bigger than 255 it defaults to 255.
- '**' can only be at the end of the path or be followed by a path
separator or by a number and a path separator.
You can combine '*' and '**' in any order: >
/usr/**/sys/*
/usr/*/sys/**
/usr/**2/sys/*
2) Upward search:
Here you can give a directory and then search the directory tree upward for
a file. You could give stop-directories to limit the upward search. The
stop-directories are appended to the path (for the 'path' option) or to
the filename (for the 'tags' option) with a ';'. If you want several
stop-directories separate them with ';'. If you want no stop-directory
("search upward till the root directory) just use ';'. >
/usr/include/sys;/usr
< will search in: >
/usr/include/sys
/usr/include
/usr
<
If you use a relative path the upward search is started in Vim's current
directory or in the directory of the current file (if the relative path
starts with './' and 'd' is not included in 'cpoptions').
If Vim's current path is /u/user_x/work/release and you do >
:set path=include;/u/user_x
< and then search for a file with |gf| the file is searched in: >
/u/user_x/work/release/include
/u/user_x/work/include
/u/user_x/include
3) Combined up/downward search
If Vim's current path is /u/user_x/work/release and you do >
set path=**;/u/user_x
< and then search for a file with |gf| the file is searched in: >
/u/user_x/work/release/**
/u/user_x/work/**
/u/user_x/**
<
BE CAREFUL! This might consume a lot of time, as the search of
'/u/user_x/**' includes '/u/user_x/work/**' and
'/u/user_x/work/release/**'. So '/u/user_x/work/release/**' is searched
three and '/u/user_x/work/**' is searched two times.
In the above example you might want to set path to: >
:set path=**,/u/user_x/**
< This searches: >
/u/user_x/work/release/**
/u/user_x/**
< This searches the same directories, but in a different order.
==============================================================================
3. Dialogs *edit-dialogs*
*:confirm* *:conf*
:conf[irm] {command} Execute {command}, and use a dialog when an
operation has to be confirmed. Can be used on the
":q", ":qa" and ":w" commands (the latter to over-ride
a read-only setting).
Examples: >
:confirm w foo
< Will ask for confirmation when "foo" already exists. >
:confirm q
< Will ask for confirmation when there are changes. >
:confirm qa
< If any modified, unsaved buffers exist, you will be prompted to save
or abandon each one. There are also choices to "save all" or "abandon
all".
If you want to always use ":confirm", set the 'confirm' option.
*:browse* *:bro* *E338* *E614* *E615* *E616* *E578*
:bro[wse] {command} Open a file selection dialog for an argument to
{command}. At present this works for |:e|, |:w|,
|:r|, |:saveas|, |:sp|, |:mkexrc|, |:mkvimrc| and
|:mksession|.
{only in Win32, Athena, Motif, GTK and Mac GUI}
When ":browse" is not possible you get an error
message. If the |+browse| feature is missing or the
{command} doesn't support browsing, the {command} is
executed without a dialog.
":browse set" works like |:options|.
The syntax is best shown via some examples: >
:browse e $vim/foo
< Open the browser in the $vim/foo directory, and edit the
file chosen. >
:browse e
< Open the browser in the directory specified with 'browsedir',
and edit the file chosen. >
:browse w
< Open the browser in the directory of the current buffer,
with the current buffer filename as default, and save the
buffer under the filename chosen. >
:browse w C:/bar
< Open the browser in the C:/bar directory, with the current
buffer filename as default, and save the buffer under the
filename chosen.
Also see the |'browsedir'| option.
For versions of Vim where browsing is not supported, the command is executed
unmodified.
*browsefilter*
For MS Windows, you can modify the filters that are used in the browse dialog.
By setting the g:browsefilter or b:browsefilter variables, you can change the
filters globally or locally to the buffer. The variable is set to a string in
the format "{filter label}\t{pattern};{pattern}\n" where {filter label} is the
text that appears in the "Files of Type" comboBox, and {pattern} is the
pattern which filters the filenames. Several patterns can be given, separated
by ';'.
For Motif the same format is used, but only the very first pattern is actually
used (Motif only offers one pattern, but you can edit it).
For example, to have only Vim files in the dialog, you could use the following
command: >
let g:browsefilter="Vim Scripts\t*.vim\nVim Startup Files\t*vimrc\n"
You can override the filter setting on a per-buffer basis by setting the
b:browsefilter variable. You would most likely set b:browsefilter in a
filetype plugin, so that the browse dialog would contain entries related to
the type of file you are currently editing. Disadvantage: This makes it
difficult to start editing a file of a different type. To overcome this, you
may want to add "All Files\t*.*\n" as the final filter, so that the user can
still access any desired file.
==============================================================================
4. The current directory *current-directory*
You may use the |:cd| and |:lcd| commands to change to another directory, so
you will not have to type that directory name in front of the file names. It
also makes a difference for executing external commands, e.g. ":!ls".
*:cd* *E472*
:cd On non-Unix systems: Print the current directory
name. On Unix systems: Change the current directory
to the home directory. Use |:pwd| to print the
current directory on all systems.
:cd {path} Change the current directory to {path}.
If {path} is relative, it is searched for in the
directories listed in |'cdpath'|.
Does not change the meaning of an already opened file,
because its full path name is remembered. Files from
the |arglist| may change though!
On MS-DOS this also changes the active drive.
To change to the directory of the current file: >
:cd %:h
<
*:cd-* *E186*
:cd - Change to the previous current directory (before the
previous ":cd {path}" command). {not in Vi}
*:chd* *:chdir*
:chd[ir] [path] Same as |:cd|.
*:lc* *:lcd*
:lc[d] {path} Like |:cd|, but only set the current directory for the
current window. The current directory for other
windows is not changed. {not in Vi}
*:lch* *:lchdir*
:lch[dir] Same as |:lcd|. {not in Vi}
*:pw* *:pwd* *E187*
:pw[d] Print the current directory name. {Vi: no pwd}
Also see |getcwd()|.
So long as no |:lcd| command has been used, all windows share the same current
directory. Using a command to jump to another window doesn't change anything
for the current directory.
When a |:lcd| command has been used for a window, the specified directory
becomes the current directory for that window. Windows where the |:lcd|
command has not been used stick to the global current directory. When jumping
to another window the current directory will become the last specified local
current directory. If none was specified, the global current directory is
used.
When a |:cd| command is used, the current window will lose his local current
directory and will use the global current directory from now on.
After using |:cd| the full path name will be used for reading and writing
files. On some networked file systems this may cause problems. The result of
using the full path name is that the file names currently in use will remain
referring to the same file. Example: If you have a file a:test and a
directory a:vim the commands ":e test" ":cd vim" ":w" will overwrite the file
a:test and not write a:vim/test. But if you do ":w test" the file a:vim/test
will be written, because you gave a new file name and did not refer to a
filename before the ":cd".
==============================================================================
5. The argument list *argument-list* *arglist*
3. The argument list *argument-list* *arglist*
If you give more than one file name when starting Vim, this list is remembered
as the argument list. You can jump to each file in this list.
Do not confuse this with the buffer list, which you can see with the
|:buffers| command. The argument list was already present in Vi, the buffer
list is new in Vim. A file name in the argument list will also be present in
the buffer list (unless it was deleted with ":bdel").
list is new in Vim. Every file name in the argument list will also be present
in the buffer list (unless it was deleted with |:bdel| or |:bwipe|). But it's
common that names in the buffer list are not in the argument list.
This subject is introduced in section |07.2| of the user manual.
@ -762,7 +614,9 @@ list of the current window.
current entry.
This command keeps the currently edited file, also
when it's deleted from the argument list.
{not in Vi} {not available when compiled without the
Example: >
:argdel *.obj
< {not in Vi} {not available when compiled without the
|+listcmds| feature}
:{range}argd[elete] Delete the {range} files from the argument list.
@ -868,7 +722,7 @@ list of the current window.
in Vi}
:[count]wN[ext][!] [++opt] [+cmd] [file] *:wN* *:wNext*
:[count]wp[revous][!] [++opt] [+cmd] [file] *:wp* *:wprevious*
:[count]wp[revious][!] [++opt] [+cmd] [file] *:wp* *:wprevious*
Same as :wnext, but go to previous file instead of
next. {not in Vi}
@ -881,11 +735,17 @@ positioned at the first non-blank in the line, otherwise the last know column
is used. If there is no last known cursor position the cursor will be in the
first line (the last line in Ex mode).
*{arglist}*
The wildcards in the argument list are expanded and the file names are sorted.
Thus you can use the command "vim *.c" to edit all the C files. From within
Vim the command ":n *.c" does the same. On Unix you can also use backticks,
for example: >
:n `find . -name \\*.c -print`
Vim the command ":n *.c" does the same.
White space is used to separate file names. Put a backslash before a space or
Tab to include it in a file name. E.g., to edit the single file "foo bar": >
:next foo\ bar
On Unix and a few other systems you can also use backticks, for example: >
:next `find . -name \\*.c -print`
The backslashes before the star are required to prevent "*.c" to be expanded
by the shell before executing the find program.
@ -975,7 +835,7 @@ flag is used for the ":substitute" command to avoid an error for files where
"my_foo" isn't used. ":update" writes the file only if changes were made.
==============================================================================
6. Writing *writing* *save-file*
4. Writing *writing* *save-file*
Note: When the 'write' option is off, you are not able to write any file.
@ -1019,7 +879,10 @@ Note: When the 'write' option is off, you are not able to write any file.
executed like with ":!{cmd}", any '!' is replaced with
the previous command |:!|.
The default [range] for the ":w" command is the whole buffer (1,$).
The default [range] for the ":w" command is the whole buffer (1,$). If you
write the whole buffer, it is no longer considered changed. Also when you
write it to a different file with ":w somefile"!
If a file name is given with ":w" it becomes the alternate file. This can be
used, for example, when the write fails and you want to try again later with
":w #". This can be switched off by removing the 'A' flag from the
@ -1030,6 +893,8 @@ used, for example, when the write fails and you want to try again later with
the filename of the current buffer to {file}. The
previous name is used for the alternate file name.
The [!] is needed to overwrite an existing file.
When 'filetype' is empty filetype detection is done
with the new name, before the file is written.
{not in Vi}
*:up* *:update*
@ -1100,8 +965,8 @@ if the system allows it (the directory must be writable).
*write-fail*
If the writing of the new file fails, you have to be careful not to lose
your changes AND the original file. If there is no backup file and writing
the new file failed, you have already lost the original file! DON'T EXIT VIM
UNTIL YOU WRITE OUT THE FILE! If a backup was made, it is put back in place
the new file failed, you have already lost the original file! DON'T EXIT VIM
UNTIL YOU WRITE OUT THE FILE! If a backup was made, it is put back in place
of the original file (if possible). If you exit Vim, and lose the changes
you made, the original file will mostly still be there. If putting back the
original file fails, there will be an error message telling you that you
@ -1157,7 +1022,7 @@ For MS-DOS and MS-Windows the device is detected by its name:
The names can be in upper- or lowercase.
==============================================================================
7. Writing and quitting *write-quit*
5. Writing and quitting *write-quit*
*:q* *:quit*
:q[uit] Quit the current window. Quit Vim if this is the last
@ -1165,6 +1030,9 @@ The names can be in upper- or lowercase.
Vim refuses to |abandon| the current buffer, and when
the last file in the argument list has not been
edited.
If there are other tab pages and quitting the last
window in the current tab page the current tab page is
closed |tab-page|.
:conf[irm] q[uit] Quit, but give prompt when changes have been made, or
the last file in the argument list has not been
@ -1249,6 +1117,149 @@ MULTIPLE WINDOWS AND BUFFERS *window-exit*
which cannot be written for another reason, Vim will not quit.
{not in Vi}
==============================================================================
6. Dialogs *edit-dialogs*
*:confirm* *:conf*
:conf[irm] {command} Execute {command}, and use a dialog when an
operation has to be confirmed. Can be used on the
":q", ":qa" and ":w" commands (the latter to over-ride
a read-only setting).
Examples: >
:confirm w foo
< Will ask for confirmation when "foo" already exists. >
:confirm q
< Will ask for confirmation when there are changes. >
:confirm qa
< If any modified, unsaved buffers exist, you will be prompted to save
or abandon each one. There are also choices to "save all" or "abandon
all".
If you want to always use ":confirm", set the 'confirm' option.
*:browse* *:bro* *E338* *E614* *E615* *E616* *E578*
:bro[wse] {command} Open a file selection dialog for an argument to
{command}. At present this works for |:e|, |:w|,
|:r|, |:saveas|, |:sp|, |:mkexrc|, |:mkvimrc| and
|:mksession|.
{only in Win32, Athena, Motif, GTK and Mac GUI}
When ":browse" is not possible you get an error
message. If the |+browse| feature is missing or the
{command} doesn't support browsing, the {command} is
executed without a dialog.
":browse set" works like |:options|.
The syntax is best shown via some examples: >
:browse e $vim/foo
< Open the browser in the $vim/foo directory, and edit the
file chosen. >
:browse e
< Open the browser in the directory specified with 'browsedir',
and edit the file chosen. >
:browse w
< Open the browser in the directory of the current buffer,
with the current buffer filename as default, and save the
buffer under the filename chosen. >
:browse w C:/bar
< Open the browser in the C:/bar directory, with the current
buffer filename as default, and save the buffer under the
filename chosen.
Also see the |'browsedir'| option.
For versions of Vim where browsing is not supported, the command is executed
unmodified.
*browsefilter*
For MS Windows, you can modify the filters that are used in the browse dialog.
By setting the g:browsefilter or b:browsefilter variables, you can change the
filters globally or locally to the buffer. The variable is set to a string in
the format "{filter label}\t{pattern};{pattern}\n" where {filter label} is the
text that appears in the "Files of Type" comboBox, and {pattern} is the
pattern which filters the filenames. Several patterns can be given, separated
by ';'.
For Motif the same format is used, but only the very first pattern is actually
used (Motif only offers one pattern, but you can edit it).
For example, to have only Vim files in the dialog, you could use the following
command: >
let g:browsefilter="Vim Scripts\t*.vim\nVim Startup Files\t*vimrc\n"
You can override the filter setting on a per-buffer basis by setting the
b:browsefilter variable. You would most likely set b:browsefilter in a
filetype plugin, so that the browse dialog would contain entries related to
the type of file you are currently editing. Disadvantage: This makes it
difficult to start editing a file of a different type. To overcome this, you
may want to add "All Files\t*.*\n" as the final filter, so that the user can
still access any desired file.
==============================================================================
7. The current directory *current-directory*
You may use the |:cd| and |:lcd| commands to change to another directory, so
you will not have to type that directory name in front of the file names. It
also makes a difference for executing external commands, e.g. ":!ls".
Changing directory fails when the current buffer is modified, the '.' flag is
present in 'cpoptions' and "!" is not used in the command.
*:cd* *E472*
:cd[!] On non-Unix systems: Print the current directory
name. On Unix systems: Change the current directory
to the home directory. Use |:pwd| to print the
current directory on all systems.
:cd[!] {path} Change the current directory to {path}.
If {path} is relative, it is searched for in the
directories listed in |'cdpath'|.
Does not change the meaning of an already opened file,
because its full path name is remembered. Files from
the |arglist| may change though!
On MS-DOS this also changes the active drive.
To change to the directory of the current file: >
:cd %:h
<
*:cd-* *E186*
:cd[!] - Change to the previous current directory (before the
previous ":cd {path}" command). {not in Vi}
*:chd* *:chdir*
:chd[ir][!] [path] Same as |:cd|.
*:lc* *:lcd*
:lc[d][!] {path} Like |:cd|, but only set the current directory for the
current window. The current directory for other
windows is not changed. {not in Vi}
*:lch* *:lchdir*
:lch[dir][!] Same as |:lcd|. {not in Vi}
*:pw* *:pwd* *E187*
:pw[d] Print the current directory name. {Vi: no pwd}
Also see |getcwd()|.
So long as no |:lcd| command has been used, all windows share the same current
directory. Using a command to jump to another window doesn't change anything
for the current directory.
When a |:lcd| command has been used for a window, the specified directory
becomes the current directory for that window. Windows where the |:lcd|
command has not been used stick to the global current directory. When jumping
to another window the current directory will become the last specified local
current directory. If none was specified, the global current directory is
used.
When a |:cd| command is used, the current window will lose his local current
directory and will use the global current directory from now on.
After using |:cd| the full path name will be used for reading and writing
files. On some networked file systems this may cause problems. The result of
using the full path name is that the file names currently in use will remain
referring to the same file. Example: If you have a file a:test and a
directory a:vim the commands ":e test" ":cd vim" ":w" will overwrite the file
a:test and not write a:vim/test. But if you do ":w test" the file a:vim/test
will be written, because you gave a new file name and did not refer to a
filename before the ":cd".
==============================================================================
8. Editing binary files *edit-binary*
@ -1381,9 +1392,9 @@ file though, only when the file wasn't changed inside of Vim.
Note that if a FileChangedShell autocommand is defined you will not get a
warning message or prompt. The autocommand is expected to handle this.
There is no warning for a directory (e.g., in the |file-explorer|). But you
do get warned if you started editing a new file and it was created as a
directory later.
There is no warning for a directory (e.g., with |netrw-browse|). But you do
get warned if you started editing a new file and it was created as a directory
later.
When Vim notices the timestamp of a file has changed, and the file is being
edited in a buffer but has not changed, Vim checks if the contents of the file
@ -1438,5 +1449,96 @@ It is also possible that you modified the file yourself, from another edit
session or with another command (e.g., a filter command). Then you will know
which version of the file you want to keep.
There is one situation where you get the message while there is nothing wrong:
On a Win32 system on the day daylight saving time starts. There is something
in the Win32 libraries that confuses Vim about the hour time difference. The
problem goes away the next day.
==============================================================================
11. File Searching *file-searching*
{not available when compiled without the |+path_extra| feature}
The file searching is currently used for the 'path', 'cdpath' and 'tags'
options. There are three different types of searching:
1) Downward search: *starstar*
Downward search uses the wildcards '*', '**' and possibly others
supported by your operating system. '*' and '**' are handled inside Vim, so
they work on all operating systems.
The usage of '*' is quite simple: It matches 0 or more characters.
'**' is more sophisticated:
- It ONLY matches directories.
- It matches up to 30 directories deep, so you can use it to search an
entire directory tree
- The maximum number of levels matched can be given by appending a number
to '**'.
Thus '/usr/**2' can match: >
/usr
/usr/include
/usr/include/sys
/usr/include/g++
/usr/lib
/usr/lib/X11
....
< It does NOT match '/usr/include/g++/std' as this would be three
levels.
The allowed number range is 0 ('**0' is removed) to 255.
If the given number is smaller than 0 it defaults to 30, if it's
bigger than 255 it defaults to 255.
- '**' can only be at the end of the path or be followed by a path
separator or by a number and a path separator.
You can combine '*' and '**' in any order: >
/usr/**/sys/*
/usr/*/sys/**
/usr/**2/sys/*
2) Upward search:
Here you can give a directory and then search the directory tree upward for
a file. You could give stop-directories to limit the upward search. The
stop-directories are appended to the path (for the 'path' option) or to
the filename (for the 'tags' option) with a ';'. If you want several
stop-directories separate them with ';'. If you want no stop-directory
("search upward till the root directory) just use ';'. >
/usr/include/sys;/usr
< will search in: >
/usr/include/sys
/usr/include
/usr
<
If you use a relative path the upward search is started in Vim's current
directory or in the directory of the current file (if the relative path
starts with './' and 'd' is not included in 'cpoptions').
If Vim's current path is /u/user_x/work/release and you do >
:set path=include;/u/user_x
< and then search for a file with |gf| the file is searched in: >
/u/user_x/work/release/include
/u/user_x/work/include
/u/user_x/include
3) Combined up/downward search:
If Vim's current path is /u/user_x/work/release and you do >
set path=**;/u/user_x
< and then search for a file with |gf| the file is searched in: >
/u/user_x/work/release/**
/u/user_x/work/**
/u/user_x/**
<
BE CAREFUL! This might consume a lot of time, as the search of
'/u/user_x/**' includes '/u/user_x/work/**' and
'/u/user_x/work/release/**'. So '/u/user_x/work/release/**' is searched
three times and '/u/user_x/work/**' is searched twice.
In the above example you might want to set path to: >
:set path=**,/u/user_x/**
< This searches: >
/u/user_x/work/release/**
/u/user_x/**
< This searches the same directories, but in a different order.
vim:tw=78:ts=8:ft=help:norl:

File diff suppressed because it is too large Load Diff

56
runtime/doc/evim-fr.1 Normal file
View File

@ -0,0 +1,56 @@
.TH EVIM 1 "16 f<>vrier 2002 February 16"
.SH NAME
evim \- <20> Easy Vim <20>, <20>dite un fichier avec Vim sans utiliser les modes
.SH SYNOPSIS
.br
.B evim
[options] [fichier ...]
.br
.B eview
.SH DESCRIPTION
.B eVim
lance
.B Vim
et configure ses options afin qu'il se comporte comme un <20>diteur sans mode.
Cela reste Vim, mais vous pouvez l'utiliser comme un <20>diteur <20> cliquer-taper <20>.
Cela ressemble beaucoup <20> l'<27>dition avec Notepad sur MS-Windows.
.B eVim
ne fonctionne qu'avec l'interface graphique, qui est n<>cessaire pour permettre
l'utilisation des menus et de la barre d'outils.
.PP
Il n'est utile qu'aux personnes qui ne parviennent vraiment pas <20> utiliser Vim
de fa<66>on traditionnelle. L'<27>dition est alors bien moins efficace.
.PP
.B eview
fait la m<>me chose, mais d<>marre Vim en mode Lecture-seule.
Cela revient <20> lancer evim \-R.
.PP
Voir vim(1) pour davantage d'informations sur Vim, les options, etc.
.PP
L'option 'insertmode' est activ<69>e pour permettre de taper directement du texte.
.br
Les mappages sont configur<75>s pour que Copier et Coller fonctionnent avec les
raccourcis habituels de MS-Windows. CTRL-X coupe le texte, CTRL-C copie le
texte et CTRL-V colle le texte.
Vous pouvez utiliser CTRL-Q pour obtenir la fonction originale de CTRL-V.
.SH OPTIONS
Voir vim(1).
.SH FICHIERS
.TP 15
/usr/local/lib/vim/evim.vim
Le script charg<72> pour initialiser eVim.
.SH AUSSI CONNU SOUS
<EFBFBD>galement connu sous le nom <20> Vim pour gumbies <20> [N.D.T. : Flying Circus...].
Quand vous utilisez eVim, vous <20>tes cens<6E> prendre un mouchoir de poche,
faire un noeud <20> chaque coin et le porter sur votre t<>te.
.SH VOIR AUSSI
vim(1)
.SH AUTEUR
La majeure partie de
.B Vim
a <20>t<EFBFBD> <20>crite par Bram Moolenaar, avec l'aide de nombreux autres contributeurs.
Voir le menu Aide/Remerciements ou ":help credits" dans
.B Vim.
.SH TRADUCTION
Cette page de manuel a <20>t<EFBFBD> traduite David Blanchet.
<david.blanchet@free.fr> 2005-03-26.

View File

@ -0,0 +1,56 @@
.TH EVIM 1 "16 février 2002 February 16"
.SH NAME
evim \- « Easy Vim », édite un fichier avec Vim sans utiliser les modes
.SH SYNOPSIS
.br
.B evim
[options] [fichier ...]
.br
.B eview
.SH DESCRIPTION
.B eVim
lance
.B Vim
et configure ses options afin qu'il se comporte comme un éditeur sans mode.
Cela reste Vim, mais vous pouvez l'utiliser comme un éditeur « cliquer-taper ».
Cela ressemble beaucoup à l'édition avec Notepad sur MS-Windows.
.B eVim
ne fonctionne qu'avec l'interface graphique, qui est nécessaire pour permettre
l'utilisation des menus et de la barre d'outils.
.PP
Il n'est utile qu'aux personnes qui ne parviennent vraiment pas à utiliser Vim
de façon traditionnelle. L'édition est alors bien moins efficace.
.PP
.B eview
fait la même chose, mais démarre Vim en mode Lecture-seule.
Cela revient à lancer evim \-R.
.PP
Voir vim(1) pour davantage d'informations sur Vim, les options, etc.
.PP
L'option 'insertmode' est activée pour permettre de taper directement du texte.
.br
Les mappages sont configurés pour que Copier et Coller fonctionnent avec les
raccourcis habituels de MS-Windows. CTRL-X coupe le texte, CTRL-C copie le
texte et CTRL-V colle le texte.
Vous pouvez utiliser CTRL-Q pour obtenir la fonction originale de CTRL-V.
.SH OPTIONS
Voir vim(1).
.SH FICHIERS
.TP 15
/usr/local/lib/vim/evim.vim
Le script chargé pour initialiser eVim.
.SH AUSSI CONNU SOUS
Également connu sous le nom « Vim pour gumbies » [N.D.T. : Flying Circus...].
Quand vous utilisez eVim, vous êtes censé prendre un mouchoir de poche,
faire un noeud à chaque coin et le porter sur votre tête.
.SH VOIR AUSSI
vim(1)
.SH AUTEUR
La majeure partie de
.B Vim
a été écrite par Bram Moolenaar, avec l'aide de nombreux autres contributeurs.
Voir le menu Aide/Remerciements ou ":help credits" dans
.B Vim.
.SH TRADUCTION
Cette page de manuel a été traduite David Blanchet.
<david.blanchet@free.fr> 2005-03-26.

54
runtime/doc/evim-it.1 Executable file
View File

@ -0,0 +1,54 @@
.TH EVIM 1 "16 febbraio 2002 "
.SH NOME
evim \- Vim "facile", Vim impostato in modo da poter essere usato
facilmente per modificare file, anche da chi non abbia familiarit<69>
con i comandi.
.SH SINTASSI
.br
.B evim
[opzioni] [file ..]
.br
.B eview
.SH DESCRIZIONE
.B evim
Inizia
.B Vim
e imposta le opzioni per farlo comportare come un editore "modeless".
State sempre usando Vim, ma come un editore "posizionati-e-clicca".
Simile all'uso di Notepad in MS-Windows.
.B evim
richiede la presenza della GUI, per avere a disposizione menu e barra
strumenti.
.PP
Da usarsi solo da parte di chi non <20> in grado di lavorare con Vim nella
maniera usuale.
La modifica file sar<61> molto meno efficiente.
.PP
.B eview
come sopra, ma parte in modalit<69> "Sola Lettura". Funziona come evim \-R.
.PP
Vedere vim(1) per dettagli riguardo a Vim, opzioni, etc.
.PP
L'opzione 'insertmode' <20> impostata per poter immettere del testo direttamente.
.br
Sono definite delle mappature che consentono di usare COPIA e INCOLLA con i
familiari tasti usati sotto MS-Windows.
CTRL-X taglia testo, CTRL-C copia testo e CTRL-V incolla testo.
Usate CTRL-Q per ottenere quello chs si ottierrebbe con CTRL-V in Vim nativo.
.SH OPZIONI
Vedere vim(1).
.SH FILE
.TP 15
/usr/local/lib/vim/evim.vim
Lo script caricato per inizializzare eVim.
.SH NAC [NOTO ANCHE COME]
Noto Anche Come "Vim per semplici".
Quando usate evim si suppone che prendiate un fazzoletto,
facciate un nodo ad ogni angolo e ve lo mettiate in testa.
.SH VEDERE ANCHE
vim(1)
.SH AUTORE
Buona parte di
.B Vim
<EFBFBD> stato scritto da Bram Moolenaar, con molto aiuto da altri.
Vedere il Menu "Aiuto/Crediti".

View File

@ -0,0 +1,54 @@
.TH EVIM 1 "16 febbraio 2002 "
.SH NOME
evim \- Vim "facile", Vim impostato in modo da poter essere usato
facilmente per modificare file, anche da chi non abbia familiarità
con i comandi.
.SH SINTASSI
.br
.B evim
[opzioni] [file ..]
.br
.B eview
.SH DESCRIZIONE
.B evim
Inizia
.B Vim
e imposta le opzioni per farlo comportare come un editore "modeless".
State sempre usando Vim, ma come un editore "posizionati-e-clicca".
Simile all'uso di Notepad in MS-Windows.
.B evim
richiede la presenza della GUI, per avere a disposizione menu e barra
strumenti.
.PP
Da usarsi solo da parte di chi non è in grado di lavorare con Vim nella
maniera usuale.
La modifica file sarà molto meno efficiente.
.PP
.B eview
come sopra, ma parte in modalità "Sola Lettura". Funziona come evim \-R.
.PP
Vedere vim(1) per dettagli riguardo a Vim, opzioni, etc.
.PP
L'opzione 'insertmode' è impostata per poter immettere del testo direttamente.
.br
Sono definite delle mappature che consentono di usare COPIA e INCOLLA con i
familiari tasti usati sotto MS-Windows.
CTRL-X taglia testo, CTRL-C copia testo e CTRL-V incolla testo.
Usate CTRL-Q per ottenere quello chs si ottierrebbe con CTRL-V in Vim nativo.
.SH OPZIONI
Vedere vim(1).
.SH FILE
.TP 15
/usr/local/lib/vim/evim.vim
Lo script caricato per inizializzare eVim.
.SH NAC [NOTO ANCHE COME]
Noto Anche Come "Vim per semplici".
Quando usate evim si suppone che prendiate un fazzoletto,
facciate un nodo ad ogni angolo e ve lo mettiate in testa.
.SH VEDERE ANCHE
vim(1)
.SH AUTORE
Buona parte di
.B Vim
è stato scritto da Bram Moolenaar, con molto aiuto da altri.
Vedere il Menu "Aiuto/Crediti".

59
runtime/doc/evim-ru.1 Normal file
View File

@ -0,0 +1,59 @@
.TH EVIM 1 "2002 February 16"
.SH <EFBFBD><EFBFBD><EFBFBD>
evim \- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Vim, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Vim <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.SH <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.br
.B evim
[<5B><><EFBFBD><EFBFBD><EFBFBD>] [<5B><><EFBFBD><EFBFBD> ..]
.br
.B eview
.SH <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.B evim
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.B Vim
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Vim <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Notepad <20><> MS-Windows.
.B eVim
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
.PP
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> Vim <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Vim.
.PP
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.B eview
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>". <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
evim \-R.
.PP
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> Vim, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vim(1).
.PP
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.B evim
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 'insertmode', <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
.br
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MS-Windows
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. CTRL-X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, CTRL-C <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> CTRL-V <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CTRL-V, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CTRL-Q.
.SH <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>. vim(1).
.SH <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.TP 15
/usr/local/lib/vim/evim.vim
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> eVim.
.SH AKA
eVim <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> "Vim <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>".
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
.SH <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vim(1)
.SH <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
.B Vim
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Bram Moolenaar), <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>. <20><>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.

View File

@ -0,0 +1,59 @@
.TH EVIM 1 "2002 February 16"
.SH ИМЯ
evim \- простой Vim, позволяет редактировать файл с помощью Vim в безрежимном режиме
.SH КОМАНДНАЯ СТРОКА
.br
.B evim
[ключи] [файл ..]
.br
.B eview
.SH ОПИСАНИЕ
Команда
.B evim
запускает
.B Vim
и настраивает ряд опций таким образом, что он начинает вести себя
как обычный безрежимный редактор. В этом режиме Vim напоминает
Notepad из MS-Windows.
.B eVim
всегда запускается с поддержкой графического интерфейса, чтобы обеспечить
использование меню и инструментальной панели.
.PP
Эта команда создана для тех, кто по каким-то причинам не в состоянии
работать с Vim в обычном режиме. Редактирование файлов при этом происходит
гораздо менее эффективно, чем при использовании обычного Vim.
.PP
Команда
.B eview
выполняет почти ту же самую задачу, но файл открывается в режиме "только
для чтения". Использование этой команды полностью идентично использованию
evim \-R.
.PP
Подробнее о Vim, ключах запуска и т.п. смотрите на странице справочника
vim(1).
.PP
При использовании
.B evim
включается опция 'insertmode', что позволяет вводить текст напрямую.
.br
Кроме того, настраиваются привязки, позволяющие использовать кнопки MS-Windows
для выполнения команд копирования и вклейки. CTRL-X используется для вырезания
текста, CTRL-C для копирования и CTRL-V для вклейки. Чтобы воспользоваться
изначальным значением кнопки CTRL-V, используйте CTRL-Q.
.SH ПАРАМЕТРЫ ЗАПУСКА
См. vim(1).
.SH ФАЙЛЫ
.TP 15
/usr/local/lib/vim/evim.vim
Сценарий, который загружается для инициализации eVim.
.SH AKA
eVim также известен как "Vim для чайников".
Для наилучшего эффекта рекомендуется во время использования повязать
на голове платок, предварительно завязав на каждом конце по узелку.
.SH СМОТРИ ТАКЖЕ
vim(1)
.SH АВТОРЫ
Большая часть
.B Vim
создана Брамом Мооленааром (Bram Moolenaar), которому помогает огромное
количество людей. См. меню Справка/Благодарности.

View File

@ -21,7 +21,7 @@ Only to be used for people who really can't work with Vim in the normal way.
Editing will be much less efficient.
.PP
.B eview
is the same, but starts in read-only mode. It works just like evim -R.
is the same, but starts in read-only mode. It works just like evim \-R.
.PP
See vim(1) for details about Vim, options, etc.
.PP

View File

@ -1,4 +1,4 @@
*farsi.txt* For Vim version 7.0aa. Last change: 2004 Jun 16
*farsi.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Mortaza Ghassab Shiran
@ -42,7 +42,7 @@ o Changing keyboard mapping and reverse insert modes using a single
o Backing from reverse insert mode to the correct place in the file
(if possible).
o While in Farsi mode, numbers are entered from left to right. Upon entering
o While in Farsi mode, numbers are entered from left to right. Upon entering
a none number character, that character will be inserted just into the
left of the last number.
@ -54,8 +54,8 @@ o Farsi keymapping on the command line in reverse insert mode.
o Toggling between left-to-right and right-to-left via F8 function key.
o Toggling between Farsi ISIR-3342 standard encoding and VIM Farsi via F9
function key. Since this makes sense only for the text written in
o Toggling between Farsi ISIR-3342 standard encoding and Vim Farsi via F9
function key. Since this makes sense only for the text written in
right-to-left mode, this function is also supported only in right-to-left
mode.
@ -77,8 +77,8 @@ Font Installation
o Installation of fonts for MS Window systems (NT/95/98)
From 'Control Panel' folder, start the 'Fonts' program. Then from 'file'
menu item select 'Install New Fonts ...'. Browse and select the
From 'Control Panel' folder, start the 'Fonts' program. Then from 'file'
menu item select 'Install New Fonts ...'. Browse and select the
'far-a01.fon', then follow the installation guide.
NOTE: several people have reported that this does not work. The solution
is unknown.
@ -104,19 +104,19 @@ o Installation of fonts for X Window systems (SunOS)
o Installation of ASCII screen fonts (Unix/Linux)
For Linux system, copy the far-a01.f16 fonts into /usr/lib/kbd/consolefonts
directory and execute the setfont program as "setfont far-a01.f16". For
directory and execute the setfont program as "setfont far-a01.f16". For
other systems (e.g. SCO Unix), please refer to the fonts installation
section of your system administration manuals.
o Installation of ASCII screen fonts (DOS)
After system power on, prior to the first use of VIM, upload the Farsi
After system power on, prior to the first use of Vim, upload the Farsi
fonts by executing the far-a01.com font uploading program.
Usage
-----
Prior to starting VIM, the environment in which VIM can run in Farsi mode,
Prior to starting Vim, the environment in which Vim can run in Farsi mode,
must be set. In addition to installation of Farsi fonts, following points
refer to some of the system environments, which you may need to set:
Key code mapping, loading graphic card in ASCII screen mode, setting the IO
@ -124,26 +124,26 @@ driver in 8 bit clean mode ... .
o Setting the Farsi fonts
+ For VIM GUI set the 'guifont' to far-a01. This is done by entering
':set guifont=far-a01' in the VIM window.
+ For Vim GUI set the 'guifont' to far-a01. This is done by entering
':set guifont=far-a01' in the Vim window.
You can have 'guifont' set to far-a01 by VIM during the VIM startup
You can have 'guifont' set to far-a01 by Vim during the Vim startup
by appending the ':set guifont=far-a01' into your .vimrc file
(in case of NT/95/98 platforms _vimrc).
Under the X Window environment, you can also start the VIM with
Under the X Window environment, you can also start Vim with the
'-fn far-a01' option.
+ For the VIM within a xterm, start a xterm with the Farsi fonts (e.g.
kterm -fn far-a01). Then start the VIM inside the kterm.
+ For Vim within a xterm, start a xterm with the Farsi fonts (e.g.
kterm -fn far-a01). Then start Vim inside the kterm.
+ For VIM under DOS, prior to the first usage of VIM, upload the Farsi
+ For Vim under DOS, prior to the first usage of Vim, upload the Farsi
fonts by executing the far-a01.com fonts uploading program.
o Farsi Keymapping Activation
To activate the Farsi keymapping, set either 'altkeymap' or 'fkmap'.
This is done by entering ':set akm' or ':set fk' in the VIM window.
This is done by entering ':set akm' or ':set fk' in the Vim window.
You can have 'altkeymap' or 'fkmap' set as default by appending ':set akm'
or ':set fk' in your .vimrc file or _vimrc in case of NT/95/98 platforms.
@ -152,24 +152,24 @@ o Farsi Keymapping Activation
o right-to-left Farsi Mode
By default VIM starts in Left-to-right mode. Following are ways to change
By default Vim starts in Left-to-right mode. Following are ways to change
the window orientation:
+ Start the VIM with -F option (e.g. vim -F ... ).
+ Start Vim with the -F option (e.g. vim -F ...).
+ Use F8 function key to toggle between left-to-right and right-to-left.
+ Use the F8 function key to toggle between left-to-right and right-to-left.
+ While in Left-to-right mode, enter 'set rl' in the command line ('rl' is
the abbreviation for rightleft).
+ Put the 'set rl' line in your '.vimrc' file to start the VIM in
+ Put the 'set rl' line in your '.vimrc' file to start Vim in
right-to-left mode permanently.
Encoding
--------
The letter encoding used is the VIM extended ISIR-3342 standard with a built
in function to convert between VIM extended ISIR-3342 and ISIR-3342 standard.
The letter encoding used is the Vim extended ISIR-3342 standard with a built
in function to convert between Vim extended ISIR-3342 and ISIR-3342 standard.
For document portability reasons, the letter encoding is kept the same across
different platforms (i.e. UNIX's, NT/95/98, MS DOS, ...).
@ -183,11 +183,11 @@ o Keyboard
+ CTRL-_ moves the cursor to the end of the typed text in edit mode.
+ CTRL-_ in command mode only toggles keyboard mapping between Farsi(akm)/
Latin. The Farsi text is then entered in reverse insert mode.
Latin. The Farsi text is then entered in reverse insert mode.
+ F8 - Toggles between left-to-right and right-to-left.
+ F9 - Toggles the encoding between ISIR-3342 standard and VIM extended
+ F9 - Toggles the encoding between ISIR-3342 standard and Vim extended
ISIR-3342 (supported only in right-to-left mode).
+ Keyboard mapping is based on the Iranian ISIRI-2901 standard.
@ -231,28 +231,28 @@ o In insert/replace mode and fkmap (Farsi mode) set, CTRL-B is not
supported.
o If you change the character mapping between Latin/Farsi, the redo buffer
will be reset (emptied). That is, redo is valid and will function (using
will be reset (emptied). That is, redo is valid and will function (using
'.') only within the mode you are in.
o While numbers are entered in Farsi mode, the redo buffer will be reset
(emptied). That is, you can not redo the last changes (using '.') after
(emptied). That is, you cannot redo the last changes (using '.') after
entering numbers.
o While in left-to-right and Farsi mode set, CTRL-R is not supported.
o While in left-to-right mode and Farsi mode set, CTRL-R is not supported.
o While in right-to-left mode, the search on 'Latin' pattern does not work,
except if you enter the Latin search pattern in reverse.
o In the command mode, there is no support for entering the numbers from left
to right and also for the sake of the flexibility the keymapping logic is
o In command mode there is no support for entering numbers from left
to right and also for the sake of flexibility the keymapping logic is
restricted.
o Under X Window environment, if you want to run the VIM within a xterm
o Under the X Window environment, if you want to run Vim within a xterm
terminal emulator and Farsi mode set, you need to have an ANSI compatible
xterm terminal emulator. This is because the letter codes above 128 decimal
xterm terminal emulator. This is because the letter codes above 128 decimal
have certain meanings in the standard xterm terminal emulator.
Note: Under X Window environment, VIM GUI works fine in Farsi mode.
Note: Under X Window environment, Vim GUI works fine in Farsi mode.
This eliminates the need of any xterm terminal emulator.
@ -261,7 +261,7 @@ Bugs
While in insert/replace and Farsi mode set, if you repeatedly change the
cursor position (via cursor movement) and enter new text and then try to undo
the last change, the undo will lag one change behind. But as you continue to
undo, you will reach the original line of text. You can also use U to undo all
undo, you will reach the original line of text. You can also use U to undo all
changes made in the current line.
For more information about the bugs refer to rileft.txt.

View File

@ -1,4 +1,4 @@
*filetype.txt* For Vim version 7.0aa. Last change: 2004 Jun 24
*filetype.txt* For Vim version 7.0aa. Last change: 2005 Sep 16
VIM REFERENCE MANUAL by Bram Moolenaar
@ -44,15 +44,21 @@ Detail: The ":filetype on" command will load one of these files:
name, the file $VIMRUNTIME/scripts.vim is used to detect it from the
contents of the file.
To add your own file types, see |new-filetype| below.
To add your own file types, see |new-filetype| below. To search for help on a
filetype prepend "ft-" and optionally append "-syntax", "-indent" or
"-plugin". For example: >
:help ft-vim-indent
:help ft-vim-syntax
:help ft-man-plugin
If the file type is not detected automatically, or it finds the wrong type,
you can either set the 'filetype' option manually, or add a modeline to your
file. Example, for in an IDL file use the command: >
:set filetype=idl
or add this |modeline| to the file: >
/* vim: set filetype=idl : */
<
or add this |modeline| to the file:
/* vim: set filetype=idl : */ ~
*:filetype-plugin-on*
You can enable loading the plugin files for specific file types with: >
:filetype plugin on
@ -82,6 +88,9 @@ You can disable it again with: >
The filetype detection is not switched off then. But if you do switch off
filetype detection, the indent files will not be loaded either.
This actually loads the file "indoff.vim" in 'runtimepath'.
This disables auto-indenting for files you will open. It will keep working in
already opened files. Reset 'autoindent', 'cindent', 'smartindent' and/or
'indentexpr' to disable indenting in an opened file.
*:filetype-off*
To disable file type detection, use this command: >
@ -129,16 +138,16 @@ kind of file it is. This doesn't always work. A number of global variables
can be used to overrule the filetype used for certain extensions:
file name variable ~
*.asa g:filetype_asa |aspvbs-syntax| |aspperl-syntax|
*.asp g:filetype_asp |aspvbs-syntax| |aspperl-syntax|
*.asm g:asmsyntax |asm-syntax|
*.asa g:filetype_asa |ft-aspvbs-syntax| |ft-aspperl-syntax|
*.asp g:filetype_asp |ft-aspvbs-syntax| |ft-aspperl-syntax|
*.asm g:asmsyntax |ft-asm-syntax|
*.prg g:filetype_prg
*.pl g:filetype_pl
*.inc g:filetype_inc
*.w g:filetype_w |cweb-syntax|
*.i g:filetype_i |progress-syntax|
*.p g:filetype_p |pascal-syntax|
*.sh g:bash_is_sh |sh-syntax|
*.w g:filetype_w |ft-cweb-syntax|
*.i g:filetype_i |ft-progress-syntax|
*.p g:filetype_p |ft-pascal-syntax|
*.sh g:bash_is_sh |ft-sh-syntax|
*filetype-ignore*
To avoid that certain files are being inspected, the g:ft_ignore_pat variable
@ -147,7 +156,7 @@ is used. The default value is set like this: >
This means that the contents of compressed files are not inspected.
*new-filetype*
If a file type that you want to use is not detected yet, there are three ways
If a file type that you want to use is not detected yet, there are four ways
to add it. In any way, it's better not to modify the $VIMRUNTIME/filetype.vim
file. It will be overwritten when installing a new version of Vim.
@ -155,7 +164,7 @@ A. If you want to overrule all default file type checks.
This works by writing one file for each filetype. The disadvantage is that
means there can be many files. The advantage is that you can simply drop
this file in the right directory to make it work.
*ftdetect*
1. Create your user runtime directory. You would normally use the first
item of the 'runtimepath' option. Then create the directory "ftdetect"
inside it. Example for Unix: >
@ -175,7 +184,8 @@ A. If you want to overrule all default file type checks.
< 3. To use the new filetype detection you must restart Vim.
The files in the "ftdetect" directory are used after all the default
checks, thus they can overrule a previously detected file type.
checks, thus they can overrule a previously detected file type. But you
can also use |:setfiletype| to keep a previously detected filetype.
B. If you want to detect your file after the default file type checks.
@ -377,9 +387,9 @@ ways to change this:
3. Docs for the default filetype plugins. *ftplugin-docs*
CHANGELOG *changelog-plugin*
CHANGELOG *ft-changelog-plugin*
Allows for easy entrance of Changelog entries in Changelog files. There are
Allows for easy entrance of Changelog entries in Changelog files. There are
some commands, mappings, and variables worth exploring:
Options:
@ -398,7 +408,7 @@ Local mappings:
Global mappings:
NOTE: The global mappings are accessed by sourcing the
ftplugin/changelog.vim file first, e.g. with >
runtime ftplugin/man.vim
runtime ftplugin/changelog.vim
< in your |.vimrc|.
<Leader>o Switches to the ChangeLog buffer opened for the
current directory, or opens it in a new buffer if it
@ -459,11 +469,11 @@ g:changelog_date_entry_search
The Changelog entries are inserted where they add the least amount of text.
After figuring out the current date and user, the file is searched for an
entry beginning with the current date and user and if found adds another item
under it. If not found, a new entry and item is prepended to the beginning of
under it. If not found, a new entry and item is prepended to the beginning of
the Changelog.
FORTRAN *fortran-plugin*
FORTRAN *ft-fortran-plugin*
Options:
'expandtab' is switched on to avoid tabs as required by the Fortran
@ -471,12 +481,12 @@ Options:
'textwidth' is set to 72 for fixed source format as required by the
Fortran standards and to 80 for free source format.
'formatoptions' is set to break code and comment lines and to preserve long
lines. You can format comments with |gq|.
lines. You can format comments with |gq|.
For further discussion of fortran_have_tabs and the method used for the
detection of source format see |fortran-syntax|.
detection of source format see |ft-fortran-syntax|.
MAIL *mail-plugin*
MAIL *ft-mail-plugin*
Options:
'modeline' is switched off to avoid the danger of trojan horses, and to
@ -493,7 +503,7 @@ Local mappings:
to the end of the file in Normal mode. This means "> " is inserted in
each line.
MAN *man-plugin* *:Man*
MAN *ft-man-plugin* *:Man*
Displays a manual page in a nice way. Also see the user manual
|find-manpage|.
@ -520,7 +530,7 @@ CTRL-] Jump to the manual page for the word under the cursor.
CTRL-T Jump back to the previous manual page.
RPM SPEC *spec-plugin*
RPM SPEC *ft-spec-plugin*
Since the text for this plugin is rather long it has been put in a separate
file: |pi_spec.txt|.

View File

@ -1,4 +1,4 @@
*fold.txt* For Vim version 7.0aa. Last change: 2004 Jun 14
*fold.txt* For Vim version 7.0aa. Last change: 2005 Sep 10
VIM REFERENCE MANUAL by Bram Moolenaar
@ -190,11 +190,11 @@ and the level given by the marker:
3. if a marker with a lower fold level is found, all folds up to and including
this level end and a fold with the specified level starts.
The number indicates the fold level. A zero cannot be used.
You can use "}}}" with a digit to indicate the level of the fold that
ends. The fold level of the following line will be one less than the
indicated level. Note that Vim doesn't look back to the level of the matching
marker (that would take too much time). Example: >
The number indicates the fold level. A zero cannot be used (a marker with
level zero is ignored). You can use "}}}" with a digit to indicate the level
of the fold that ends. The fold level of the following line will be one less
than the indicated level. Note that Vim doesn't look back to the level of the
matching marker (that would take too much time). Example: >
{{{1
fold level here is 1
@ -279,7 +279,7 @@ zF Create a fold for N lines. Works like "zf".
Create a fold for the lines in {range}. Works like "zf".
*zd* *E351*
zd Delete one fold at the cursor. When the cursor is on folded
zd Delete one fold at the cursor. When the cursor is on a folded
line, that fold is deleted. Nested folds are moved one level
up. In Visual mode all folds (partially) in the selected area
are deleted. Careful: This easily deletes more folds than you
@ -330,7 +330,7 @@ zC Close all folds under the cursor recursively. Folds that
'foldenable' will be set.
*za*
za When on a closed fold: open it. When folds are nested, you
za When on a closed fold: open it. When folds are nested, you
may have to use "za" several times. When a count is given,
that many closed folds are opened.
When on an open fold: close it and set 'foldenable'. This
@ -457,7 +457,7 @@ FOLDLEVEL *fold-foldlevel*
'foldlevel' is a number option: The higher the more folded regions are open.
When 'foldlevel' is 0, all folds are closed.
When 'foldlevel' is positive, some folds closed.
When 'foldlevel' is positive, some folds are closed.
When 'foldlevel' is very high, all folds are open.
'foldlevel' is applied when it is changed. After that manually folds can be
opened and closed.
@ -512,7 +512,8 @@ FOLDCOLUMN *fold-foldcolumn*
'foldcolumn' is a number, which sets the width for a column on the side of the
window to indicate folds. When it is zero, there is no foldcolumn. A normal
value is 4 or 5. The minimal useful value is 2. The maximum is 12.
value is 4 or 5. The minimal useful value is 2, although 1 still provides
some information. The maximum is 12.
An open fold is indicated with a column that has a '-' at the top and '|'
characters below it. This column stops where the open fold stops. When folds

View File

@ -1,4 +1,4 @@
*gui.txt* For Vim version 7.0aa. Last change: 2004 Jun 15
*gui.txt* For Vim version 7.0aa. Last change: 2006 Feb 21
VIM REFERENCE MANUAL by Bram Moolenaar
@ -25,8 +25,8 @@ Other GUI documentation:
First you must make sure you actually have a version of Vim with the GUI code
included. You can check this with the ":version" command, it should include
"+GUI_Athena", "+GUI_BeOS", "+GUI_GTK", "+GUI_KDE", "+GUI_Motif" or
"MS-Windows ... bit GUI version".
"+GUI_Athena", "+GUI_GTK", "+GUI_KDE", "+GUI_Motif" or "MS-Windows ... bit
GUI version".
How to start the GUI depends on the system used. Mostly you can run the
GUI version of Vim with:
@ -37,7 +37,8 @@ The X11 version of Vim can run both in GUI and in non-GUI mode. See
*gui-init* *gvimrc* *.gvimrc* *_gvimrc*
When the GUI starts up initializations are carried out, in this order:
- The termcap options are reset to their default value for the GUI.
- The 'term' option is set to "builgin_gui" and terminal options are reset to
their default value for the GUI |terminal-options|.
- If the system menu file exists, it is sourced. The name of this file is
normally "$VIMRUNTIME/menu.vim". You can check this with ":version". Also
see |$VIMRUNTIME|. To skip loading the system menu include 'M' in
@ -52,7 +53,8 @@ When the GUI starts up initializations are carried out, in this order:
:let bmenu_max_pathlen = 50
- If the "-U {gvimrc}" command-line option has been used when starting Vim,
the {gvimrc} file will be read for initializations. The following
initializations are skipped.
initializations are skipped. When {gvimrc} is "NONE" no file will be read
for initializations.
- For Unix and MS-Windows, if the system gvimrc exists, it is sourced. The
name of this file is normally "$VIM/gvimrc". You can check this with
":version". Also see |$VIM|.
@ -78,7 +80,7 @@ All this happens AFTER the normal Vim initializations, like reading your
But the GUI window is only opened after all the initializations have been
carried out. If you want some commands to be executed just after opening the
GUI window, use the |GUIEnter| autocommand event. Example: >
:autocommand GUIEnter * winpos 100 50
:autocmd GUIEnter * winpos 100 50
You can use the gvimrc files to set up your own customized menus (see |:menu|)
and initialize other things that you may want to set up differently from the
@ -143,7 +145,7 @@ window Vim is running in with this command: >
==============================================================================
2. Scrollbars *gui-scrollbars*
There are vertical scrollbars and a horizontal scrollbars. You may
There are vertical scrollbars and a horizontal scrollbar. You may
configure which ones appear with the 'guioptions' option.
The interface looks like this (with ":set guioptions=mlrb"):
@ -183,7 +185,7 @@ When the scrollbar is dragged all the way down, the last line of the file
will appear in the top of the window.
If a window is shrunk to zero height (by the growth of another window) its
scrollbar disappears. It reappears when the window is restored.
scrollbar disappears. It reappears when the window is restored.
If a window is vertically split, it will get a scrollbar when it is the
current window and when, taking the middle of the current window and drawing a
@ -202,11 +204,11 @@ scrolled as far as possible left and right. The cursor is moved when
necessary, it must remain on a visible character (unless 'virtualedit' is
set).
Computing the length of the longest visible takes quite a bit of computation,
and it has to be done every time something changes. If this takes too much
time or you don't like the cursor jumping to another line, include the 'h'
flag in 'guioptions'. Then the scrolling is limited by the text of the
current cursor line.
Computing the length of the longest visible line takes quite a bit of
computation, and it has to be done every time something changes. If this
takes too much time or you don't like the cursor jumping to another line,
include the 'h' flag in 'guioptions'. Then the scrolling is limited by the
text of the current cursor line.
*athena-intellimouse*
If you have an Intellimouse and an X server that supports using the wheel,
@ -407,7 +409,7 @@ used - you should read whichever of these is appropriate now).
*clipboard*
There is a special register for storing this selection, it is the "*
register. Nothing is put in here unless the information about what text is
selected is about to change (eg with a left mouse click somewhere), or when
selected is about to change (e.g. with a left mouse click somewhere), or when
another application wants to paste the selected text. Then the text is put
in the "* register. For example, to cut a line and make it the current
selection/put it on the clipboard: >
@ -503,7 +505,7 @@ floating menus that do not appear on the main menu bar.
*E328* *E329* *E337*
To create a new menu item, use the ":menu" commands. They are mostly like
the ":map" set of commands but the first argument is a menu item name, given
as a path of menus and submenus with a '.' between them. eg: >
as a path of menus and submenus with a '.' between them, e.g.: >
:menu File.Save :w<CR>
:inoremenu File.Save <C-O>:w<CR>
@ -647,9 +649,9 @@ simple.
*gui-toolbar*
The toolbar is currently available in the Win32, Athena, Motif, GTK+ (X11),
KDE and Photon GUI. It should turn up in other GUIs in due course. The default
toolbar is setup in menu.vim.
The display of the toolbar is controlled by the 'guioptions' letter 'T'. You
KDE and Photon GUI. It should turn up in other GUIs in due course. The
default toolbar is setup in menu.vim.
The display of the toolbar is controlled by the 'guioptions' letter 'T'. You
can thus have menu & toolbar together, or either on its own, or neither.
The appearance is controlled by the 'toolbar' option. You can chose between
an image, text or both.
@ -660,7 +662,7 @@ level. Vim interprets the items in this menu as follows:
1) If an "icon=" argument was specified, the file with this name is used.
The file can either be specified with the full path or with the base name.
In the last case it is searched for in the "bitmaps" directory in
'runtimepath', like in point 3). Examples: >
'runtimepath', like in point 3. Examples: >
:amenu icon=/usr/local/pixmaps/foo_icon.xpm ToolBar.Foo :echo "Foo"<CR>
:amenu icon=FooIcon ToolBar.Foo :echo "Foo"<CR>
< Note that in the first case the extension is included, while in the second
@ -670,7 +672,7 @@ level. Vim interprets the items in this menu as follows:
A menu priority must come _after_ the icon argument: >
:amenu icon=foo 1.42 ToolBar.Foo :echo "42!"<CR>
2) An item called 'BuiltIn##', where ## is a number, is taken as number ## of
the built-in bitmaps available in Vim. Currently there are 31 numbered
the built-in bitmaps available in Vim. Currently there are 31 numbered
from 0 to 30 which cover most common editing operations |builtin-tools|. >
:amenu ToolBar.BuiltIn22 :call SearchNext("back")<CR>
3) An item with another name is first searched for in the directory
@ -735,9 +737,9 @@ from the main menu bar. You must then use the |:popup| or |:tearoff| command
to display it.
*popup-menu*
In the Win32, KDE, GTK+, Motif, Athena and Photon GUI, you can define the special
menu "PopUp". This is the menu that is displayed when the right mouse button
is pressed, if 'mousemodel' is set to popup or popup_setpos.
In the Win32, KDE, GTK+, Motif, Athena and Photon GUI, you can define the
special menu "PopUp". This is the menu that is displayed when the right mouse
button is pressed, if 'mousemodel' is set to popup or popup_setpos.
5.3 Showing What Menus Are Mapped To *showing-menus*
@ -746,7 +748,7 @@ To see what an existing menu is mapped to, use just one argument after the
menu commands (just like you would with the ":map" commands). If the menu
specified is a submenu, then all menus under that hierarchy will be shown.
If no argument is given after :menu at all, then ALL menu items are shown
for the appropriate mode (eg, Command-line mode for :cmenu).
for the appropriate mode (e.g., Command-line mode for :cmenu).
Special characters in the list, just before the rhs:
* The menu was defined with "nore" to disallow remapping.
@ -855,7 +857,7 @@ See section |42.4| in the user manual.
When a tip is defined for a menu item, it appears in the command-line area
when the mouse is over that item, much like a standard Windows menu hint in
the status bar. (Except when Vim is in Command-line mode, when of course
the status bar. (Except when Vim is in Command-line mode, when of course
nothing is displayed.)
When a tip is defined for a ToolBar item, it appears as a tooltip when the
mouse pauses over that button, in the usual fashion. Use the |hl-Tooltip|
@ -869,7 +871,7 @@ The tip is defined like this: >
And delete it with: >
:tunmenu MyMenu.Hello
Tooltips are currently only supported for the X11 and Win32 GUI. However, they
Tooltips are currently only supported for the X11 and Win32 GUI. However, they
should appear for the other gui platforms in the not too distant future.
The ":tmenu" command works just like other menu commands, it uses the same
@ -896,9 +898,13 @@ it behaves in a strange way.
appear on the menu-bar (see |hidden-menus|).
{only available for Win32 and GTK GUI}
:popu[p]! {name} Like above, but use the position of the mouse
pointer instead of the cursor.
Example: >
:popup File
will make the "File" menu (if there is one) appear at the text cursor. >
will make the "File" menu (if there is one) appear at the text cursor (mouse
pointer if ! was used). >
:amenu ]Toolbar.Make :make<CR>
:popup ]Toolbar
@ -919,7 +925,7 @@ This section describes other features which are related to the GUI.
get "<Modifiers-Key>".
- In the GUI, the modifiers SHIFT, CTRL, and ALT (or META) may be used within
mappings of special keys and mouse events. eg: :map <M-LeftDrag> <LeftDrag>
mappings of special keys and mouse events. E.g.: :map <M-LeftDrag> <LeftDrag>
- In the GUI, several normal keys may have modifiers in mappings etc, these
are <Space>, <Tab>, <NL>, <CR>, <Esc>.
@ -949,6 +955,9 @@ This section describes other features which are related to the GUI.
endif
endif
A recommended Japanese font is MS Mincho. You can find info here:
http://www.lexikan.com/mincho.htm
==============================================================================
7. Shell Commands *gui-shell*

View File

@ -1,4 +1,4 @@
*gui_w16.txt* For Vim version 7.0aa. Last change: 2001 Sep 03
*gui_w16.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Bram Moolenaar
@ -21,32 +21,32 @@ Other relevant documentation:
{Vi does not have a Windows GUI}
The Win16 version of Vim will run on Windows 3.1 or later. It has not been
The Win16 version of Vim will run on Windows 3.1 or later. It has not been
tested on 3.0, it probably won't work without being recompiled and
modified. (but you really should upgrade to 3.11 anyway. :)
modified. (But you really should upgrade to 3.11 anyway. :)
In most respects it behaves identically to the Win32 GUI version, including
having a flat-style toolbar(!). The chief differences:
having a flat-style toolbar(!). The chief differences:
1) Bold/Italic text is not available, to speed up repaint/reduce resource
usage. (You can re-instate this by undefining MSWIN16_FASTTEXT.)
usage. (You can re-instate this by undefining MSWIN16_FASTTEXT.)
2) No tearoff menu emulation.
3) No OLE interface.
4) No long filename support (of course)
4) No long filename support (of course).
5) No tooltips on toolbar buttons - instead they produce command-line tips
like menu items do.
6) Line length limited to 32767 characters (like 16-bit DOS version)
6) Line length limited to 32767 characters (like 16-bit DOS version).
==============================================================================
1. Starting the GUI *win16-start*
The Win16 GUI version of Vim will always start the GUI, no matter how you
start it or what it's called. There is no 'console' version as such, but you
start it or what it's called. There is no 'console' version as such, but you
can use one of the DOS versions in a DOS box.
The Win16 GUI has an extra menu item: "Window/Select Font". It brings up the
standard Windows font selector. Note that bold and italic fonts are not
standard Windows font selector. Note that bold and italic fonts are not
supported in an attempt to maximize GDI drawing speed.
Setting the menu height doesn't work for the Win16 GUI.
@ -82,7 +82,7 @@ The clipboard works in the same way as the Win32 version: see |gui-clipboard|.
4. Shell Commands *win16-shell*
Vim spawns a DOS window for external commands, to make it possible to run any
DOS command. The window uses the _default.pif settings.
DOS command. The window uses the _default.pif settings.
*win16-!start*
Normally, Vim waits for a command to complete before continuing (this makes
@ -135,7 +135,7 @@ as the traditional interface shared with the console version.
6.1 Dialogs
The dialogs displayed by the "confirm" family (i.e. the 'confirm' option,
|:confirm| command and |confirm()| function are GUI-based rather than the
|:confirm| command and |confirm()| function) are GUI-based rather than the
console-based ones used by other versions. There is no option to change this.
@ -157,7 +157,7 @@ PrintFile. See $VIMRUNTIME/menu.vim for how it works by default.
Using this should also work: >
:w >>prn
Vim supports a number of standard MS Windows features. Some of these are
Vim supports a number of standard MS Windows features. Some of these are
detailed elsewhere: see |'mouse'|, |win32-hidden-menus|.
Also see |:simalt|
@ -176,11 +176,11 @@ names with any Ex command.
*win16-truetype*
It is recommended that you use a raster font and not a TrueType
fixed-pitch font. e.g. Use Courier, not Courier New. This is not just
fixed-pitch font. E.g. use Courier, not Courier New. This is not just
to use less resources but because there are subtle bugs in the
handling of fixed-pitch TrueType in Win3.1x. In particular, when you move
handling of fixed-pitch TrueType in Win3.1x. In particular, when you move
a block cursor over a pipe character '|', the cursor is drawn in the wrong
size and bits get left behind. This is a bug in the Win3.1x GDI, it doesn't
size and bits get left behind. This is a bug in the Win3.1x GDI, it doesn't
happen if you run the exe under 95/NT.
vim:tw=78:sw=4:ts=8:ft=help:norl:

View File

@ -1,4 +1,4 @@
*gui_w32.txt* For Vim version 7.0aa. Last change: 2004 May 03
*gui_w32.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Bram Moolenaar
@ -58,7 +58,7 @@ of Windows 3.1 or 3.11. See |win32s|.
To set Vim as the default editor for a file type:
1. Start a Windows Explorer
2. Chose View/Options -> File Types
2. Choose View/Options -> File Types
3. Select the path to gvim for every file type that you want to use it for.
(you can also use three spaces in the file type field, for files without an
extension).
@ -233,7 +233,9 @@ $VIMRUNTIME/mswin.vim script. You could add this line to your _vimrc file: >
Since CTRL-C is used to copy the text to the clipboard, it can't be used to
cancel an operation. Use CTRL-Break for that.
*CTRL-V-alternative*
CTRL-Z is used for undo. This means you can't suspend Vim.
*CTRL-V-alternative* *CTRL-Q*
Since CTRL-V is used to paste, you can't use it to start a blockwise Visual
selection. You can use CTRL-Q instead. You can also use CTRL-Q in Insert
mode and Command-line mode to get the old meaning of CTRL-V. But CTRL-Q
@ -260,8 +262,8 @@ question if you really want to kill the application, Vim may be killed too!
In Windows 95, the window in which the commands are executed is always 25x80
characters, to be as DOS compatible as possible (this matters!). The default
system font is used. On NT, the window will be the default you have set up for
"Console" in Control Panel. On Win32s, the properties of the DOS box are
system font is used. On NT, the window will be the default you have set up for
"Console" in Control Panel. On Win32s, the properties of the DOS box are
determined by _default.pif in the windows directory.
*msdos-mode*
@ -281,7 +283,7 @@ sense for most shell commands which produce output for Vim to use). If you
want Vim to start a program and return immediately, you can use the following
syntax on W95 & NT: >
:!start {command}
On Win32s, you will have to go to another window instead. Don't forget that
On Win32s, you will have to go to another window instead. Don't forget that
you must tell Windows 3.1x to keep executing a DOS command in the background
while you switch back to Vim.
@ -293,7 +295,7 @@ On Win32, the normal DOS colors can be used. See |dos-colors|.
Additionally the system configured colors can also be used. These are known
by the names Sys_XXX, where XXX is the appropriate system color name, from the
following list (see the Win32 documentation for full descriptions). Case is
ignored. note: On Win32s not all of these colors are supported.
ignored. Note: On Win32s not all of these colors are supported.
Sys_3DDKShadow Sys_3DFace Sys_BTNFace
Sys_3DHilight Sys_3DHighlight Sys_BTNHilight
@ -364,7 +366,7 @@ without having to go to the menu bar each time.
This is most useful if you find yourself using a command buried in a sub-menu
over and over again.
The tearoff menus can be positioned where you like, and always stay just above
the Main Vim window. You can get rid of them by closing them as usual; they
the Main Vim window. You can get rid of them by closing them as usual; they
also of course close when you exit Vim.
*:tearoff* *:te*
@ -398,7 +400,7 @@ The rules are:
b) Parameters are separated by white space.
c) A parameter can be enclosed in double quotes to include white space.
d) A sequence of zero or more backslashes (\) and a double quote (")
is special. The effective number of backslashes is halved, rounded
is special. The effective number of backslashes is halved, rounded
down. An even number of backslashes reverses the acceptability of
spaces and tabs, an odd number of backslashes produces a literal
double quote.
@ -427,7 +429,7 @@ The "File/Print" menu prints the text with syntax highlighting, see
printer installed this should also work: >
:w >>prn
Vim supports a number of standard MS Windows features. Some of these are
Vim supports a number of standard MS Windows features. Some of these are
detailed elsewhere: see |'mouse'|, |win32-hidden-menus|.
*drag-n-drop-win32*
@ -439,7 +441,7 @@ be opened as normal. See |drag-n-drop|.
{not in Vi} {only for Win32 versions}
Normally, Vim takes control of all Alt-<Key> combinations, to increase the
number of possible mappings. This clashes with the standard use of Alt as the
number of possible mappings. This clashes with the standard use of Alt as the
key for accessing menus.
The quick way of getting standard behavior is to set the 'winaltkeys' option
to "yes". This however prevents you from mapping Alt keys at all.
@ -447,18 +449,18 @@ Another way is to set 'winaltkeys' to "menu". Menu shortcut keys are then
handled by windows, other ALT keys can be mapped. This doesn't allow a
dependency on the current state though.
To get round this, the :simalt command allows Vim (when 'winaltkeys' is not
"yes") to fake a Windows-style Alt keypress. You can use this to map Alt key
"yes") to fake a Windows-style Alt keypress. You can use this to map Alt key
combinations (or anything else for that matter) to produce standard Windows
actions. Here are some examples: >
actions. Here are some examples: >
:map <M-f> :simalt f<CR>
This makes Alt-F pop down the 'File' menu (with the stock Menu.vim) by
simulating the keystrokes Alt, F. >
:map <M-Space> :simalt ~<CR>
This maps Alt-Space to pop down the system menu for the Vim window. Note that
This maps Alt-Space to pop down the system menu for the Vim window. Note that
~ is used by simalt to represent the <Space> character. >
:map <C-n> :simalt ~n<CR>
Maps Control-N to produce the keys Alt-Space followed by N. This minimizes the
Maps Control-N to produce the keys Alt-Space followed by N. This minimizes the
Vim window via the system menu.
*intellimouse-wheel-problems*

View File

@ -1,4 +1,4 @@
*gui_x11.txt* For Vim version 7.0aa. Last change: 2004 Jul 02
*gui_x11.txt* For Vim version 7.0aa. Last change: 2005 Dec 06
VIM REFERENCE MANUAL by Bram Moolenaar
@ -113,7 +113,7 @@ same. Note that some fonts that have the same point size don't have the same
pixel size! Additionally, the positioning of the fonts must be the same
(ascent and descent). You can check this with "xlsfonts -l {fontname}".
If any of these things are also set with Vim commands, eg with
If any of these things are also set with Vim commands, e.g. with
":set guifont=Screen15", then this will override the X resources (currently
'guifont' is the only option that is supported).
@ -437,56 +437,9 @@ command line argument).
==============================================================================
7. KDE version *gui-kde* *kde* *KDE* *KVim*
The KDE version of Vim works with KDE 2.x and KDE 3.x.
KVim (name code for gui-kde) does not use traditional X settings for its
configuration.
Most important difference is the font handling, KVim uses QFont to display the
text. To set your font use the following syntax :
>
:set guifont=Fixed\ [Misc]/10/-1/5/50/0/0/0/1/0
<
the '10' value is the font size, other settings concerns more specific Qt
options which you should not need to care with.
The suggested way to choose your font is through the font selection dialog
available with the command :
:set guifont=*
Note: X Font names are not supported any more, so if you use GVim too, you'll
have to set something like this in your ~/.gvimrc : >
if has("gui_kde")
:set guifont=Fixed\ [Misc]/10/-1/5/50/0/0/0/1/0
else if has("gui_gtk")
:set guifont=-misc-fixed-medium-r-normal-*-*-100-*-*-c-*-iso10646-1
endif
<
*antialias*
KVim uses antialias for its font, so that the text looks better, to disable
this you have to refer to Qt's documentation (export QT_XFT=0 for QT 2.x).
KDE provides some other features, like being able to move the menubar and the
toolbar wherever you want around the text area.
*kde-toolbar*
KVim can be used with a KDE-look toolbar instead of Vim's default toolbar. To
enable this feature you have to run the configure script with the
--enable-kde-toolbar switch. It may be moved to a runtime option in the
future.
*DCOP*
Since Vim 6.0, the new ClientServer feature has been added, it works fine in
KVim too. KVim also provides its own communication scheme based on DCOP. This
is mainly used by the |vimpart| but can freely be used by other applications
or manually through KDE's DCOP tools. The DCOP servername is synchronized with
the X11 servername so that it's easier to identify the same KVim through the
two communication systems.
*vimpart* *vim-kpart*
KVim developers are also working on a component to allow embedding of Vim into
KDE's applications. As of this writing, the component is working and can be
used in different KDE applications. New KDE applications should support it
soon. To get more information about this component, refer to
http://freehackers.org/kvim or to the KDE project.
There is no KDE version of Vim. There has been some work on a port using the
Qt toolkit, but it never worked properly and it has been abandoned. Work
continues on Yzis: www.yzis.org.
==============================================================================
8. Compiling *gui-x11-compiling*

View File

@ -1,4 +1,4 @@
*hangulin.txt* For Vim version 7.0aa. Last change: 2001 Sep 03
*hangulin.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Chi-Deok Hwang and Sung-Hyun Nam
@ -7,17 +7,17 @@ Introduction *hangul*
------------
It is to input hangul, the Korean language, with VIM GUI version.
If you have a XIM program, you can use another |+xim| feature.
Basically, it is for whom has no XIM program.
Basically, it is for anybody who has no XIM program.
Compile
-------
Next is a basic option. You can add any other configure option. >
Next is a basic option. You can add any other configure option. >
./configure --with-x --enable-multibyte --enable-fontset --enable-hangulinput
And you should check the feature.h. If |+hangul_input| feature is enabled
And you should check feature.h. If |+hangul_input| feature is enabled
by configure, you can select more options such as keyboard type, 2 bulsik
or 3 bulsik. You can find keywords like next in there. >
or 3 bulsik. You can find keywords like next in there. >
#define HANGUL_DEFAULT_KEYBOARD 2
#define ESC_CHG_TO_ENG_MODE
@ -38,7 +38,7 @@ You should add nexts to your global vimrc ($HOME/.vimrc). >
Keyboard
--------
You can change keyboard type (2 bulsik or 3 bulsik) using VIM_KEYBOARD
or HANGUL_KEYBOARD_TYPE environment variables. For sh, just do (2 bulsik): >
or HANGUL_KEYBOARD_TYPE environment variables. For sh, just do (2 bulsik): >
export VIM_KEYBOARD="2"
or >
@ -67,9 +67,9 @@ $HOME/.gvimrc: >
attention! the , (comma) or ; (semicolon)
And there should be no ':set guifont'. If it exists, then Gvim ignores
':set guifontset'. It means VIM runs without fontset supporting.
So, you can see only English. Hangul does not be correctly displayed.
And there should be no ':set guifont'. If it exists, then Gvim ignores
':set guifontset'. It means VIM runs without fontset supporting.
So, you can see only English. Hangul does not be correctly displayed.
After 'fontset' feature is enabled, VIM does not allow using 'font'.
For example, if you use >
@ -78,17 +78,17 @@ in your .gvimrc, then you should do for syntax >
:hi Comment guifg=Cyan font=another_eng_font,another_your_font
If you just do >
:hi Comment font=another_eng_font
then you can see a GOOD error message. Be careful!
then you can see a GOOD error message. Be careful!
hangul_font width should be twice than english_font width.
Unsupported Feature
-------------------
Johab font not yet supported. And I don't have any plan.
Johab font not yet supported. And I don't have any plan.
If you really want to use johab font, you can use the
hanguldraw.c in gau package.
Hanja input not yet supported. And I don't have any plan.
Hanja input not yet supported. And I don't have any plan.
If you really want to input hanja, just use VIM with hanterm.
Bug or Comment

View File

@ -1,4 +1,4 @@
*help.txt* For Vim version 7.0aa. Last change: 2004 Jul 05
*help.txt* For Vim version 7.0aa. Last change: 2006 Feb 18
VIM - main help file
k
@ -17,13 +17,13 @@ Get specific help: It is possible to go directly to whatever you want help
It is possible to further specify the context:
*help-context*
WHAT PREPEND EXAMPLE ~
Normal mode commands (nothing) :help x
Visual mode commands v_ :help v_u
Insert mode commands i_ :help i_<Esc>
Command-line commands : :help :quit
Normal mode command (nothing) :help x
Visual mode command v_ :help v_u
Insert mode command i_ :help i_<Esc>
Command-line command : :help :quit
Command-line editing c_ :help c_<Del>
Vim command arguments - :help -r
Options ' :help 'textwidth'
Vim command argument - :help -r
Option ' :help 'textwidth'
Search for help: Type ":help word", then hit CTRL-D to see matching
help entries for "word".
@ -97,6 +97,7 @@ General subjects ~
|quotes.txt| remarks from users of Vim
|todo.txt| known problems and desired extensions
|develop.txt| development of Vim
|debug.txt| debugging Vim itself
|uganda.txt| Vim distribution conditions and what to do with your money
Basic editing ~
@ -121,7 +122,9 @@ Advanced editing ~
|tagsrch.txt| tags and special searches
|quickfix.txt| commands for a quick edit-compile-fix cycle
|windows.txt| commands for using multiple windows and buffers
|tabpage.txt| commands for using multiple tab pages
|syntax.txt| syntax highlighting
|spell.txt| spell checking
|diff.txt| working with two or three versions of the same file
|autocmd.txt| automatically executing commands on an event
|filetype.txt| settings done specifically for a type of file
@ -189,12 +192,6 @@ Standard plugins ~
|pi_expl.txt| File explorer
LOCAL ADDITIONS: *local-additions*
|engspchk.txt| English Spelling Checker (v57) May 25, 2004
|example.txt| Example for a locally added help file
|matchit.txt| Extended "%" matching
|test.txt| Testing the h<>lp c<>mm<6D>nd n<>w
|typecorr.txt| Plugin for correcting typing mistakes
|helpp.txt| Dummy line to avoid an error message
------------------------------------------------------------------------------
*bars* Bars example

View File

@ -1,4 +1,4 @@
*if_cscop.txt* For Vim version 7.0aa. Last change: 2004 Jan 17
*if_cscop.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Andy Kahn
@ -208,6 +208,11 @@ The available subcommands are:
USAGE :cs show
*:lcscope* *:lcs*
This command is same as the ":cscope" command, except when the
'cscopequickfix' option is set, the location list for the current window is
used instead of the quickfix list to show the cscope results.
*:cstag* *E257* *E562*
If you use cscope as well as ctags, |:cstag| allows you to search one or
the other before making a jump. For example, you can choose to first
@ -239,14 +244,15 @@ started will have no effect!
*cscopequickfix* *csqf* *E469*
{not available when compiled without the |+quickfix| feature}
'cscopequickfix' specifies whether to use quickfix window to show cscope
results. This is a list of comma-separated values. Each item consists of
results. This is a list of comma-separated values. Each item consists of
|cscope-find| command (s, g, d, c, t, e, f or i) and flag (+, - or 0).
'+' indicates that results must be appended to quickfix window,
'-' implies previous results clearance, '0' or command absence - don't use
quickfix. Search is performed from start until first command occurrence.
The default value is "" (don't use quickfix anyway). The following value
seems to be useful: "s-,c-,d-,i-,t-,e-".
quickfix. Search is performed from start until first command occurrence.
The default value is "" (don't use quickfix anyway). The following value
seems to be useful: >
:set cscopequickfix=s-,c-,d-,i-,t-,e-
<
*cscopetag* *cst*
If 'cscopetag' set, the commands ":tag" and CTRL-] as well as "vim -t" will
always use |:cstag| instead of the default :tag behavior. Effectively, by
@ -335,6 +341,9 @@ cscope version for Win32 see:
http://iamphet.nm.ru/cscope/index.html
The DJGPP-built version from http://cscope.sourceforge.net is known to not
work with Vim.
There are a couple of hard-coded limitations:
1. The maximum number of cscope connections allowed is 8. Do you
@ -468,7 +477,7 @@ cscope within Vim to him.
*cscope-win32*
For a cscope version for Win32 see: http://iamphet.nm.ru/cscope/index.html
Win32 support was added by Sergey Khorev <khorev@softlab.ru>. Contact him
if you have Win32-specific issues.
Win32 support was added by Sergey Khorev <sergey.khorev@gmail.com>. Contact
him if you have Win32-specific issues.
vim:tw=78:ts=8:ft=help:norl:

View File

@ -1,4 +1,4 @@
*if_mzsch.txt* For Vim version 7.0aa. Last change: 2004 Jul 05
*if_mzsch.txt* For Vim version 7.0aa. Last change: 2006 Jan 05
VIM REFERENCE MANUAL by Sergey Khorev
@ -10,6 +10,7 @@ The MzScheme Interface to Vim *mzscheme* *MzScheme*
2. Examples |mzscheme-examples|
3. Threads |mzscheme-threads|
4. The Vim access procedures |mzscheme-vim|
5. Dynamic loading |mzscheme-dynamic|
{Vi does not have any of these commands}
@ -17,6 +18,7 @@ The MzScheme interface is available only if Vim was compiled with the
|+mzscheme| feature.
Based on the work of Brent Fulgham.
Dynamic loading added by Sergey Khorev
For downloading MzScheme and other info:
http://www.plt-scheme.org/software/mzscheme/
@ -79,12 +81,39 @@ All the examples below assume this naming scheme. Note that you need to do
this again for every buffer.
The auto-instantiation can be achieved with autocommands, e.g. you can put
something like this in your .vimrc: >
au VimEnter,BufNew,BufNewFile,BufAdd,BufReadPre *
\:mz (require (prefix vim- vimext)
something like this in your .vimrc (EOFs should not have indentation): >
function s:MzRequire()
if has("mzscheme")
:mz << EOF
(require (prefix vim- vimext))
(let ((buf (vim-get-buff-by-name (vim-eval "expand(\"<afile>\")"))))
(when (and buf (not (eq? buf (vim-curr-buff))))
(parameterize ((current-namespace (vim-get-buff-namespace buf)))
(namespace-attach-module vim-global-namespace 'vimext)
(namespace-require '(prefix vim vimext)))))
EOF
endif
endfunction
function s:MzStartup()
if has("mzscheme")
au BufNew,BufNewFile,BufAdd,BufReadPre * :call s:MzRequire()
:mz << EOF
(current-library-collection-paths
(cons
(build-path (find-system-path 'addon-dir) (version) "collects")
(current-library-collection-paths)))
EOF
endif
endfunction
call s:MzStartup()
<
The global namespace just instantiated this module with the prefix "vimext:".
*mzscheme-sandbox*
When executed in the |sandbox|, access to some filesystem and Vim interface
procedures is restricted.
==============================================================================
2. Examples *mzscheme-examples*
@ -215,5 +244,23 @@ Windows *mzscheme-window*
a pair (linenr . column).
(set-cursor (line . col) [window]) Set cursor position.
==============================================================================
5. Dynamic loading *mzscheme-dynamic*
On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version|
output then includes |+mzscheme/dyn|.
This means that Vim will search for the MzScheme DLL files only when needed.
When you don't use the MzScheme interface you don't need them, thus you can
use Vim without these DLL files.
To use the MzScheme interface the MzScheme DLLs must be in your search path.
In a console window type "path" to see what directories are used.
The names of the DLLs must match the MzScheme version Vim was compiled with.
For MzScheme version 209 they will be "libmzsch209_000.dll" and
"libmzgc209_000.dll". To know for sure edit "gvim.exe" and search for
"libmzsch\d\d\d_\d\d\d\.dll\c".
======================================================================
vim:tw=78:ts=8:sts=4:ft=help:norl:

View File

@ -1,4 +1,4 @@
*if_ole.txt* For Vim version 7.0aa. Last change: 2003 Jun 19
*if_ole.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Paul Moore
@ -22,7 +22,7 @@ An alternative is using the client-server communication |clientserver|.
1. Activation *ole-activation*
Vim acts as an OLE automation server, accessible from any automation client,
for example, Visual Basic, Python, or Perl. The Vim application "name" (its
for example, Visual Basic, Python, or Perl. The Vim application "name" (its
"ProgID", in OLE terminology) is "Vim.Application".
Hence, in order to start a Vim instance (or connect to an already running
@ -41,8 +41,8 @@ instance), code similar to the following should be used:
$vim = new Win32::OLE 'Vim.Application';
Vim does not support acting as a "hidden" OLE server, like some other OLE
Automation servers. When a client starts up an instance of Vim, that instance
is immediately visible. Simply closing the OLE connection to the Vim instance
Automation servers. When a client starts up an instance of Vim, that instance
is immediately visible. Simply closing the OLE connection to the Vim instance
is not enough to shut down the Vim instance - it is necessary to explicitly
execute a quit command (for example, :qa!, :wqa).
@ -54,17 +54,17 @@ Vim exposes four methods for use by clients.
*ole-sendkeys*
SendKeys(keys) Execute a series of keys.
This method takes a single parameter, which is a string of keystrokes. These
This method takes a single parameter, which is a string of keystrokes. These
keystrokes are executed exactly as if they had been types in at the keyboard.
Special keys can be given using their <..> names, as for the right hand side
of a mapping. Note: Execution of the Ex "normal" command is not supported -
of a mapping. Note: Execution of the Ex "normal" command is not supported -
see below |ole-normal|.
Examples (Visual Basic syntax) >
Vim.SendKeys "ihello<Esc>"
Vim.SendKeys "ma1GV4jy`a"
These examples assume that Vim starts in Normal mode. To force Normal mode,
These examples assume that Vim starts in Normal mode. To force Normal mode,
start the key sequence with CTRL-\ CTRL-N as in >
Vim.SendKeys "<C-\><C-N>ihello<Esc>"
@ -109,7 +109,7 @@ Example (Visual Basic syntax) >
Due to the way Vim processes OLE Automation commands, combined with the method
of implementation of the ex command :normal, it is not possible to execute the
:normal command via OLE automation. Any attempt to do so will fail, probably
:normal command via OLE automation. Any attempt to do so will fail, probably
harmlessly, although possibly in unpredictable ways.
There is currently no practical way to trap this situation, and users must
@ -118,7 +118,7 @@ simply be aware of the limitation.
4. Registration *ole-registration* *E243*
Before Vim will act as an OLE server, it must be registered in the system
registry. In order to do this, Vim should be run with a single parameter of
registry. In order to do this, Vim should be run with a single parameter of
"-register".
*-register* >
gvim -register
@ -131,9 +131,9 @@ In some situations registering is not possible. This happens when the
registry is not writable. If you run into this problem you need to run gvim
as "Administrator".
Once vim is registered, the application path is stored in the registry. Before
moving, deleting, or upgrading Vim, the registry entries should be removed
using the "-unregister" switch.
Once vim is registered, the application path is stored in the registry.
Before moving, deleting, or upgrading Vim, the registry entries should be
removed using the "-unregister" switch.
*-unregister* >
gvim -unregister
@ -158,5 +158,41 @@ Studio. This is called "VisVim". It is included in the archive that contains
the OLE version. The documentation can be found in the runtime directory, the
README_VisVim.txt file.
Using Vim with Visual Studio .Net~
With .Net you no longer really need VisVim, since .Net studio has support for
external editors. Follow these directions:
In .Net Studio choose from the menu Tools->External Tools...
Add
Title - Vim
Command - c:\vim\vim63\gvim.exe
Arguments - --servername VS_NET --remote-silent "+call cursor($(CurLine), $(CurCol))" $(ItemPath)
Init Dir - Empty
Now, when you open a file in .Net, you can choose from the .Net menu:
Tools->Vim
That will open the file in Vim.
You can then add this external command as an icon and place it anywhere you
like. You might also be able to set this as your default editor.
If you refine this further, please post back to the Vim maillist so we have a
record of it.
--servername VS_NET
This will create a new instance of vim called VS_NET. So if you open multiple
files from VS, they will use the same instance of Vim. This allows you to
have multiple copies of Vim running, but you can control which one has VS
files in it.
--remote-silent "+call cursor(10, 27)"
- Places the cursor on line 10 column 27
In Vim >
:h --remote-silent for mor details
[.Net remarks provided by Dave Fishburn and Brian Sturk]
==============================================================================
vim:tw=78:ts=8:ft=help:norl:

View File

@ -1,4 +1,4 @@
*if_perl.txt* For Vim version 7.0aa. Last change: 2004 May 01
*if_perl.txt* For Vim version 7.0aa. Last change: 2005 Oct 14
VIM REFERENCE MANUAL by Sven Verdoolaege
@ -9,6 +9,7 @@ Perl and Vim *perl* *Perl*
1. Editing Perl files |perl-editing|
2. Compiling VIM with Perl interface |perl-compiling|
3. Using the Perl interface |perl-using|
4. Dynamic loading |perl-dynamic|
{Vi does not have any of these commands}
@ -18,7 +19,7 @@ The Perl interface only works when Vim was compiled with the |+perl| feature.
1. Editing Perl files *perl-editing*
Vim syntax highlighting supports Perl and POD files. Vim assumes a file is
Perl code if the filename has a .pl or .pm suffix. Vim also examines the first
Perl code if the filename has a .pl or .pm suffix. Vim also examines the first
line of a file, regardless of the filename suffix, to check if a file is a
Perl script (see scripts.vim in Vim's syntax directory). Vim assumes a file
is POD text if the filename has a .POD suffix.
@ -50,7 +51,7 @@ http://www.perl.com/CPAN/ports/nt/Standard/x86/
3. Using the Perl interface *perl-using*
*:perl* *:pe*
:pe[rl] {cmd} Execute Perl command {cmd}. The current package
:pe[rl] {cmd} Execute Perl command {cmd}. The current package
is "main".
:pe[rl] << {endpattern}
@ -84,7 +85,7 @@ Example vim script: >
*:perldo* *:perld*
:[range]perld[o] {cmd} Execute Perl command {cmd} for each line in the
[range], with $_ being set to the text of each line in
turn, without a trailing <EOL>. Setting $_ will change
turn, without a trailing <EOL>. Setting $_ will change
the text, but note that it is not possible to add or
delete lines using this command.
The default for [range] is the whole file: "1,$".
@ -156,6 +157,8 @@ VIM::Buffers([{bn}...]) With no arguments, returns a list of all the buffers
numbers {bn}, returns a list of the buffers matching
{bn}, using the same rules as Vim's internal
|bufname()| function.
WARNING: the list becomes invalid when |:bwipe| is
used. Using it anyway may crash Vim.
*perl-Windows*
VIM::Windows([{wn}...]) With no arguments, returns a list of all the windows
@ -163,6 +166,8 @@ VIM::Windows([{wn}...]) With no arguments, returns a list of all the windows
in a scalar context. For a list of window numbers
{wn}, returns a list of the windows with those
numbers.
WARNING: the list becomes invalid when a window is
closed. Using it anyway may crash Vim.
*perl-DoCommand*
VIM::DoCommand({cmd}) Executes Ex command {cmd}.
@ -207,7 +212,7 @@ Buffer->Count() Returns the number of lines in the Buffer.
*perl-Get*
Buffer->Get({lnum}, {lnum}?, ...)
Returns a text string of line {lnum} in the Buffer
for each {lnum} specified. An array can be passed
for each {lnum} specified. An array can be passed
with a list of {lnum}'s specified.
*perl-Delete*
@ -255,4 +260,22 @@ function: >
endif
Note that "EOF" must be at the start of the line.
==============================================================================
4. Dynamic loading *perl-dynamic*
On MS-Windows the Perl library can be loaded dynamically. The |:version|
output then includes |+perl/dyn|.
This means that Vim will search for the Perl DLL file only when needed. When
you don't use the Perl interface you don't need it, thus you can use Vim
without this DLL file.
To use the Perl interface the Perl DLL must be in your search path. In a
console window type "path" to see what directories are used.
The name of the DLL must match the Perl version Vim was compiled with.
Currently the name is "perl58.dll". That is for Perl 5.8. To know for
sure edit "gvim.exe" and search for "perl\d*.dll\c".
==============================================================================
vim:tw=78:ts=8:ft=help:norl:

View File

@ -1,4 +1,4 @@
*if_pyth.txt* For Vim version 7.0aa. Last change: 2004 Feb 28
*if_pyth.txt* For Vim version 7.0aa. Last change: 2006 Jan 20
VIM REFERENCE MANUAL by Paul Moore
@ -11,6 +11,7 @@ The Python Interface to Vim *python* *Python*
3. Buffer objects |python-buffer|
4. Range objects |python-range|
5. Window objects |python-window|
6. Dynamic loading |python-dynamic|
{Vi does not have any of these commands}
@ -85,38 +86,38 @@ just like in the Python interpreter.)
2. The vim module *python-vim*
Python code gets all of its access to vim (with one exception - see
|python-output| below) via the "vim" module. The vim module implements two
|python-output| below) via the "vim" module. The vim module implements two
methods, three constants, and one error object. You need to import the vim
module before using it: >
:python import vim
Overview >
print "Hello" # displays a message
vim.command(cmd) # execute an ex command
w = vim.windows[n] # gets window "n"
cw = vim.current.window # gets the current window
b = vim.buffers[n] # gets buffer "n"
cb = vim.current.buffer # gets the current buffer
w.height = lines # sets the window height
w.cursor = (row, col) # sets the window cursor position
pos = w.cursor # gets a tuple (row, col)
name = b.name # gets the buffer file name
line = b[n] # gets a line from the buffer
lines = b[n:m] # gets a list of lines
num = len(b) # gets the number of lines
b[n] = str # sets a line in the buffer
b[n:m] = [str1, str2, str3] # sets a number of lines at once
del b[n] # deletes a line
del b[n:m] # deletes a number of lines
:py print "Hello" # displays a message
:py vim.command(cmd) # execute an ex command
:py w = vim.windows[n] # gets window "n"
:py cw = vim.current.window # gets the current window
:py b = vim.buffers[n] # gets buffer "n"
:py cb = vim.current.buffer # gets the current buffer
:py w.height = lines # sets the window height
:py w.cursor = (row, col) # sets the window cursor position
:py pos = w.cursor # gets a tuple (row, col)
:py name = b.name # gets the buffer file name
:py line = b[n] # gets a line from the buffer
:py lines = b[n:m] # gets a list of lines
:py num = len(b) # gets the number of lines
:py b[n] = str # sets a line in the buffer
:py b[n:m] = [str1, str2, str3] # sets a number of lines at once
:py del b[n] # deletes a line
:py del b[n:m] # deletes a number of lines
Methods of the "vim" module
vim.command(str) *python-command*
Executes the vim (ex-mode) command str. Returns None.
Executes the vim (ex-mode) command str. Returns None.
Examples: >
vim.command("set tw=72")
vim.command("%s/aaa/bbb/g")
:py vim.command("set tw=72")
:py vim.command("%s/aaa/bbb/g")
< The following definition executes Normal mode commands: >
def normal(str):
vim.command("normal "+str)
@ -126,18 +127,28 @@ vim.command(str) *python-command*
< *E659*
The ":python" command cannot be used recursively with Python 2.2 and
older. This only works with Python 2.3 and later: >
:python vim.command("python print 'Hello again Python'")
:py vim.command("python print 'Hello again Python'")
vim.eval(str) *python-eval*
Evaluates the expression str using the vim internal expression
evaluator (see |expression|). Returns the expression result as a
string.
evaluator (see |expression|). Returns the expression result as:
- a string if the Vim expression evaluates to a string or number
- a list if the Vim expression evaluates to a Vim list
- a dictionary if the Vim expression evaluates to a Vim dictionary
Dictionaries and lists are recursively expanded.
Examples: >
text_width = vim.eval("&tw")
str = vim.eval("12+12") # NB result is a string! Use
:py text_width = vim.eval("&tw")
:py str = vim.eval("12+12") # NB result is a string! Use
# string.atoi() to convert to
# a number.
:py tagList = vim.eval('taglist("eval_expr")')
< The latter will return a python list of python dicts, for instance:
[{'cmd': '/^eval_expr(arg, nextcmd)$/', 'static': 0, 'name':
'eval_expr', 'kind': 'f', 'filename': './src/eval.c'}]
Error object of the "vim" module
vim.error *python-error*
@ -156,20 +167,20 @@ Constants of the "vim" module
to which the variables referred.
vim.buffers *python-buffers*
A sequence object providing access to the list of vim buffers. The
A sequence object providing access to the list of vim buffers. The
object supports the following operations: >
b = vim.buffers[i] # Indexing (read-only)
b in vim.buffers # Membership test
n = len(vim.buffers) # Number of elements
for b in vim.buffers: # Sequential access
:py b = vim.buffers[i] # Indexing (read-only)
:py b in vim.buffers # Membership test
:py n = len(vim.buffers) # Number of elements
:py for b in vim.buffers: # Sequential access
<
vim.windows *python-windows*
A sequence object providing access to the list of vim windows. The
A sequence object providing access to the list of vim windows. The
object supports the following operations: >
w = vim.windows[i] # Indexing (read-only)
w in vim.windows # Membership test
n = len(vim.windows) # Number of elements
for w in vim.windows: # Sequential access
:py w = vim.windows[i] # Indexing (read-only)
:py w in vim.windows # Membership test
:py n = len(vim.windows) # Number of elements
:py for w in vim.windows: # Sequential access
<
vim.current *python-current*
An object providing access (via specific attributes) to various
@ -179,10 +190,10 @@ vim.current *python-current*
vim.current.window The current window (RO) Window
vim.current.range The current line range (RO) Range
The last case deserves a little explanation. When the :python or
The last case deserves a little explanation. When the :python or
:pyfile command specifies a range, this range of lines becomes the
"current range". A range is a bit like a buffer, but with all access
restricted to a subset of lines. See |python-range| for more details.
"current range". A range is a bit like a buffer, but with all access
restricted to a subset of lines. See |python-range| for more details.
Output from Python *python-output*
@ -197,31 +208,31 @@ Output from Python *python-output*
*python-input*
Input (via sys.stdin, including input() and raw_input()) is not
supported, and may cause the program to crash. This should probably be
supported, and may cause the program to crash. This should probably be
fixed.
==============================================================================
3. Buffer objects *python-buffer*
Buffer objects represent vim buffers. You can obtain them in a number of ways:
Buffer objects represent vim buffers. You can obtain them in a number of ways:
- via vim.current.buffer (|python-current|)
- from indexing vim.buffers (|python-buffers|)
- from the "buffer" attribute of a window (|python-window|)
Buffer objects have one read-only attribute - name - the full file name for
the buffer. They also have three methods (append, mark, and range; see below).
the buffer. They also have three methods (append, mark, and range; see below).
You can also treat buffer objects as sequence objects. In this context, they
You can also treat buffer objects as sequence objects. In this context, they
act as if they were lists (yes, they are mutable) of strings, with each
element being a line of the buffer. All of the usual sequence operations,
element being a line of the buffer. All of the usual sequence operations,
including indexing, index assignment, slicing and slice assignment, work as
you would expect. Note that the result of indexing (slicing) a buffer is a
string (list of strings). This has one unusual consequence - b[:] is different
from b. In particular, "b[:] = None" deletes the whole of the buffer, whereas
you would expect. Note that the result of indexing (slicing) a buffer is a
string (list of strings). This has one unusual consequence - b[:] is different
from b. In particular, "b[:] = None" deletes the whole of the buffer, whereas
"b = None" merely updates the variable b, with no effect on the buffer.
Buffer indexes start at zero, as is normal in Python. This differs from vim
line numbers, which start from 1. This is particularly relevant when dealing
Buffer indexes start at zero, as is normal in Python. This differs from vim
line numbers, which start from 1. This is particularly relevant when dealing
with marks (see below) which use vim line numbers.
The buffer object methods are:
@ -236,27 +247,31 @@ The buffer object methods are:
represents the part of the given buffer between line
numbers s and e |inclusive|.
Note that when adding a line it must not contain a line break character '\n'.
A trailing '\n' is allowed and ignored, so that you can do: >
:py b.append(f.readlines())
Examples (assume b is the current buffer) >
print b.name # write the buffer file name
b[0] = "hello!!!" # replace the top line
b[:] = None # delete the whole buffer
del b[:] # delete the whole buffer (same as above)
b[0:0] = [ "a line" ] # add a line at the top
del b[2] # delete a line (the third)
b.append("bottom") # add a line at the bottom
n = len(b) # number of lines
(row,col) = b.mark('a') # named mark
r = b.range(1,5) # a sub-range of the buffer
:py print b.name # write the buffer file name
:py b[0] = "hello!!!" # replace the top line
:py b[:] = None # delete the whole buffer
:py del b[:] # delete the whole buffer
:py b[0:0] = [ "a line" ] # add a line at the top
:py del b[2] # delete a line (the third)
:py b.append("bottom") # add a line at the bottom
:py n = len(b) # number of lines
:py (row,col) = b.mark('a') # named mark
:py r = b.range(1,5) # a sub-range of the buffer
==============================================================================
4. Range objects *python-range*
Range objects represent a part of a vim buffer. You can obtain them in a
Range objects represent a part of a vim buffer. You can obtain them in a
number of ways:
- via vim.current.range (|python-current|)
- from a buffer's range() method (|python-buffer|)
A range object is almost identical in operation to a buffer object. However,
A range object is almost identical in operation to a buffer object. However,
all operations are restricted to the lines within the range (this line range
can, of course, change as a result of slice assignments, line deletions, or
the range.append() method).
@ -279,11 +294,11 @@ Example (assume r is the current range):
==============================================================================
5. Window objects *python-window*
Window objects represent vim windows. You can obtain them in a number of ways:
Window objects represent vim windows. You can obtain them in a number of ways:
- via vim.current.window (|python-current|)
- from indexing vim.windows (|python-windows|)
You can manipulate window objects only through their attributes. They have no
You can manipulate window objects only through their attributes. They have no
methods, and no sequence or other interface.
Window attributes are:
@ -295,5 +310,22 @@ Window attributes are:
The height attribute is writable only if the screen is split horizontally.
The width attribute is writable only if the screen is split vertically.
==============================================================================
6. Dynamic loading *python-dynamic*
On MS-Windows the Python library can be loaded dynamically. The |:version|
output then includes |+python/dyn|.
This means that Vim will search for the Python DLL file only when needed.
When you don't use the Python interface you don't need it, thus you can use
Vim without this DLL file.
To use the Python interface the Python DLL must be in your search path. In a
console window type "path" to see what directories are used.
The name of the DLL must match the Python version Vim was compiled with.
Currently the name is "python24.dll". That is for Python 2.4. To know for
sure edit "gvim.exe" and search for "python\d*.dll\c".
==============================================================================
vim:tw=78:ts=8:ft=help:norl:

View File

@ -1,4 +1,4 @@
*if_ruby.txt* For Vim version 7.0aa. Last change: 2004 Mar 14
*if_ruby.txt* For Vim version 7.0aa. Last change: 2005 Oct 14
VIM REFERENCE MANUAL by Shugo Maeda
@ -11,6 +11,7 @@ The Ruby Interface to Vim *ruby* *Ruby*
3. VIM::Buffer objects |ruby-buffer|
4. VIM::Window objects |ruby-window|
5. Global variables |ruby-globals|
6. Dynamic loading |ruby-dynamic|
{Vi does not have any of these commands}
*E266* *E267* *E268* *E269* *E270* *E271* *E272* *E273*
@ -32,7 +33,7 @@ downloading Ruby there.
Execute Ruby script {script}.
{endpattern} must NOT be preceded by any white space.
If {endpattern} is omitted, it defaults to a dot '.'
like for the |:append| and |:insert| commands. This
like for the |:append| and |:insert| commands. This
form of the |:ruby| command is mainly useful for
including ruby code in vim scripts.
Note: This command doesn't work when the Ruby feature
@ -60,7 +61,7 @@ Example Vim script: >
*:rubydo* *:rubyd* *E265*
:[range]rubyd[o] {cmd} Evaluate Ruby command {cmd} for each line in the
[range], with $_ being set to the text of each line in
turn, without a trailing <EOL>. Setting $_ will change
turn, without a trailing <EOL>. Setting $_ will change
the text, but note that it is not possible to add or
delete lines using this command.
The default for [range] is the whole file: "1,$".
@ -115,7 +116,7 @@ VIM::command({cmd})
*ruby-evaluate*
VIM::evaluate({expr})
Evaluates {expr} using the vim internal expression evaluator (see
|expression|). Returns the expression result as a string.
|expression|). Returns the expression result as a string.
==============================================================================
3. VIM::Buffer objects *ruby-buffer*
@ -126,7 +127,7 @@ Class Methods:
current Returns the current buffer object.
count Returns the number of buffers.
self[{n}] Returns the buffer object for the number {n}. The first number
self[{n}] Returns the buffer object for the number {n}. The first number
is 0.
Methods:
@ -151,7 +152,7 @@ Class Methods:
current Returns the current window object.
count Returns the number of windows.
self[{n}] Returns the window object for the number {n}. The first number
self[{n}] Returns the window object for the number {n}. The first number
is 0.
Methods:
@ -159,17 +160,36 @@ Methods:
buffer Returns the buffer displayed in the window.
height Returns the height of the window.
height = {n} Sets the window height to {n}.
width Returns the width of the window.
width = {n} Sets the window width to {n}.
cursor Returns a [row, col] array for the cursor position.
cursor = [{row}, {col}]
Sets the cursor position to {row} and {col}.
==============================================================================
4. Global variables *ruby-globals*
5. Global variables *ruby-globals*
There are two global variables.
$curwin The current window object.
$curbuf The current buffer object.
==============================================================================
6. Dynamic loading *ruby-dynamic*
On MS-Windows the Ruby library can be loaded dynamically. The |:version|
output then includes |+ruby/dyn|.
This means that Vim will search for the Ruby DLL file only when needed. When
you don't use the Ruby interface you don't need it, thus you can use Vim
without this DLL file.
To use the Ruby interface the Ruby DLL must be in your search path. In a
console window type "path" to see what directories are used.
The name of the DLL must match the Ruby version Vim was compiled with.
Currently the name is "ruby18.dll". That is for Ruby 1.8. To know for sure
edit "gvim.exe" and search for "ruby\d*.dll\c".
==============================================================================
vim:tw=78:ts=8:ft=help:norl:

View File

@ -1,4 +1,4 @@
*if_sniff.txt* For Vim version 7.0aa. Last change: 2001 Sep 03
*if_sniff.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
VIM REFERENCE MANUAL
@ -45,7 +45,7 @@ edit source code. On the other hand, you can send queries to SNiFF+ with the
:sni[ff] Display all possible requests and the connection
status
Most requests require a symbol (identifier) as parameter. If it is omitted,
Most requests require a symbol (identifier) as parameter. If it is omitted,
Vim will use the current word under the cursor.
The available requests are listed below:
@ -54,7 +54,7 @@ request mapping description
connect sc Establish connection with SNiFF+.
Make sure SNiFF+ is prepared for this in the
Preferences
disconnect sq Disconnect from SNiFF+. You can reconnect any
disconnect sq Disconnect from SNiFF+. You can reconnect any
time with :sniff connect (or 'sc')
toggle st Toggle between implementation
and definition file
@ -80,7 +80,7 @@ show-docu sd Show documentation of symbol
gen-docu sD Generate documentation of symbol
The mappings are defined in a file 'sniff.vim', which is part of every SNiFF+
product ($SNIFF_DIR/config/sniff.vim). This file is sourced whenever Vim
product ($SNIFF_DIR/config/sniff.vim). This file is sourced whenever Vim
connects to SNiFF+.
==============================================================================

View File

@ -1,4 +1,4 @@
*if_tcl.txt* For Vim version 7.0aa. Last change: 2004 Jan 17
*if_tcl.txt* For Vim version 7.0aa. Last change: 2005 Oct 14
VIM REFERENCE MANUAL by Ingo Wilken
@ -14,6 +14,7 @@ The Tcl Interface to Vim *tcl* *Tcl* *TCL*
6. Miscellaneous; Output from Tcl |tcl-misc| |tcl-output|
7. Known bugs & problems |tcl-bugs|
8. Examples |tcl-examples|
9. Dynamic loading |tcl-dynamic|
{Vi does not have any of these commands} *E280* *E281*
@ -36,7 +37,7 @@ comments, ideas etc to <Ingo.Wilken@informatik.uni-oldenburg.de>
wasn't compiled in. To avoid errors, see
|script-here|.
{endmarker} must NOT be preceded by any white space. If {endmarker} is
{endmarker} must NOT be preceded by any white space. If {endmarker} is
omitted from after the "<<", a dot '.' must be used after {script}, like for
the |:append| and |:insert| commands.
This form of the |:tcl| command is mainly useful for including tcl code in Vim
@ -152,7 +153,7 @@ Commands:
::vim::window {option} *tcl-window*
Provides access to vim windows. Currently only the "list" option is
implemented. This creates a window command (see |tcl-window-cmds|) for
implemented. This creates a window command (see |tcl-window-cmds|) for
each window, and returns a list of the command names as the result.
Example: >
set wins [::vim::window list]
@ -227,7 +228,7 @@ The ::vim::current(window) variable contains the name of the window command
for the current window. A window command is automatically deleted when the
corresponding vim window is closed.
Lets assume the name of the window command is stored in the Tcl variable "win",
Let's assume the name of the window command is stored in the Tcl variable "win",
i.e. "$win" calls the command. The following options are available: >
$win buffer # Create Tcl command for window's buffer.
@ -306,7 +307,7 @@ changed, all marks in the buffer are automatically adjusted. Any changes to
the buffer's contents made by Tcl commands can be undone with the "undo" vim
command (see |undo|).
Lets assume the name of the buffer command is stored in the Tcl variable "buf",
Let's assume the name of the buffer command is stored in the Tcl variable "buf",
i.e. "$buf" calls the command. The following options are available: >
$buf append {n} {str} # Append a line to buffer, after line {n}.
@ -497,7 +498,7 @@ This procedure runs an ex command on each buffer (idea stolen from Ron Aaron):
}
Use it like this:
:tcl eachbuf %s/foo/bar/g
Be careful with Tcl's string and backslash substitution, tough. If in doubt,
Be careful with Tcl's string and backslash substitution, tough. If in doubt,
surround the ex command with curly braces.
@ -508,5 +509,22 @@ startup file (usually "~/.vimrc" on Unix):
tclfile ~/.vimrc.tcl
endif
==============================================================================
9. Dynamic loading *tcl-dynamic*
On MS-Windows the Tcl library can be loaded dynamically. The |:version|
output then includes |+tcl/dyn|.
This means that Vim will search for the Tcl DLL file only when needed. When
you don't use the Tcl interface you don't need it, thus you can use Vim
without this DLL file.
To use the Tcl interface the Tcl DLL must be in your search path. In a
console window type "path" to see what directories are used.
The name of the DLL must match the Tcl version Vim was compiled with.
Currently the name is "tcl83.dll". That is for Tcl 8.3. To know for sure
edit "gvim.exe" and search for "tcl\d*.dll\c".
==============================================================================
vim:tw=78:ts=8:ft=help:norl:

View File

@ -1,4 +1,4 @@
*indent.txt* For Vim version 7.0aa. Last change: 2004 Jul 07
*indent.txt* For Vim version 7.0aa. Last change: 2005 Aug 30
VIM REFERENCE MANUAL by Bram Moolenaar
@ -237,7 +237,7 @@ assume a 'shiftwidth' of 4.
} }
<
bN If N != 0 Vim will align a final "break" with the case label,
so that case..break looks like a sort of block. (default: 0).
so that case..break looks like a sort of block. (default: 0).
cino= cino=b1 >
switch (x) switch(x)
@ -325,7 +325,7 @@ assume a 'shiftwidth' of 4.
********/ ********/
< (Example uses ":set comments& comments-=s1:/* comments^=s0:/*")
/N Indent comment lines N characters extra. (default 0).
/N Indent comment lines N characters extra. (default 0).
cino= cino=/4 >
a = b; a = b;
/* comment */ /* comment */
@ -381,7 +381,7 @@ assume a 'shiftwidth' of 4.
the last non-white character in its line and it is not the
closing parentheses, indent the following line N characters
relative to the outer context (i.e. start of the line or the
next unclosed parentheses). (default: 0).
next unclosed parentheses). (default: 0).
cino=(0 cino=(0,W4 >
a_long_line( a_long_line(
@ -406,7 +406,7 @@ assume a 'shiftwidth' of 4.
<
*java-cinoptions* *java-indenting*
jN Indent java anonymous classes correctly. The value 'N' is
currently unused but must be non-zero (e.g. 'j1'). 'j1' will
currently unused but must be non-zero (e.g. 'j1'). 'j1' will
indent for example the following code snippet correctly: >
object.add(new ChangeListener() {
@ -449,33 +449,33 @@ $VIMRUNTIME/indent directory for examples.
REMARKS ABOUT SPECIFIC INDENT FILES ~
FORTRAN *fortran-indent*
FORTRAN *ft-fortran-indent*
Block if, select case, and where constructs are indented. Comments, labelled
Block if, select case, and where constructs are indented. Comments, labelled
statements and continuation lines are indented if the Fortran is in free
source form, whereas they are not indented if the Fortran is in fixed source
form because of the left margin requirements. Hence manual indent corrections
form because of the left margin requirements. Hence manual indent corrections
will be necessary for labelled statements and continuation lines when fixed
source form is being used. For further discussion of the method used for the
detection of source format see |fortran-syntax|.
source form is being used. For further discussion of the method used for the
detection of source format see |ft-fortran-syntax|.
Do loops ~
All do loops are left unindented by default. Do loops can be unstructured in
All do loops are left unindented by default. Do loops can be unstructured in
Fortran with (possibly multiple) loops ending on a labelled executable
statement of almost arbitrary type. Correct indentation requires
compiler-quality parsing. Old code with do loops ending on labelled statements
statement of almost arbitrary type. Correct indentation requires
compiler-quality parsing. Old code with do loops ending on labelled statements
of arbitrary type can be indented with elaborate programs such as Tidy
(http://www.unb.ca/chem/ajit/f_tidy.htm). Structured do/continue loops are
(http://www.unb.ca/chem/ajit/f_tidy.htm). Structured do/continue loops are
also left unindented because continue statements are also used for purposes
other than ending a do loop. Programs such as Tidy can convert structured
do/continue loops to the do/enddo form. Do loops of the do/enddo variety can
be indented. If you use only structured loops of the do/enddo form, you should
other than ending a do loop. Programs such as Tidy can convert structured
do/continue loops to the do/enddo form. Do loops of the do/enddo variety can
be indented. If you use only structured loops of the do/enddo form, you should
declare this by setting the fortran_do_enddo variable in your .vimrc as
follows >
let fortran_do_enddo=1
in which case do loops will be indented. If all your loops are of do/enddo
in which case do loops will be indented. If all your loops are of do/enddo
type only in, say, .f90 files, then you should set a buffer flag with an
autocommand such as >
@ -485,7 +485,21 @@ to get do loops indented in .f90 files and left alone in Fortran files with
other extensions such as .for.
VERILOG *verilog-indent*
PYTHON *ft-python-indent*
The amount of indent can be set for the following situations. The examples
given are de the defaults. Note that the variables are set to an expression,
so that you can change the value of 'shiftwidth' later.
Indent after an open paren: >
let g:pyindent_open_paren = '&sw * 2'
Indent after a nested paren: >
let g:pyindent_nested_paren = '&sw'
Indent for a continuation line: >
let g:pyindent_continue = '&sw * 2'
VERILOG *ft-verilog-indent*
General block statements such as if, for, case, always, initial, function,
specify and begin, etc., are indented. The module block statements (first
@ -519,4 +533,15 @@ In addition, you can turn the verbose mode for debug issue: >
Make sure to do ":set cmdheight=2" first to allow the display of the message.
VIM *ft-vim-indent*
For indenting Vim scripts there is one variable that specifies the amount of
indent for a continuation line, a line that starts with a backslash: >
:let g:vim_indent_cont = &sw * 3
Three times shiftwidth is the default value.
vim:tw=78:ts=8:ft=help:norl:

View File

@ -1,4 +1,4 @@
*index.txt* For Vim version 7.0aa. Last change: 2004 Jul 11
*index.txt* For Vim version 7.0aa. Last change: 2006 Feb 23
VIM REFERENCE MANUAL by Bram Moolenaar
@ -150,12 +150,15 @@ commands in CTRL-X submode *i_CTRL-X_index*
|i_CTRL-X_CTRL-K| CTRL-X CTRL-K complete identifiers from dictionary
|i_CTRL-X_CTRL-L| CTRL-X CTRL-L complete whole lines
|i_CTRL-X_CTRL-N| CTRL-X CTRL-N next completion
|i_CTRL-X_CTRL-O| CTRL-X CTRL-O omni completion
|i_CTRL-X_CTRL-P| CTRL-X CTRL-P previous completion
|i_CTRL-X_CTRL-S| CTRL-X CTRL-S spelling suggestions
|i_CTRL-X_CTRL-T| CTRL-X CTRL-T complete identifiers from thesaurus
|i_CTRL-X_CTRL-Y| CTRL-X CTRL-Y scroll down
|i_CTRL-X_CTRL-U| CTRL-X CTRL-U complete with 'completefunc'
|i_CTRL-X_CTRL-V| CTRL-X CTRL-V complete like in : command line
|i_CTRL-X_CTRL-]| CTRL-X CTRL-] complete tags
|i_CTRL-X_s| CTRL-X s spelling suggestions
{not available when compiled without the +insert_expand feature}
==============================================================================
@ -328,8 +331,7 @@ tag char note action in Normal mode ~
characters, repeat the entered text N-1
times
|S| ["x]S 2 delete N lines [into buffer x] and start
insert; synonym for "^cc" or "0cc",
depending on autoindent
insert; synonym for "cc".
|T| T{char} 1 cursor till after Nth occurrence of {char}
to the left
|U| U 2 undo all latest changes on one line
@ -341,9 +343,9 @@ tag char note action in Normal mode ~
"yy"
|ZZ| ZZ store current file if modified, and exit
|ZQ| ZQ exit current file always
|[| [{char} square bracket command (see below)
|[| [{char} square bracket command (see |[| below)
\ not used
|]| ]{char} square bracket command (see below)
|]| ]{char} square bracket command (see |]| below)
|^| ^ 1 cursor to the first CHAR of the line
|_| _ 1 cursor to the first CHAR N - 1 lines lower
|`| `{a-zA-Z0-9} 1 cursor to the mark {a-zA-Z0-9}
@ -371,7 +373,7 @@ tag char note action in Normal mode ~
|e| e 1 cursor forward to the end of word N
|f| f{char} 1 cursor to Nth occurrence of {char} to the
right
|g| g{char} extended commands, see below
|g| g{char} extended commands, see |g| below
|h| h 1 cursor N chars to the left
|i| i 2 insert text before the cursor N times
|j| j 1 cursor N lines downward
@ -401,7 +403,7 @@ tag char note action in Normal mode ~
cursor [into buffer x]
|y| ["x]y{motion} yank Nmove text [into buffer x]
|yy| ["x]yy yank N lines [into buffer x]
|z| z{char} commands starting with 'z', see below
|z| z{char} commands starting with 'z', see |z| below
|{| { 1 cursor N paragraphs backward
|bar| | 1 cursor to column N
|}| } 1 cursor N paragraphs forward
@ -425,7 +427,7 @@ tag char note action in Normal mode ~
|<Insert>| <Insert> 2 same as "i"
|<Left>| <Left> 1 same as "h"
|<LeftMouse>| <LeftMouse> 1 move cursor to the mouse click position
|<MiddleMouse>| <MiddleMouse> 2 same as "P" at the mouse click position
|<MiddleMouse>| <MiddleMouse> 2 same as "gP" at the mouse click position
|<PageDown>| <PageDown> same as CTRL-F
|<PageUp>| <PageUp> same as CTRL-B
|<Right>| <Right> 1 same as "l"
@ -539,6 +541,9 @@ tag command action in Normal mode ~
the cursor
|CTRL-W_f| CTRL-W f split window and edit file name under the
cursor
|CTRL-W_F| CTRL-W F split window and edit file name under the
cursor and jump to the line number
following the file name.
|CTRL-W_g_CTRL-]| CTRL-W g CTRL-] split window and do |:tjump| to tag under
cursor
|CTRL-W_g]| CTRL-W g ] split window and do |:tselect| for tag
@ -685,6 +690,7 @@ tag char note action in Normal mode ~
of the current screen line
|g8| g8 print hex value of bytes used in UTF-8
character under the cursor
|g<| g< display previous command output
|g?| g? 2 Rot13 encoding operator
|g?g?| g?? 2 Rot13 encode current line
|g?g?| g?g? 2 Rot13 encode current line
@ -716,6 +722,9 @@ tag char note action in Normal mode ~
word
|gf| gf start editing the file whose name is under
the cursor
|gF| gF start editing the file whose name is under
the cursor and jump to the line number
following the filename.
|gg| gg 1 cursor to line N, default first line
|gh| gh start Select mode
|gi| gi 2 like "i", but first move to the |'^| mark
@ -733,6 +742,7 @@ tag char note action in Normal mode ~
|gu| gu{motion} 2 make Nmove text lowercase
|gv| gv reselect the previous Visual area
|gw| gw{motion} 2 format Nmove text and keep cursor
|g@| g@{motion} call 'operatorfunc'
|g~| g~{motion} 2 swap case for Nmove text
|g<Down>| g<Down> 1 same as "gj"
|g<End>| g<End> 1 same as "g$"
@ -756,16 +766,19 @@ tag char note action in Normal mode ~
cursor on first non-blank
|z.| z. redraw, cursor line to center of window,
cursor on first non-blank
|z=| z= give spelling suggestions
|zA| zA open a closed fold or close an open fold
recursively
|zC| zC close folds recursively
|zD| zD delete folds recursively
|zE| zE eliminate all folds
|zF| zF create a fold for N lines
|zG| zG mark word as good spelled word
|zM| zM set 'foldlevel' to zero
|zN| zN set 'foldenable'
|zO| zO open folds recursively
|zR| zR set 'foldlevel' to the deepest fold
|zW| zW mark word as wrong (bad) spelled word
|zX| zX re-apply 'foldlevel'
|z^| z^ cursor on line N (default line above
window), otherwise like "z-"
@ -777,6 +790,7 @@ tag char note action in Normal mode ~
position the cursor at the end (right side)
of the screen
|zf| zf{motion} create a fold for Nmove text
|zg| zg mark word as good spelled word
|zh| zh when 'wrap' off scroll screen N characters
to the right
|zi| zi toggle 'foldenable'
@ -793,6 +807,7 @@ tag char note action in Normal mode ~
side) of the screen
|zt| zt redraw, cursor line at top of window
|zv| zv open enough folds to view the cursor line
|zw| zw mark word as wrong (bad) spelled word
|zx| zx re-apply 'foldlevel' and do "zv"
|zz| zz redraw, cursor line at center of window
|z<Left>| z<Left> same as "zh"
@ -801,13 +816,14 @@ tag char note action in Normal mode ~
==============================================================================
3. Visual mode *visual-index*
Most commands in Visual mode are the same as in Normal mode. The ones listed
Most commands in Visual mode are the same as in Normal mode. The ones listed
here are those that are different.
tag command note action in Visual mode ~
------------------------------------------------------------------------------
|v_CTRL-\_CTRL-N| CTRL-\ CTRL-N stop Visual mode
|v_CTRL-\_CTRL-G| CTRL-\ CTRL-G go to mode specified with 'insertmode'
|v_CTRL-C| CTRL-C stop Visual mode
|v_CTRL-G| CTRL-G toggle between Visual mode and Select mode
|v_<BS>| <BS> 2 Select mode: delete highlighted area
|v_CTRL-H| CTRL-H 2 same as <BS>
@ -815,6 +831,7 @@ tag command note action in Visual mode ~
command
|v_CTRL-V| CTRL-V make Visual mode blockwise or stop Visual
mode
|v_<Esc>| <Esc> stop Visual mode
|v_CTRL-]| CTRL-] jump to highlighted tag
|v_!| !{filter} 2 filter the highlighted lines through the
external command {filter}
@ -1058,12 +1075,17 @@ The commands are sorted on the non-optional part of their name.
|:cNfile| :cNf[ile] go to last error in previous file
|:cabbrev| :ca[bbrev] like ":abbreviate" but for Command-line mode
|:cabclear| :cabc[lear] clear all abbreviations for Command-line mode
|:caddbuffer| :caddb[uffer] add errors from buffer
|:caddexpr| :cad[dexpr] add errors from expr
|:caddfile| :caddf[ile] add error message to current quickfix list
|:call| :cal[l] call a function
|:catch| :cat[ch] part of a :try command
|:cbuffer| :cb[uffer] parse error messages and jump to first error
|:cc| :cc go to specific error
|:cclose| :ccl[ose] close quickfix window
|:cd| :cd change directory
|:center| :ce[nter] format lines at the center
|:cexpr| :cex[pr] read errors from expr and jump to first
|:cfile| :cf[ile] read file with error messages and jump to first
|:cfirst| :cfir[st] go to the specified error, default first one
|:cgetfile| :cg[etfile] read file with error messages
@ -1103,6 +1125,7 @@ The commands are sorted on the non-optional part of their name.
|:cunmenu| :cunme[nu] remove menu for Command-line mode
|:cwindow| :cw[indow] open or close quickfix window
|:delete| :d[elete] delete lines
|:delmarks| :delm[arks] delete marks
|:debug| :deb[ug] run a command in debugging mode
|:debuggreedy| :debugg[reedy] read debug mode commands from normal input
|:delcommand| :delc[ommand] delete user-defined command
@ -1134,6 +1157,7 @@ The commands are sorted on the non-optional part of their name.
|:elseif| :elsei[f] part of an :if command
|:emenu| :em[enu] execute a menu by name
|:endif| :en[dif] end previous :if
|:endfor| :endfo[r] end previous :for
|:endfunction| :endf[unction] end of a user function
|:endtry| :endt[ry] end previous :try
|:endwhile| :endw[hile] end previous :while
@ -1141,6 +1165,7 @@ The commands are sorted on the non-optional part of their name.
|:ex| :ex same as ":edit"
|:execute| :exe[cute] execute result of expressions
|:exit| :exi[t] same as ":xit"
|:exusage| :exu[sage] overview of Ex commands
|:file| :f[ile] show or set the current file name
|:files| :files list all files in the buffer list
|:filetype| :filet[ype] switch file type detection on/off
@ -1154,11 +1179,12 @@ The commands are sorted on the non-optional part of their name.
|:folddoopen| :foldd[oopen] execute command on lines not in a closed fold
|:folddoclosed| :folddoc[losed] execute command on lines in a closed fold
|:foldopen| :foldo[pen] open folds
|:for| :for for loop
|:function| :fu[nction] define a user function
|:global| :g[lobal] execute commands for matching lines
|:goto| :go[to] go to byte in the buffer
|:grep| :gr[ep] run 'grepprg' and jump to first match
|:grepadd| :grepa[dd] like grep, but append to current list
|:grepadd| :grepa[dd] like :grep, but append to current list
|:gui| :gu[i] start the GUI
|:gvim| :gv[im] start the GUI
|:hardcopy| :ha[rdcopy] send text to the printer
@ -1191,24 +1217,59 @@ The commands are sorted on the non-optional part of their name.
|:join| :j[oin] join lines
|:jumps| :ju[mps] print the jump list
|:k| :k set a mark
|:keepalt| :keepa[lt] following command keeps the alternate file
|:keepmarks| :kee[pmarks] following command keeps marks where they are
|:keepjumps| :keepj[jumps] following command keeps jumplist and marks
|:lNext| :lN[ext] go to previous entry in location list
|:lNfile| :lNf[ile] go to last entry in previous file
|:list| :l[ist] print lines
|:laddexpr| :lad[dexpr] add locations from expr
|:laddbuffer| :laddb[uffer] add locations from buffer
|:laddfile| :laddf[ile] add locations to current location list
|:last| :la[st] go to the last file in the argument list
|:language| :lan[guage] set the language (locale)
|:lbuffer| :lb[uffer] parse locations and jump to first location
|:lcd| :lc[d] change directory locally
|:lchdir| :lch[dir] change directory locally
|:lclose| :lcl[ose] close location window
|:lcscope| :lcs[cope] like ":cscope" but uses location list
|:left| :le[ft] left align lines
|:leftabove| :lefta[bove] make split window appear left or above
|:let| :let assign a value to a variable or option
|:lexpr| :lex[pr] read locations from expr and jump to first
|:lfile| :lf[ile] read file with locations and jump to first
|:lfirst| :lfir[st] go to the specified location, default first one
|:lgetfile| :lg[etfile] read file with locations
|:lgrep| :lgr[ep] run 'grepprg' and jump to first match
|:lgrepadd| :lgrepa[dd] like :grep, but append to current list
|:lhelpgrep| :lh[elpgrep] like ":helpgrep" but uses location list
|:ll| :ll go to specific location
|:llast| :lla[st] go to the specified location, default last one
|:llist| :lli[st] list all locations
|:lmake| :lmak[e] execute external command 'makeprg' and parse
error messages
|:lmap| :lm[ap] like ":map!" but includes Lang-Arg mode
|:lmapclear| :lmapc[lear] like ":mapclear!" but includes Lang-Arg mode
|:lnext| :lne[xt] go to next location
|:lnewer| :lnew[er] go to newer location list
|:lnfile| :lnf[ile] go to first location in next file
|:lnoremap| :ln[oremap] like ":noremap!" but includes Lang-Arg mode
|:loadkeymap| :loadk[eymap] load the following keymaps until EOF
|:loadview| :lo[adview] load view for current window from a file
|:lockmarks| :loc[kmarks] following command keeps marks where they are
|:lockvar| :lockv[ar] lock variables
|:lolder| :lol[der] go to older location list
|:lopen| :lope[n] open location window
|:lprevious| :lp[revious] go to previous location
|:lpfile| :lpf[ile] go to last location in previous file
|:lrewind| :lr[ewind] go to the specified location, default first one
|:ls| :ls list all buffers
|:ltag| :lt[ag] jump to tag and add matching tags to the
location list
|:lunmap| :lu[nmap] like ":unmap!" but includes Lang-Arg mode
|:lvimgrep| :lv[imgrep] search for pattern in files
|:lvimgrepadd| :lvimgrepa[dd] like :vimgrep, but append to current list
|:lwindow| :lw[indow] open or close location window
|:move| :m[ove] move lines
|:mark| :ma[rk] set a mark
|:make| :mak[e] execute external command 'makeprg' and parse
@ -1222,11 +1283,13 @@ The commands are sorted on the non-optional part of their name.
|:messages| :mes[sages] view previously displayed messages
|:mkexrc| :mk[exrc] write current mappings and settings to a file
|:mksession| :mks[ession] write session info to a file
|:mkspell| :mksp[ell] produce .spl spell file
|:mkvimrc| :mkv[imrc] write current mappings and settings to a file
|:mkview| :mkvie[w] write view of current window to a file
|:mode| :mod[e] show or change the screen mode
|:mzscheme| :mz[scheme] execute MzScheme command
|:mzfile| :mzf[ile] execute MzScheme script file
|:nbkey| :nb[key] pass a key to Netbeans
|:next| :n[ext] go to next file in the argument list
|:new| :new create a new empty window
|:nmap| :nm[ap] like ":map" but for Normal mode
@ -1234,6 +1297,7 @@ The commands are sorted on the non-optional part of their name.
|:nmenu| :nme[nu] add menu for Normal mode
|:nnoremap| :nn[oremap] like ":noremap" but for Normal mode
|:nnoremenu| :nnoreme[nu] like ":noremenu" but for Normal mode
|:noautocmd| :noa[utocmd] following command don't trigger autocommands
|:noremap| :no[remap] enter a mapping that will not be remapped
|:nohlsearch| :noh[lsearch] suspend 'hlsearch' highlighting
|:noreabbrev| :norea[bbrev] enter an abbreviation that will not be
@ -1247,16 +1311,20 @@ The commands are sorted on the non-optional part of their name.
|:omap| :om[ap] like ":map" but for Operator-pending mode
|:omapclear| :omapc[lear] remove all mappings for Operator-pending mode
|:omenu| :ome[nu] add menu for Operator-pending mode
|:only| :on[ly] close all windows except current one
|:only| :on[ly] close all windows except the current one
|:onoremap| :ono[remap] like ":noremap" but for Operator-pending mode
|:onoremenu| :onoreme[nu] like ":noremenu" but for Operator-pending mode
|:options| :opt[ions] open the options-window
|:ounmap| :ou[nmap] like ":unmap" but for Operator-pending mode
|:ounmenu| :ounme[nu] remove menu for Operator-pending mode
|:print| :p[rint] print lines
|:pclose| :pc[lose] close preview window
|:pedit| :ped[it] edit file in the preview window
|:perl| :pe[rl] execute Perl command
|:print| :p[rint] print lines
|:profdel| :profd[el] stop profiling a function or script
|:profile| :prof[ile] profiling functions and scripts
|:promptfind| :pro[mtfind] open GUI dialog for searching
|:promptrepl| :promtr[epl] open GUI dialog for search/replace
|:perldo| :perld[o] execute Perl command for each line
|:pop| :po[p] jump to older entry in tag stack
|:popup| :pop[up] popup a menu by name
@ -1303,6 +1371,7 @@ The commands are sorted on the non-optional part of their name.
|:substitute| :s[ubstitute] find and replace text
|:sNext| :sN[ext] split window and go to previous file in
argument list
|:sandbox| :san[dbox] execute a command in the sandbox
|:sargument| :sa[rgument] split window and go to specific file in
argument list
|:sall| :sal[l] open a window for each file in argument list
@ -1326,7 +1395,7 @@ The commands are sorted on the non-optional part of their name.
buffer list
|:scriptnames| :scrip[tnames] list names of all sourced Vim scripts
|:scriptencoding| :scripte[ncoding] encoding used in sourced Vim script
|:scscope| :scs[cope] split window and execute cscope command
|:scscope| :scs[cope] split window and execute cscope command
|:set| :se[t] show or set options
|:setfiletype| :setf[iletype] set 'filetype', unless it was set already
|:setglobal| :setg[lobal] show global values of options
@ -1346,7 +1415,12 @@ The commands are sorted on the non-optional part of their name.
argument list
|:sniff| :sni[ff] send request to sniff
|:snomagic| :sno[magic] :substitute with 'nomagic'
|:sort| :sor[t] sort lines
|:source| :so[urce] read Vim or Ex commands from a file
|:spelldump| :spelld[ump] split window and fill with all correct words
|:spellgood| :spe[llgood] add good word for spelling
|:spellrepall| :spellr[epall] replace all bad words like last |z=|
|:spellwrong| :spellw[rong] add spelling mistake
|:split| :sp[lit] split current window
|:sprevious| :spr[evious] split window and go to previous file in the
argument list
@ -1355,6 +1429,7 @@ The commands are sorted on the non-optional part of their name.
|:stop| :st[op] suspend the editor or escape to a shell
|:stag| :sta[g] split window and jump to a tag
|:startinsert| :star[tinsert] start Insert mode
|:startgreplace| :startg[replace] start Virtual Replace mode
|:startreplace| :startr[eplace] start Replace mode
|:stopinsert|| :stopi[nsert] stop Insert mode
|:stjump| :stj[ump] do ":tjump" and split window
@ -1367,6 +1442,17 @@ The commands are sorted on the non-optional part of their name.
|:syncbind| :sync[bind] sync scroll binding
|:t| :t same as ":copy"
|:tNext| :tN[ext] jump to previous matching tag
|:tabNext| :tabN[ext] go to previous tab page
|:tabclose| :tabc[lose] close current tab page
|:tabedit| :tabe[dit] edit a file in a new tab page
|:tabfind| :tabf[ind] find file in 'path', edit it in a new tab page
|:tabmove| :tabm[ove] move tab page to other position
|:tabnew| :tabnew edit a file in a new tab page
|:tabnext| :tabn[ext] go to next tab page
|:tabonly| :tabo[nly] close all tab pages except the current one
|:tabprevious| :tabp[revious] go to previous tab page
|:tabs| :tabs list the tab pages and what they contain
|:tab| :tab create new tab when opening new window
|:tag| :ta[g] jump to tag
|:tags| :tags show the contents of the tag stack
|:tcl| :tc[l] execute Tcl command
@ -1391,6 +1477,7 @@ The commands are sorted on the non-optional part of their name.
|:unhide| :unh[ide] open a window for each loaded file in the
buffer list
|:unlet| :unl[et] delete variable
|:unlockvar| :unlo[ckvar] unlock variables
|:unmap| :unm[ap] remove mapping
|:unmenu| :unme[nu] remove menu
|:update| :up[date] write buffer if modified
@ -1398,7 +1485,10 @@ The commands are sorted on the non-optional part of their name.
|:version| :ve[rsion] print version number and other info
|:verbose| :verb[ose] execute command with 'verbose' set
|:vertical| :vert[ical] make following command split vertically
|:vimgrep| :vim[grep] search for pattern in files
|:vimgrepadd| :vimgrepa[dd] like :vimgrep, but append to current list
|:visual| :vi[sual] same as ":edit", but turns off "Ex" mode
|:viusage| :viu[sage] overview of Normal mode commands
|:view| :vie[w] edit a file read-only
|:vmap| :vm[ap] like ":map" but for Visual mode
|:vmapclear| :vmapc[lear] remove all mappings for Visual mode

View File

@ -1,4 +1,4 @@
*insert.txt* For Vim version 7.0aa. Last change: 2004 Jul 04
*insert.txt* For Vim version 7.0aa. Last change: 2006 Feb 23
VIM REFERENCE MANUAL by Bram Moolenaar
@ -53,7 +53,8 @@ char action ~
yourself to use CTRL-[.
*i_CTRL-C*
CTRL-C Quit insert mode, go back to Normal mode. Do not check for
abbreviations.
abbreviations. Does not trigger the |InsertLeave| autocommand
event.
*i_CTRL-@*
CTRL-@ Insert previously inserted text and stop insert. {Vi: only
@ -124,6 +125,11 @@ CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R*
'-' the last small (less than a line) delete
'=' the expression register: you are prompted to
enter an expression (see |expression|)
Note that 0x80 (128 decimal) is used for
special keys. E.g., you can use this to move
the cursor up:
CTRL-R ="\<Up>"
Use CTRL-R CTRL-R to insert text literally.
See |registers| about registers. {not in Vi}
CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R*
@ -186,7 +192,7 @@ CTRL-Q Same as CTRL-V.
work then. It does work in the GUI.
CTRL-X Enter CTRL-X mode. This is a sub-mode where commands can
be given to complete words or scroll the window. See
be given to complete words or scroll the window. See
|i_CTRL-X| and |ins-completion|. {not in Vi}
*i_CTRL-E*
@ -267,7 +273,7 @@ entered directly. This way you can enter any character, except a line break
first char mode max nr of chars max value ~
(none) decimal 3 255
o or O octal 3 255
o or O octal 3 377 (255)
x or X hexadecimal 2 ff (255)
u hexadecimal 4 ffff (65535)
U hexadecimal 8 7fffffff (2147483647)
@ -350,6 +356,8 @@ CTRL-G CTRL-J cursor one line down, insert start column *i_CTRL-G_CTRL-J*
<MouseUp> scroll three lines up *i_<MouseUp>*
<S-MouseUp> scroll a full page up *i_<S-MouseUp>*
CTRL-O execute one command, return to Insert mode *i_CTRL-O*
CTRL-\ CTRL-O like CTRL-O but don't move the cursor *i_CTRL-\_CTRL-O*
CTRL-L when 'insertmode' is set: go to Normal mode *i_CTRL-L*
CTRL-G u break undo sequence, start new change *i_CTRL-G_u*
-----------------------------------------------------------------------
@ -359,7 +367,8 @@ option.
The CTRL-O command sometimes has a side effect: If the cursor was beyond the
end of the line, it will be put on the last character in the line. In
mappings it's often better to use <Esc> (first put an "x" in the text, <Esc>
will then always put the cursor on it).
will then always put the cursor on it). Or use CTRL-\ CTRL-O, but then
beware of the cursor possibly being beyond the end of the line.
The shifted cursor keys are not available on all terminals.
@ -388,7 +397,7 @@ The CTRL-G j and CTRL-G k commands can be used to insert text in front of a
column. Example: >
int i;
int j;
Position the cursor on the first "int", type "istatic<C-G>j ". The
Position the cursor on the first "int", type "istatic <C-G>j ". The
result is: >
static int i;
int j;
@ -415,7 +424,7 @@ When 'textwidth' and 'wrapmargin' are both set, 'textwidth' is used.
If you don't really want to break the line, but view the line wrapped at a
convenient place, see the 'linebreak' option.
The line is only broken automatically when using insert mode, or when
The line is only broken automatically when using Insert mode, or when
appending to a line. When in replace mode and the line length is not
changed, the line will not be broken.
@ -431,6 +440,10 @@ characters to the 'formatoptions' option:
current insert command. Only differs from "l" when entering non-white
characters while crossing the 'textwidth' boundary.
Normally an internal function will be used to decide where to break the line.
If you want to do it in a different way set the 'formatexpr' option to an
expression that will take care of the line break.
If you want to format a block of text, you can use the "gq" operator. Type
"gq" and a movement command to move the cursor to the end of the block. In
many cases, the command "gq}" will do what you want (format until the end of
@ -543,7 +556,7 @@ entering new data while keeping all the columns aligned.
==============================================================================
7. Insert mode completion *ins-completion*
In Insert and Replace modes, there are several commands to complete part of a
In Insert and Replace mode, there are several commands to complete part of a
keyword or line that has been typed. This is useful if you are using
complicated keywords (e.g., function names with capitals and underscores).
@ -561,7 +574,10 @@ Completion can be done for:
7. file names |i_CTRL-X_CTRL-F|
8. definitions or macros |i_CTRL-X_CTRL-D|
9. Vim command-line |i_CTRL-X_CTRL-V|
10. keywords in 'complete' |i_CTRL-N|
10. User defined completion |i_CTRL-X_CTRL-U|
11. omni completion |i_CTRL-X_CTRL-O|
12. Spelling suggestions |i_CTRL-X_s|
13. keywords in 'complete' |i_CTRL-N|
All these (except 2) are done in CTRL-X mode. This is a sub-mode of Insert
and Replace modes. You enter CTRL-X mode by typing CTRL-X and one of the
@ -608,11 +624,11 @@ Completing whole lines *compl-whole-line*
*i_CTRL-X_CTRL-L*
CTRL-X CTRL-L Search backwards for a line that starts with the
same characters as in the current line before the
cursor. Indent is ignored. The found line is
same characters as those in the current line before
the cursor. Indent is ignored. The matching line is
inserted in front of the cursor.
The 'complete' option is used to decide in which
buffers a match is searched for. But only loaded
The 'complete' option is used to decide which buffers
are searched for a match. Both loaded and unloaded
buffers are used.
CTRL-L or
CTRL-P Search backwards for next matching line. This line
@ -664,6 +680,9 @@ at least two characters is matched.
just type:
printf("(%g, %g, %g)", vector[0], ^P[1], ^P[2]);
The search wraps around the end of the file, the value of 'wrapscan' is not
used here.
Multiple repeats of the same completion are skipped; thus a different match
will be inserted at each CTRL-N and CTRL-P (unless there is only one
matching keyword).
@ -722,7 +741,7 @@ CTRL-X CTRL-K Search the files given with the 'dictionary' option
keyword replaces the previous matching keyword.
*i_CTRL-X_CTRL-T*
CTRL-X CTRL-T Works as CTRL-X CTRL-K, but in a special way. It uses
CTRL-X CTRL-T Works as CTRL-X CTRL-K, but in a special way. It uses
the 'thesaurus' option instead of 'dictionary'. If a
match is found in the thesaurus file, all the
remaining words on the same line are included as
@ -835,7 +854,8 @@ CTRL-X CTRL-D Search in the current and included files for the
Completing Vim commands *compl-vim*
Completion is context-sensitive. It works like on the Command-line. It
completes an Ex command as well as its arguments.
completes an Ex command as well as its arguments. This is useful when writing
a Vim script.
*i_CTRL-X_CTRL-V*
CTRL-X CTRL-V Guess what kind of item is in front of the cursor and
@ -854,11 +874,11 @@ CTRL-X CTRL-V Guess what kind of item is in front of the cursor and
completion, for example: >
:imap <Tab> <C-X><C-V>
User defined completing *compl-function*
User defined completion *compl-function*
Completion is done by a function that can be defined by the user with the
'completefunc' option. See the option for how the function is called and an
example.
'completefunc' option. See below for how the function is called and an
example |complete-functions|.
*i_CTRL-X_CTRL-U*
CTRL-X CTRL-U Guess what kind of item is in front of the cursor and
@ -871,6 +891,47 @@ CTRL-X CTRL-U Guess what kind of item is in front of the cursor and
previous one.
Omni completion *compl-omni*
Completion is done by a function that can be defined by the user with the
'omnifunc' option. This is to be used for filetype-specific completion.
See below for how the function is called and an example |complete-functions|.
For remarks about specific filetypes see |compl-omni-filetypes|.
*i_CTRL-X_CTRL-O*
CTRL-X CTRL-O Guess what kind of item is in front of the cursor and
find the first match for it.
CTRL-O or
CTRL-N Use the next match. This match replaces the previous
one.
CTRL-P Use the previous match. This match replaces the
previous one.
Spelling suggestions *compl-spelling*
A word before or at the cursor is located and correctly spelled words are
suggested to replace it. If there is a badly spelled word in the line, before
or under the cursor, the cursor is moved to after it. Otherwise the word just
before the cursor is used for suggestions, even though it isn't badly spelled.
NOTE: CTRL-S suspends display in many Unix terminals. Use 's' instead. Type
CTRL-Q to resume displaying.
*i_CTRL-X_CTRL-S* *i_CTRL-X_s*
CTRL-X CTRL-S or
CTRL-X s Locate the word in front of the cursor and find the
first spell suggestion for it.
CTRL-S or
CTRL-N Use the next suggestion. This replaces the previous
one. Note that you can't use 's' here.
CTRL-P Use the previous suggestion. This replaces the
previous one.
Completing keywords from different sources *compl-generic*
*i_CTRL-N*
@ -896,6 +957,426 @@ CTRL-P Find previous match for words that start with the
copy the words following the previous expansion in
other contexts unless a double CTRL-X is used.
FUNCTIONS FOR FINDING COMPLETIONS *complete-functions*
This applies to 'completefunc' and 'omnifunc'.
The function is called in two different ways:
- First the function is called to find the start of the text to be completed.
- Later the function is called to actually find the matches.
On the first invocation the arguments are:
a:findstart 1
a:base empty
The function must return the column where the completion starts. It must be a
number between zero and the cursor column "col('.')". This involves looking
at the characters just before the cursor and including those characters that
could be part of the completed item. The text between this column and the
cursor column will be replaced with the matches. Return -1 if no completion
can be done.
On the second invocation the arguments are:
a:findstart 0
a:base the text with which matches should match; the text that was
located in the first call (can be empty)
The function must return a List with the matching words. These matches
usually include the "a:base" text. When there are no matches return an empty
List.
Each list item can either be a string or a Dictionary. When it is a string it
is used as the completion. When it is a Dictionary it can contain these
items:
word the completion, mandatory
menu extra text for the popup menu
info more information about the item
kind single letter indicating the type of completion
icase when not zero case is to be ignored; when omitted
the 'ignorecase' option is used
All of these except 'icase' must be a string. If an item does not meet these
requirements then an error message is given and further items in the list are
not used. You can mix string and Dictionary items in the returned list.
The "menu" item is used in the popup menu and may be truncated, thus it should
be relatively short. The "info" item can be longer, it may be displayed in a
balloon.
The "kind" item uses a single letter to indicate the kind of completion. This
may be used to show the completion differently (different color or icon).
Currently these types can be used:
v variable
f function or method
c composite (struct, object)
When searching for matches takes some time call |complete_add()| to add each
match to the total list. These matches should then not appear in the returned
list! Call |complete_check()| now and then to allow the user to press a key
while still searching for matches. Stop searching when it returns non-zero.
The function is allowed to move the cursor, it is restored afterwards. This
option cannot be set from a |modeline| or in the |sandbox|, for security
reasons.
An example that completes the names of the months: >
fun! CompleteMonths(findstart, base)
if a:findstart
" locate the start of the word
let line = getline('.')
let start = col('.') - 1
while start > 0 && line[start - 1] =~ '\a'
let start -= 1
endwhile
return start
else
" find months matching with "a:base"
let res = []
for m in split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec")
if m =~ '^' . a:base
call add(res, m)
endif
endfor
return res
endif
endfun
set completefunc=CompleteMonths
<
The same, but now pretending searching for matches is slow: >
fun! CompleteMonths(findstart, base)
if a:findstart
" locate the start of the word
let line = getline('.')
let start = col('.') - 1
while start > 0 && line[start - 1] =~ '\a'
let start -= 1
endwhile
return start
else
" find months matching with "a:base"
for m in split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec")
if m =~ '^' . a:base
call complete_add(m)
endif
sleep 300m " simulate searching for next match
if complete_check()
break
endif
endfor
return []
endif
endfun
set completefunc=CompleteMonths
<
INSERT COMPLETION POPUP MENU *ins-completion-menu*
*popupmenu-completion*
Vim can display the matches in a simplistic popup menu.
The menu is used when:
- The 'completeopt' option contains "menu".
- The terminal supports at least 8 colors.
- There are at least two matches.
There are two states:
1. A complete match has been inserted.
2. Only part of a match has been inserted.
You normally start in the first state, with the first match being inserted.
When "longest" is in 'completeopt' and there is more than one match you start
in the second state.
If you select another match, e.g., with CTRL-N or CTRL-P, you go from the
second to the first state. This doesn't change the list of matches.
In the first state these keys have a special meaning:
<BS> and CTRL-H Delete one character, find the matches for the word before
the cursor. This reduces the list of matches, often to one
entry, and switches to the second state.
In the second state these keys have a special meaning:
<BS> and CTRL-H Delete one character, find the matches for the shorter word
before the cursor. This may find more matches.
CTRL-L Add one character from the current match, may reduce the
number of matches.
any printable, non-white character:
Add this character and reduce the number of matches.
In both states these can be used:
<CR> and <Enter> Accept the currently selected match and stop completion.
<PageUp> Select a match several entries back, but don't insert it.
<PageDown> Select a match several entries further, but don't insert it.
<Up> Select the previous match, as if CTRL-P was used, but don't
insert it.
<Down> Select the next match, as if CTRL-N was used, but don't
insert it.
Any other character:
Stop completion without changing the match and insert the
typed character. Note that typing a space or <Tab> will
work in both states.
The colors of the menu can be changed with these highlight groups:
Pmenu normal item |hl-Pmenu|
PmenuSel selected item |hl-PmenuSel|
PmenuSbar scrollbar |hl-PmenuSbar|
PmenuThumb thumb of the scrollbar |hl-PmenuThumb|
There are no special mappings for when the popup menu is visible. However,
you can use an Insert mode mapping that checks the |pumvisible()| function to
do something different. Example: >
:inoremap <Down> <C-R>=pumvisible() ? "\<lt>C-N>" : "\<lt>Down>"<CR>
FILETYPE-SPECIFIC REMARKS FOR OMNI COMPLETION *compl-omni-filetypes*
The file used for {filetype} should be autoload/{filetype}complete.vim
in 'runtimepath'. Thus for "java" it is autoload/javacomplete.vim.
C *ft-c-omni*
Completion of C code requires a tags file. You should use Exuberant ctags,
because it adds extra information that is needed for completion. You can find
it here: http://ctags.sourceforge.net/
For version 5.5.4 you should add a patch that adds the "typename:" field:
ftp://ftp.vim.org/pub/vim/unstable/patches/ctags-5.5.4.patch
A compiled .exe for MS-Windows can be found at:
http://georgevreilly.com/vim/ctags.html
If you want to complete system functions you can do something like this. Use
ctags to generate a tags file for all the system header files: >
% ctags -R -f ~/.vim/systags /usr/include /usr/local/include
In your vimrc file add this tags file to the 'tags' option: >
set tags+=~/.vim/systags
When using CTRL-X CTRL-O after a name without any "." or "->" it is completed
from the tags file directly. This works for any identifier, also function
names. If you want to complete a local variable name, which does not appear
in the tags file, use CTRL-P instead.
When using CTRL-X CTRL-O after something that has "." or "->" Vim will attempt
to recognize the type of the variable and figure out what members it has.
This means only members valid for the variable will be listed.
When a member name already was complete, CTRL-X CTRL-O will add a "." or
"->" for composite types.
Vim doesn't include a C compiler, only the most obviously formatted
declarations are recognized. Preprocessor stuff may cause confusion.
When the same structure name appears in multiple places all possible members
are included.
CSS *ft-css-omni*
Complete properties and their appropriate values according to CSS 2.1
specification.
HTML and XHTML *ft-html-omni*
*ft-xhtml-omni*
CTRL-X CTRL-O provides completion of various elements of (X)HTML files. It is
designed to support writing of XHTML 1.0 Strict files but will also works for
other versions of HTML. Features:
- after "<" complete tag name depending on context (no div suggestion inside
of an a tag); '/>' indicates empty tags
- inside of tag complete proper attributes (no width attribute for an a tag);
show also type of attribute; '*' indicates required attributes
- when attribute has limited number of possible values help to complete them
- complete names of entities
- complete values of "class" and "id" attributes with data obtained from
<style> tag and included CSS files
- when completing value of "style" attribute or working inside of "style" tag
switch to |ft-css-omni| completion
- when completing values of events attributes or working inside of "script"
tag switch to |ft-javascript-omni| completion
- when used after "</" CTRL-X CTRL-O will close the last opened tag
Note: When used first time completion menu will be shown with little delay
- this is time needed for loading of data file.
Note: Completion may fail in badly formatted documents. In such case try to
run |:make| command to detect formatting problems.
JAVASCRIPT *ft-javascript-omni*
Completion of most elements of JavaScript language and DOM elements.
Complete:
- variables
- function name; show function arguments
- function arguments
- properties of variables trying to detect type of variable
- complete DOM objects and properties depending on context
- keywords of language
Completion works in separate JavaScript files (&ft==javascript), inside of
<script> tag of (X)HTML and in values of event attributes (including scanning
of external files.
DOM compatibility
At the moment (beginning of 2006) there are two main browsers - MS Internet
Explorer and Mozilla Firefox. These two applications are covering over 90% of
market. Theoretically standards are created by W3C organisation
(http://www.w3c.org) but they are not always followed/implemented.
IE FF W3C Omni completion ~
+/- +/- + + ~
+ + - + ~
+ - - - ~
- + - - ~
Regardless from state of implementation in browsers but if element is defined
in standards, completion plugin will place element in suggestion list. When
both major engines implemented element, even if this is not in standards it
will be suggested. All other elements are not placed in suggestion list.
SYNTAX *ft-syntax-omni*
This uses the current syntax highlighting for completion. It can be used for
any filetype and provides a minimal language-sensitive completion.
To enable code completion do: >
source $VIMRUNTIME/autoload/syntaxcomplete.vim
You can automate this by placing this in your vimrc (after any ":filetype"
command): >
autocmd Filetype *
\ if exists('&ofu') && &ofu == "" |
\ source $VIMRUNTIME/autoload/syntaxcomplete.vim |
\ endif
The above will set completion to this script only if a proper one does not
already exist for that filetype.
XML *ft-xml-omni*
Vim 7 provides mechanism to context aware completion of XML files. It depends
on special |xml-omni-datafile| and two commands: |:XMLns| and |:XMLent|.
Features are:
- after "<" complete tag name depending on context (no div suggest
inside of an a tag)
- inside of tag complete proper attributes (no width attribute for an
a tag)
- when attribute has limited number of possible values help to complete
them
- complete names of entities (defined in |xml-omni-datafile| and in current file
with "<!ENTITY" declarations
- when used after "</" CTRL-X CTRL-O will close the last opened tag
Format of XML data file *xml-omni-datafile*
Vim distribution provides two data files as examples (xhtml10s.vim, xsl.vim)
XML data files are stored in "autoload/xml" directory in 'runtimepath'. They
have meaningful name which will be used in commands. It should be unique name
which will not create conflicts in future. For example name xhtml10s.vim means
it is data file for XHTML 1.0 Strict.
File contains one variable with fixed name: g:xmldata_xhtml10s . It is
compound from two parts:
1. "g:xmldata_" general prefix
2. "xhtml10s" name of file and name of described XML dialect
Part two must be exactly the same as name of file.
Variable is data structure in form of |Dictionary|. Keys are tag names and
values are two element |List|. First element of List is also List with names
of possible children, second element is |Dictionary| with names of attributes
as keys and possible values of attributes as values. Example: >
let g:xmldata_crippledhtml = {
\ "html":
\ [ ["body", "head"], {"id": [], "xmlns": ["http://www.w3.org/1999/xhtml"],
\ "lang": [], "xml:lang": [], "dir": ["ltr", "rtl"]}],
\ "script":
\ [ [], {"id": [], "charset": [], "type": ["text/javascript"], "src": [],
\ "defer": ["BOOL"], "xml:space": ["preserve"]}],
\ "meta":
\ [ [], {"id": [], "http-equiv": [], "name": [], "content": [], "scheme":
\ [], "lang": [], "xml:lang": [], "dir": ["ltr", "rtl"]}]
\ "vimxmlentities": ["amp", "lt", "gt", "apos", "quot"]},
\ "vimxmltaginfo": {
\ 'meta': ['/>', '']},
\ "vimxmlattrinfo": {
\ 'http-equiv': ['ContentType', '']}
This example should be put in "autoload/xml/crippledhtml.vim" file.
In example are visible four special elements:
1. "vimxmlentities" - special key with List containing entities of this XML
dialect.
2. "BOOL" - value of attribute key showing if attribute should be inserted
bare ("defer" vs. 'defer="'). It can be the only element of List of
attribute values.
3. "vimxmltaginfo" - special key with dictionary containing as key tag names,
as value two element List for additional menu info and long description.
4. "vimxmlattrinfo" - special key with dictionary containing as key attribute
names, as value two element List for additional menu info and long
description.
Note: Tag names in data file MUST not contain namespace description. Check
xsl.vim for example.
Commands
:XMLns {name} [{namespace}] *:XMLns*
Vim has to know which data file should be used and with which namespace. For
loading of data file and connecting data with prope namespace use |:XMLns|
command. First (obligatory) argument is name of data (xhtml10s, xsl). Second
argument is code of namespace (h, xsl). When used without second argument
dialect will be used as default - without namespace declaration. For example
to use XML completion in .xsl files: >
:XMLns xhtml10s
:XMLns xsl xsl
:XMLent {name} *:XMLent*
By default entities will be completed from data file of default
namespace. XMLent command should be used in case when there is no
default namespace: >
:XMLent xhtml10s
Usage
While used in situation (after declarations from previous part, | is
cursor position): >
<|
Will complete to appropriate XHTML tag, and in this situation: >
<xsl:|
Will complete to appropriate XSL tag.
File xmlcomplete.vim provides through |autoload| mechanism
GetLastOpenTag function which can be used in XML files to get name of
last open tag with (b:unaryTagsStack has to be defined): >
:echo xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
==============================================================================
8. Insert mode commands *inserting*
@ -918,6 +1399,9 @@ i Insert text before the cursor [count] times.
*I*
I Insert text before the first non-blank in the line
[count] times.
When the 'H' flag is present in 'cpoptions' and the
line only contains blanks, insert start just before
the last blank.
*gI*
gI Insert text in column 1 [count] times. {not in Vi}
@ -937,11 +1421,15 @@ gi Insert text in the same position as where Insert mode
o Begin a new line below the cursor and insert text,
repeat [count] times. {Vi: blank [count] screen
lines}
When the '#' flag is in 'cpoptions' the count is
ignored.
*O*
O Begin a new line above the cursor and insert text,
repeat [count] times. {Vi: blank [count] screen
lines}
When the '#' flag is in 'cpoptions' the count is
ignored.
These commands are used to start inserting text. You can end insert mode with
<Esc>. See |mode-ins-repl| for the other special characters in Insert mode.
@ -959,20 +1447,31 @@ too long when appending characters a line break is automatically inserted.
9. Ex insert commands *inserting-ex*
*:a* *:append*
:{range}a[ppend] Insert several lines of text below the specified
:{range}a[ppend][!] Insert several lines of text below the specified
line. If the {range} is missing, the text will be
inserted after the current line.
Adding [!] toggles 'autoindent' for the time this
command is executed.
*:i* *:in* *:insert*
:{range}i[nsert] Insert several lines of text above the specified
:{range}i[nsert][!] Insert several lines of text above the specified
line. If the {range} is missing, the text will be
inserted before the current line.
Adding [!] toggles 'autoindent' for the time this
command is executed.
These two commands will keep on asking for lines, until you type a line
containing only a ".". Watch out for lines starting with a backslash, see
|line-continuation|.
When these commands are used with |:global| or |:vglobal| then the lines are
obtained from the text following the command. Separate lines with a NL
escaped with a backslash: >
:global/abc/insert\
one line\
another line
The final "." is not needed then.
NOTE: ":append" and ":insert" don't work properly in between ":if" and
":endif".
":endif", ":for" and ":endfor", ":while" and ":endwhile".
*:start* *:startinsert*
:star[tinsert][!] Start Insert mode just after executing this command.
@ -982,6 +1481,7 @@ NOTE: ":append" and ":insert" don't work properly in between ":if" and
Note that when using this command in a function or
script, the insertion only starts after the function
or script is finished.
This command does not work from |:normal|.
{not in Vi}
{not available when compiled without the +ex_extra
feature}
@ -1003,6 +1503,13 @@ NOTE: ":append" and ":insert" don't work properly in between ":if" and
the function or script is finished.
{not in Vi}
{not available when compiled without the +ex_extra
feature}
*:startgreplace*
:startg[replace][!] Just like |:startreplace|, but use Virtual Replace
mode, like with |gR|.
{not in Vi}
{not available when compiled without the +ex_extra
feature}
==============================================================================

View File

@ -1,4 +1,4 @@
*intro.txt* For Vim version 7.0aa. Last change: 2004 Jun 12
*intro.txt* For Vim version 7.0aa. Last change: 2005 Sep 01
VIM REFERENCE MANUAL by Bram Moolenaar
@ -151,31 +151,19 @@ example and try to find out which settings or other things influence the
appearance of the bug. Try different machines, if possible. Send me patches
if you can!
In case of doubt, use: >
It will help to include information about the version of Vim you are using and
your setup. You can get the information with this command: >
:so $VIMRUNTIME/bugreport.vim
This will create a file "bugreport.txt" in the current directory, with a lot
of information of your environment. Before sending this out, check if it
doesn't contain any confidential information!
*debug-vim*
When Vim crashes in one of the test files, and you are using gcc for
compilation, here is what you can do to find out exactly where Vim crashes:
If Vim crashes, please try to find out where. You can find help on this here:
|debug.txt|.
1. Compile Vim with the "-g" option (there is a line in the Makefile for this,
which you can uncomment).
2. Execute these commands (replace "11" with the test that fails): >
cd testdir
gdb ../vim
run -u unix.vim -U NONE -s dotest.in test11.in
3. Check where Vim crashes, gdb should give a message for this.
4. Get a stack trace from gdb with this command: >
where
< You can check out different places in the stack trace with: >
frame 3
< Replace "3" with one of the numbers in the stack trace.
In case of doubt or when you wonder if the problem has already been fixed but
you can't find a fix for it, become a member of the vim-dev maillist and ask
your question there. |maillist|
*year-2000* *Y2K*
Since Vim internally doesn't use dates for editing, there is no year 2000
@ -198,7 +186,7 @@ The user may create scripts for Vim that use external commands. These might
introduce Y2K problems, but those are not really part of Vim itself.
==============================================================================
3. Credits *credits* *author*
3. Credits *credits* *author* *Bram* *Moolenaar*
Most of Vim was written by Bram Moolenaar <Bram@vim.org>.
@ -226,12 +214,14 @@ Vim would never have become what it is now, without the help of these people!
Kayhan Demirel sent me news in Uganda
Chris & John Downey xvi (ideas for multi-windows version)
Henk Elbers first VMS port
Daniel Elstner GTK+ 2 port
Eric Fischer Mac port, 'cindent', and other improvements
Benji Fisher Answering lots of user questions
Bill Foster Athena GUI port
Loic Grenie xvim (ideas for multi windows version)
Sven Guckes Vim promotor and previous WWW page maintainer
Darren Hiebert Exuberant ctags
Jason Hildebrand GTK+ 2 port
Bruce Hunsaker improvements for VMS port
Andy Kahn Cscope support, GTK+ GUI port
Oezguer Kesim Maintainer of Vim Mailing Lists
@ -276,7 +266,7 @@ the ideas from all these people: They keep Vim alive!
In this documentation there are several references to other versions of Vi:
*Vi*
*Vi* *vi*
Vi "the original". Without further remarks this is the version
of Vi that appeared in Sun OS 4.x. ":version" returns
"Version 3.7, 6/7/85". Sometimes other versions are referred
@ -287,8 +277,7 @@ Vi "the original". Without further remarks this is the version
Posix From the IEEE standard 1003.2, Part 2: Shell and utilities.
Generally known as "Posix". This is a textual description of
how Vi is supposed to work.
The version used is a draft from beginning 1996, so all remarks are
"expected to comply to" this. Anything can change though...
See |posix-compliance|.
*Nvi*
Nvi The "New" Vi. The version of Vi that comes with BSD 4.4 and FreeBSD.
Very good compatibility with the original Vi, with a few extensions.
@ -329,11 +318,11 @@ and <> are part of what you type, the context should make this clear.
["x] An optional register designation where text can be stored.
See |registers|. The x is a single character between 'a' and
'z' or 'A' and 'Z' or '"', and in some cases (with the put
command) between '0' and '9', '%', '#', or others. The
command) between '0' and '9', '%', '#', or others. The
uppercase and lowercase letter designate the same register,
but the lowercase letter is used to overwrite the previous
register contents, while the uppercase letter is used to
append to the previous register contents. Without the ""x" or
append to the previous register contents. Without the ""x" or
with """" the stored text is put into the unnamed register.
*{}*
@ -348,7 +337,7 @@ and <> are part of what you type, the context should make this clear.
concatenated. For example, {a-zA-Z0-9} is any alphanumeric
character.
*{motion}*
*{motion}* *movement*
{motion} A command that moves the cursor. These are explained in
|motion.txt|. Examples:
w to start of next word
@ -689,9 +678,9 @@ Q Switch to "Ex" mode. This is a bit like typing ":"
|vimrc_example.vim| script "Q" works like "gq".
*gQ*
gQ Switch to "Ex" mode, but really behave like typing ":"
commands after another. All command line editing,
completion etc. is available.
gQ Switch to "Ex" mode like with "Q", but really behave
like typing ":" commands after another. All command
line editing, completion etc. is available.
Use the ":vi" command |:visual| to exit "Ex" mode.
{not in Vi}

View File

@ -1,4 +1,4 @@
*map.txt* For Vim version 7.0aa. Last change: 2004 May 21
*map.txt* For Vim version 7.0aa. Last change: 2006 Feb 10
VIM REFERENCE MANUAL by Bram Moolenaar
@ -10,6 +10,17 @@ This subject is introduced in sections |05.3|, |24.7| and |40.1| of the user
manual.
1. Key mapping |key-mapping|
1.1 MAP COMMANDS |:map-commands|
1.2 Special arguments |:map-arguments|
1.3 Mapping and modes |:map-modes|
1.4 Listing mappings |map-listing|
1.5 Mapping special keys |:map-special-keys|
1.6 Special characters |:map-special-chars|
1.7 What keys to map |map-which-keys|
1.8 Examples |map-examples|
1.9 Using mappings |map-typing|
1.10 Mapping alt-keys |:map-alt-keys|
1.11 Mapping an operator |:map-operator|
2. Abbreviations |abbreviations|
3. Local mappings and functions |script-local|
4. User-defined commands |user-commands|
@ -22,7 +33,10 @@ is to define a sequence commands for a function key. Example: >
:map <F2> a<C-R>=strftime("%c")<CR><Esc>
This appends the current date and time after the cursor. (in <> notation |<>|)
This appends the current date and time after the cursor (in <> notation |<>|).
1.1 MAP COMMANDS *:map-commands*
There are commands to enter new mappings, remove mappings and list mappings.
See |map-overview| for the various forms of "map" and their relationships with
@ -31,42 +45,42 @@ modes.
{lhs} means left-hand-side *{lhs}*
{rhs} means right-hand-side *{rhs}*
:map {lhs} {rhs} *:map*
:nm[ap] {lhs} {rhs} *:nm* *:nmap*
:vm[ap] {lhs} {rhs} *:vm* *:vmap*
:om[ap] {lhs} {rhs} *:om* *:omap*
:map! {lhs} {rhs} *:map!*
:im[ap] {lhs} {rhs} *:im* *:imap*
:lm[ap] {lhs} {rhs} *:lm* *:lmap*
:cm[ap] {lhs} {rhs} *:cm* *:cmap*
:map {lhs} {rhs} |mapmode-nvo| *:map*
:nm[ap] {lhs} {rhs} |mapmode-n| *:nm* *:nmap*
:vm[ap] {lhs} {rhs} |mapmode-v| *:vm* *:vmap*
:om[ap] {lhs} {rhs} |mapmode-o| *:om* *:omap*
:map! {lhs} {rhs} |mapmode-ic| *:map!*
:im[ap] {lhs} {rhs} |mapmode-i| *:im* *:imap*
:lm[ap] {lhs} {rhs} |mapmode-l| *:lm* *:lmap*
:cm[ap] {lhs} {rhs} |mapmode-c| *:cm* *:cmap*
Map the key sequence {lhs} to {rhs} for the modes
where the map command applies. The result, including
{rhs}, is then further scanned for mappings. This
allows for nested and recursive use of mappings.
:no[remap] {lhs} {rhs} *:no* *:noremap*
:nn[oremap] {lhs} {rhs} *:nn* *:nnoremap*
:vn[oremap] {lhs} {rhs} *:vn* *:vnoremap*
:ono[remap] {lhs} {rhs} *:ono* *:onoremap*
:no[remap]! {lhs} {rhs} *:no!* *:noremap!*
:ino[remap] {lhs} {rhs} *:ino* *:inoremap*
:ln[oremap] {lhs} {rhs} *:ln* *:lnoremap*
:cno[remap] {lhs} {rhs} *:cno* *:cnoremap*
:no[remap] {lhs} {rhs} |mapmode-nvo| *:no* *:noremap*
:nn[oremap] {lhs} {rhs} |mapmode-n| *:nn* *:nnoremap*
:vn[oremap] {lhs} {rhs} |mapmode-v| *:vn* *:vnoremap*
:ono[remap] {lhs} {rhs} |mapmode-o| *:ono* *:onoremap*
:no[remap]! {lhs} {rhs} |mapmode-ic| *:no!* *:noremap!*
:ino[remap] {lhs} {rhs} |mapmode-i| *:ino* *:inoremap*
:ln[oremap] {lhs} {rhs} |mapmode-l| *:ln* *:lnoremap*
:cno[remap] {lhs} {rhs} |mapmode-c| *:cno* *:cnoremap*
Map the key sequence {lhs} to {rhs} for the modes
where the map command applies. Disallow mapping of
{rhs}, to avoid nested and recursive mappings. Often
used to redefine a command. {not in Vi}
:unm[ap] {lhs} *:unm* *:unmap*
:nun[map] {lhs} *:nun* *:nunmap*
:vu[nmap] {lhs} *:vu* *:vunmap*
:ou[nmap] {lhs} *:ou* *:ounmap*
:unm[ap]! {lhs} *:unm!* *:unmap!*
:iu[nmap] {lhs} *:iu* *:iunmap*
:lu[nmap] {lhs} *:lu* *:lunmap*
:cu[nmap] {lhs} *:cu* *:cunmap*
:unm[ap] {lhs} |mapmode-nvo| *:unm* *:unmap*
:nun[map] {lhs} |mapmode-n| *:nun* *:nunmap*
:vu[nmap] {lhs} |mapmode-v| *:vu* *:vunmap*
:ou[nmap] {lhs} |mapmode-o| *:ou* *:ounmap*
:unm[ap]! {lhs} |mapmode-ic| *:unm!* *:unmap!*
:iu[nmap] {lhs} |mapmode-i| *:iu* *:iunmap*
:lu[nmap] {lhs} |mapmode-l| *:lu* *:lunmap*
:cu[nmap] {lhs} |mapmode-c| *:cu* *:cunmap*
Remove the mapping of {lhs} for the modes where the
map command applies. The mapping may remain defined
for other modes where it applies.
@ -75,38 +89,38 @@ modes.
:map @@ foo
:unmap @@ | print
:mapc[lear] *:mapc* *:mapclear*
:nmapc[lear] *:nmapc* *:nmapclear*
:vmapc[lear] *:vmapc* *:vmapclear*
:omapc[lear] *:omapc* *:omapclear*
:mapc[lear]! *:mapc!* *:mapclear!*
:imapc[lear] *:imapc* *:imapclear*
:lmapc[lear] *:lmapc* *:lmapclear*
:cmapc[lear] *:cmapc* *:cmapclear*
:mapc[lear] |mapmode-nvo| *:mapc* *:mapclear*
:nmapc[lear] |mapmode-n| *:nmapc* *:nmapclear*
:vmapc[lear] |mapmode-v| *:vmapc* *:vmapclear*
:omapc[lear] |mapmode-o| *:omapc* *:omapclear*
:mapc[lear]! |mapmode-ic| *:mapc!* *:mapclear!*
:imapc[lear] |mapmode-i| *:imapc* *:imapclear*
:lmapc[lear] |mapmode-l| *:lmapc* *:lmapclear*
:cmapc[lear] |mapmode-c| *:cmapc* *:cmapclear*
Remove ALL mappings for the modes where the map
command applies. {not in Vi}
Warning: This also removes the default mappings.
:map
:nm[ap]
:vm[ap]
:om[ap]
:map!
:im[ap]
:lm[ap]
:cm[ap]
:map |mapmode-nvo|
:nm[ap] |mapmode-n|
:vm[ap] |mapmode-v|
:om[ap] |mapmode-o|
:map! |mapmode-ic|
:im[ap] |mapmode-i|
:lm[ap] |mapmode-l|
:cm[ap] |mapmode-c|
List all key mappings for the modes where the map
command applies. Note that ":map" and ":map!" are
used most often, because they include the other modes.
:map {lhs} *:map_l*
:nm[ap] {lhs} *:nmap_l*
:vm[ap] {lhs} *:vmap_l*
:om[ap] {lhs} *:omap_l*
:map! {lhs} *:map_l!*
:im[ap] {lhs} *:imap_l*
:lm[ap] {lhs} *:lmap_l*
:cm[ap] {lhs} *:cmap_l*
:map {lhs} |mapmode-nvo| *:map_l*
:nm[ap] {lhs} |mapmode-n| *:nmap_l*
:vm[ap] {lhs} |mapmode-v| *:vmap_l*
:om[ap] {lhs} |mapmode-o| *:omap_l*
:map! {lhs} |mapmode-ic| *:map_l!*
:im[ap] {lhs} |mapmode-i| *:imap_l*
:lm[ap] {lhs} |mapmode-l| *:lmap_l*
:cm[ap] {lhs} |mapmode-c| *:cmap_l*
List the key mappings for the key sequences starting
with {lhs} in the modes where the map command applies.
{not in Vi}
@ -116,6 +130,21 @@ characters. You can use this to put command sequences under function keys,
translate one key into another, etc. See |:mkexrc| for how to save and
restore the current mappings.
*map-ambiguous*
When two mappings start with the same sequence of characters, they are
ambiguous. Example: >
:imap aa foo
:imap aaa bar
When Vim has read "aa", it will need to get another character to be able to
decide if "aa" or "aaa" should be mapped. This means that after typing "aa"
that mapping won't get expanded yet, Vim is waiting for another character.
If you type a space, then "foo" will get inserted, plus the space. If you
type "a", then "bar" will get inserted.
{Vi does not allow ambiguous mappings}
1.2 SPECIAL ARGUMENTS *:map-arguments*
*:map-local* *:map-<buffer>* *E224* *E225*
If the first argument to one of these commands is "<buffer>" it will apply to
mappings locally to the current buffer only. Example: >
@ -162,19 +191,21 @@ already exists which is equal.
Example of what will fail: >
:map ,w /[#&!]<CR>
:map <buffer> <unique> ,w /[.,;]<CR>
If you want to map a key and then have it do what it was originally mapped to,
have a look at |maparg()|.
"<buffer>", "<silent>", "<script>" and "<unique>" can be used in any order.
They must appear right after the command, before any other arguments.
MAPPING AND MODES
1.3 MAPPING AND MODES *:map-modes*
There are five sets of mappings
- For Normal mode: When typing commands.
- For Visual mode: When typing commands while the Visual area is highlighted.
- For Operator-pending mode: When an operator is pending (after "d", "y", "c",
etc.). Example: ":omap { w" makes "y{" work like "yw" and "d{" like "dw".
- For Insert mode. These are also used in Replace mode.
- For Insert mode. These are also used in Replace mode.
- For Command-line mode: When entering a ":" or "/" command.
There are no separate mappings for Select mode. The same as for Visual mode
@ -187,6 +218,7 @@ to type a count with a zero.
*map-overview* *map-modes*
Overview of which map command works in which mode:
*mapmode-nvo* *mapmode-n* *mapmode-v* *mapmode-o*
commands: modes: ~
Normal Visual Operator-pending ~
:map :noremap :unmap :mapclear yes yes yes
@ -194,6 +226,7 @@ Overview of which map command works in which mode:
:vmap :vnoremap :vunmap :vmapclear - yes -
:omap :onoremap :ounmap :omapclear - - yes
*mapmode-ic* *mapmode-i* *mapmode-c* *mapmode-l*
Insert Command-line Lang-Arg ~
:map! :noremap! :unmap! :mapclear! yes yes -
:imap :inoremap :iunmap :imapclear yes - -
@ -232,25 +265,13 @@ command line (not a search pattern) the mappings are disabled until a CTRL-^
is typed. The state last used is remembered for Insert mode and Search
patterns separately. The state for Insert mode is also used when typing a
character as an argument to command like "f" or "t".
When adding a ":lmap" mapping the use of these mappings in Insert mode and
for Search patterns will be switched on.
Language mappings will never be applied to already mapped characters. They
are only used for typed characters. This assumes that the language mapping
was already done when typing the mapping.
*map-multibyte*
It is possible to map multibyte characters, but only the whole character. You
cannot map the first byte only. This was done to prevent problems in this
scenario: >
:set encoding=latin1
:imap <M-C> foo
:set encoding=utf-8
The mapping for <M-C> is defined with the latin1 encoding, resulting in a 0xc3
byte. If you type the character <20> (0xea <M-a>) in UTF-8 encoding this is the
two bytes 0xc3 0xa1. You don't want the 0xc3 byte to be mapped then,
otherwise it would be impossible to type the <20> character.
*map-listing*
1.4 LISTING MAPPINGS *map-listing*
When listing mappings the characters in the first two columns are:
CHAR MODE ~
@ -275,6 +296,58 @@ with a space.
Note: When using mappings for Visual mode, you can use the "'<" mark, which
is the start of the last selected Visual area in the current buffer |'<|.
*:map-verbose*
When 'verbose' is non-zero, listing a key map will also display where it was
last defined. Example: >
:verbose map <C-W>*
n <C-W>* * <C-W><C-S>*
Last set from /home/abcd/.vimrc
See |:verbose-cmd| for more information.
1.5 MAPPING SPECIAL KEYS *:map-special-keys*
There are three ways to map a special key:
1. The Vi-compatible method: Map the key code. Often this is a sequence that
starts with <Esc>. To enter a mapping like this you type ":map " and then
you have to type CTRL-V before hitting the function key. Note that when
the key code for the key is in the termcap (the t_ options), it will
automatically be translated into the internal code and become the second
way of mapping (unless the 'k' flag is included in 'cpoptions').
2. The second method is to use the internal code for the function key. To
enter such a mapping type CTRL-K and then hit the function key, or use
the form "#1", "#2", .. "#9", "#0", "<Up>", "<S-Down>", "<S-F7>", etc.
(see table of keys |key-notation|, all keys from <Up> can be used). The
first ten function keys can be defined in two ways: Just the number, like
"#2", and with "<F>", like "<F2>". Both stand for function key 2. "#0"
refers to function key 10, defined with option 't_f10', which may be
function key zero on some keyboards. The <> form cannot be used when
'cpoptions' includes the '<' flag.
3. Use the termcap entry, with the form <t_xx>, where "xx" is the name of the
termcap entry. Any string entry can be used. For example: >
:map <t_F3> G
< Maps function key 13 to "G". This does not work if 'cpoptions' includes
the '<' flag.
The advantage of the second and third method is that the mapping will work on
different terminals without modification (the function key will be
translated into the same internal code or the actual key code, no matter what
terminal you are using. The termcap must be correct for this to work, and you
must use the same mappings).
DETAIL: Vim first checks if a sequence from the keyboard is mapped. If it
isn't the terminal key codes are tried (see |terminal-options|). If a
terminal code is found it is replaced with the internal code. Then the check
for a mapping is done again (so you can map an internal code to something
else). What is written into the script file depends on what is recognized.
If the terminal key code was recognized as a mapping the key code itself is
written to the script file. If it was recognized as a terminal code the
internal code is written to the script file.
1.6 SPECIAL CHARACTERS *:map-special-chars*
*map_backslash*
Note that only CTRL-V is mentioned here as a special character for mappings
and abbreviations. When 'cpoptions' does not contain 'B', a backslash can
@ -286,23 +359,12 @@ To map a backslash, or use a backslash literally in the {rhs}, the special
sequence "<Bslash>" can be used. This avoids the need to double backslashes
when using nested mappings.
*map-ambiguous*
When two mappings start with the same sequence of characters, they are
ambiguous. Example: >
:imap aa foo
:imap aaa bar
When Vim has read "aa", it will need to get another character to be able to
decide if "aa" or "aaa" should be mapped. This means that after typing "aa"
that mapping won't get expanded yet, Vim is waiting for another character.
If you type a space, then "foo" will get inserted, plus the space. If you
type "a", then "bar" will get inserted.
{Vi does not allow ambiguous mappings}
*map_CTRL_C*
It's not possible to use a CTRL-C in the {lhs}. You just can't map CTRL-C.
The reason is that CTRL-C must always be available to break a running command.
Exception: When using the GUI version on MS-Windows CTRL-C can be mapped to
allow a Copy command to the clipboard. Use CTRL-Break to interrupt Vim.
*map_CTRL-C*
Using CTRL-C in the {lhs} is possible, but it will only work when Vim is
waiting for a key, not when Vim is busy with something. When Vim is busy
CTRL-C interrupts/breaks the command.
When using the GUI version on MS-Windows CTRL-C can be mapped to allow a Copy
command to the clipboard. Use CTRL-Break to interrupt Vim.
*map_space_in_lhs*
To include a space in {lhs} precede it with a CTRL-V (type two CTRL-Vs for
@ -322,6 +384,18 @@ example, to make sure that function key 8 does nothing at all: >
:map <F8> <Nop>
:map! <F8> <Nop>
<
*map-multibyte*
It is possible to map multibyte characters, but only the whole character. You
cannot map the first byte only. This was done to prevent problems in this
scenario: >
:set encoding=latin1
:imap <M-C> foo
:set encoding=utf-8
The mapping for <M-C> is defined with the latin1 encoding, resulting in a 0xc3
byte. If you type the character <20> (0xea <M-a>) in UTF-8 encoding this is the
two bytes 0xc3 0xa1. You don't want the 0xc3 byte to be mapped then,
otherwise it would be impossible to type the <20> character.
*<Leader>* *mapleader*
To define a mapping which uses the "mapleader" variable, the special string
"<Leader>" can be used. It is replaced with the string value of "mapleader".
@ -409,14 +483,16 @@ and CTRL-X is not mapped. This was done to be able to use all the named
registers and marks, even when the command with the same name has been
mapped.
*map-which-keys*
1.7 WHAT KEYS TO MAP *map-which-keys*
If you are going to map something, you will need to choose which key(s) to use
for the {lhs}. You will have to avoid keys that are used for Vim commands,
otherwise you would not be able to use those commands anymore. Here are a few
suggestions:
- Function keys <F2>, <F3>, etc.. Also the shifted function keys <S-F1>,
<S-F2>, etc. Note that <F1> is already used for the help command.
- Meta-keys (with the ALT key pressed).
- Meta-keys (with the ALT key pressed). |:map-alt-keys|
- Use the '_' or ',' character and then any other character. The "_" and ","
commands do exist in Vim (see |_| and |,|), but you probably never use them.
- Use a key that is a synonym for another command. For example: CTRL-P and
@ -427,7 +503,9 @@ losing any builtin function. You can also use ":help {key}^D" to find out if
a key is used for some command. ({key} is the specific key you want to find
out about, ^D is CTRL-D).
*map-examples*
1.8 EXAMPLES *map-examples*
A few examples (given as you type them, for "<CR>" you type four characters;
the '<' flag must not be present in 'cpoptions' for this to work). >
@ -436,7 +514,9 @@ the '<' flag must not be present in 'cpoptions' for this to work). >
:map _x d/END/e<CR>
:map! qq quadrillion questions
<
*map-typing*
1.9 USING MAPPINGS *map-typing*
Vim will compare what you type with the start of a mapped sequence. If there
is an incomplete match, it will get more characters until there either is a
complete match or until there is no match at all. Example: If you map! "qq",
@ -449,14 +529,15 @@ you type slowly, or your system is slow, reset the 'timeout' option. Then you
might want to set the 'ttimeout' option.
*map-keys-fails*
There is one situation where key codes might not be recognized:
There are situations where key codes might not be recognized:
- Vim can only read part of the key code. Mostly this is only the first
character. This happens on some Unix versions in an xterm.
- The key code is after character(s) that are mapped. E.g., "<F1><F1>" or
"g<F1>".
The result is that the key code is not recognized in this situation, and the
mapping fails.
There are two actions needed to avoid this problem:
mapping fails. There are two actions needed to avoid this problem:
- Remove the 'K' flag from 'cpoptions'. This will make Vim wait for the rest
of the characters of the function key.
- When using <F1> to <F4> the actual key code generated may correspond to
@ -472,6 +553,9 @@ special key: >
Don't type a real <Esc>, Vim will recognize the key code and replace it with
<F1> anyway.
Another problem may be that when keeping ALT or Meta pressed the terminal
prepends ESC instead of setting the 8th bit. See |:map-alt-keys|.
*recursive_mapping*
If you include the {lhs} in the {rhs} you have a recursive mapping. When
{lhs} is typed, it will be replaced with {rhs}. When the {lhs} which is
@ -508,43 +592,104 @@ the original Vi, as long as there is only one undo command in the mapped
sequence (having two undo commands in a mapped sequence did not make sense
in the original Vi, you would get back the text before the first undo).
*:map-special-keys*
There are three ways to map a special key:
1. The Vi-compatible method: Map the key code. Often this is a sequence that
starts with <Esc>. To enter a mapping like this you type ":map " and then
you have to type CTRL-V before hitting the function key. Note that when
the key code for the key is in the termcap (the t_ options), it will
automatically be translated into the internal code and become the second
way of mapping (unless the 'k' flag is included in 'cpoptions').
2. The second method is to use the internal code for the function key. To
enter such a mapping type CTRL-K and then hit the function key, or use
the form "#1", "#2", .. "#9", "#0", "<Up>", "<S-Down>", "<S-F7>", etc.
(see table of keys |key-notation|, all keys from <Up> can be used). The
first ten function keys can be defined in two ways: Just the number, like
"#2", and with "<F>", like "<F2>". Both stand for function key 2. "#0"
refers to function key 10, defined with option 't_f10', which may be
function key zero on some keyboards. The <> form cannot be used when
'cpoptions' includes the '<' flag.
3. Use the termcap entry, with the form <t_xx>, where "xx" is the name of the
termcap entry. Any string entry can be used. For example: >
:map <t_F3> G
< Maps function key 13 to "G". This does not work if 'cpoptions' includes
the '<' flag.
The advantage of the second and third method is that the mapping will work on
different terminals without modification (the function key will be
translated into the same internal code or the actual key code, no matter what
terminal you are using. The termcap must be correct for this to work, and you
must use the same mappings).
1.10 MAPPING ALT-KEYS *:map-alt-keys*
DETAIL: Vim first checks if a sequence from the keyboard is mapped. If it
isn't the terminal key codes are tried (see |terminal-options|). If a
terminal code is found it is replaced with the internal code. Then the check
for a mapping is done again (so you can map an internal code to something
else). What is written into the script file depends on what is recognized.
If the terminal key code was recognized as a mapping the key code itself is
written to the script file. If it was recognized as a terminal code the
internal code is written to the script file.
In the GUI Vim handles the Alt key itself, thus mapping keys with ALT should
always work. But in a terminal Vim gets a sequence of bytes and has to figure
out whether ALT was pressed or not.
By default Vim assumes that pressing the ALT key sets the 8th bit of a typed
character. Most decent terminals can work that way, such as xterm, aterm and
rxvt. If your <A-k> mappings don't work it might be that the terminal is
prefixing the character with an ESC character. But you can just as well type
ESC before a character, thus Vim doesn't know what happened (except for
checking the delay between characters, which is not reliable).
As of this writing, some mainstream terminals like gnome-terminal and konsole
use the ESC prefix. There doesn't appear a way to have them use the 8th bit
instead. Xterm should work well by default. Aterm and rxvt should work well
when started with the "--meta8" argument. You can also tweak resources like
"metaSendsEscape", "eightBitInput" and "eightBitOutput".
On the Linux console, this behavior can be toggled with the "setmetamode"
command. Bear in mind that not using an ESC prefix could get you in trouble
with other programs. You should make sure that bash has the "convert-meta"
option set to "on" in order for your Meta keybindings to still work on it
(it's the default readline behavior, unless changed by specific system
configuration). For that, you can add the line: >
set convert-meta on
to your ~/.inputrc file. If you're creating the file, you might want to use: >
$include /etc/inputrc
as the first line, if that file exists on your system, to keep global options.
This may cause a problem for entering special characters, such as the umlaut.
Then you should use CTRL-V before that character.
Bear in mind that convert-meta has been reported to have troubles when used in
UTF-8 locales. On terminals like xterm, the "metaSendsEscape" resource can be
toggled on the fly through the "Main Options" menu, by pressing Ctrl-LeftClick
on the terminal; that's a good last resource in case you want to send ESC when
using other applications but not when inside VIM.
1.11 MAPPING AN OPERATOR *:map-operator*
An operator is used before a {motion} command. To define your own operator
you must create mapping that first sets the 'operatorfunc' option and then
invoke the |g@| operator. After the user types the {motion} command the
specified function will be called.
*g@* *E774* *E775*
g@{motion} Call the function set by the 'operatorfunc' option.
The '[ mark is positioned at the start of the text
moved over by {motion}, the '] mark on the last
character of the text.
The function is called with one String argument:
"line" {motion} was |linewise|
"char" {motion} was |characterwise|
"block" {motion} was |blockwise-visual||
Although "block" would rarely appear, since it can
only result from Visual mode where "g@" is not useful.
{not available when compiled without the +eval
feature}
Here is an example that counts the number of spaces with <F4>: >
nmap <silent> <F4> :set opfunc=CountSpaces<CR>g@
vmap <silent> <F4> :<C-U>call CountSpaces(visualmode(), 1)<CR>
function! CountSpaces(type, ...)
let sel_save = &selection
let &selection = "inclusive"
let reg_save = @@
if a:0 " Invoked from Visual mode, use '< and '> marks.
silent exe "normal! `<" . a:type . "`>y"
elseif a:type == 'line'
silent exe "normal! '[V']y"
elseif a:type == 'block'
silent exe "normal! `[\<C-V>`]y"
else
silent exe "normal! `[v`]y"
endif
echomsg strlen(substitute(@@, '[^ ]', '', 'g'))
let &selection = sel_save
let @@ = reg_save
endfunction
Note that the 'selection' option is temporarily set to "inclusive" to be able
to yank exactly the right text by using Visual mode from the '[ to the ']
mark.
Also note that there is a separate mapping for Visual mode. It removes the
"'<,'>" range that ":" inserts in Visual mode and invokes the function with
visualmode() and an extra argument.
==============================================================================
2. Abbreviations *abbreviations* *Abbreviations*
@ -615,7 +760,7 @@ Examples: ({CURSOR} is where you type a non-keyword character) >
< "#i{CURSOR}" is expanded to "#include"
">#i{CURSOR}" is not expanded
>
:ab ;; <endofline>"
:ab ;; <endofline>
< "test;;" is not expanded
"test ;;" is expanded to "test <endofline>"
@ -658,6 +803,16 @@ used in a |filetype-plugin| file. Example for a C plugin file: >
mode, '!' for both. These are the same as for
mappings, see |map-listing|.
*:abbreviate-verbose*
When 'verbose' is non-zero, listing an abbreviation will also display where it
was last defined. Example: >
:verbose abbreviate
! teh the
Last set from /home/abcd/vim/abbr.vim
See |:verbose-cmd| for more information.
:ab[breviate] {lhs} list the abbreviations that start with {lhs}
You may need to insert a CTRL-V (type it twice) to
avoid that a typed {lhs} is expanded, since
@ -737,7 +892,7 @@ You see: ab esc ^V^V^[
how it should appear in your .exrc file, if you choose to go that
route. The first ^V is there to quote the second ^V; the :ab
command uses ^V as its own quote character, so you can include quoted
whitespace or the | character in the abbreviation. The :ab command
whitespace or the | character in the abbreviation. The :ab command
doesn't do anything special with the ^[ character, so it doesn't need
to be quoted. (Although quoting isn't harmful; that's why typing 7
[but not 8!] ^Vs works.)
@ -752,7 +907,7 @@ Stored as: esc ^V^[
Later, when the abbreviation is expanded because the user typed in
the word "esc", the long form is subjected to the same type of
^V interpretation as keyboard input. So the ^V protects the ^[
character from being interpreted as the "exit input-mode" character.
character from being interpreted as the "exit Insert mode" character.
Instead, the ^[ is inserted into the text.
Expands to: ^[
@ -780,7 +935,7 @@ make it local to the script. But when a mapping is executed from outside of
the script, it doesn't know in which script the function was defined. To
avoid this problem, use "<SID>" instead of "s:". The same translation is done
as for mappings. This makes it possible to define a call to the function in
mapping.
a mapping.
When a local function is executed, it runs in the context of the script it was
defined in. This means that new functions and mappings it defines can also
@ -795,11 +950,10 @@ local function or uses a local mapping.
Otherwise, using "<SID>" outside of a script context is an error.
If you need to get the script number to use in a complicated script, you can
use this trick: >
:map <SID>xx <SID>xx
:let s:sid = maparg("<SID>xx")
:unmap <SID>xx
And remove the trailing "xx".
use this function: >
function s:SID()
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$')
endfun
The "<SNR>" will be shown when listing functions and mappings. This is useful
to find out what they are defined to.
@ -813,7 +967,7 @@ feature}.
==============================================================================
4. User-defined commands *user-commands*
It is possible to define your own Ex commands. A user-defined command can act
It is possible to define your own Ex commands. A user-defined command can act
just like a built-in command (it can have a range or arguments, arguments can
be completed as filenames or buffer names, etc), except that when the command
is executed, it is transformed into a normal ex command and then executed.
@ -822,7 +976,7 @@ For starters: See section |40.2| in the user manual.
*E183* *user-cmd-ambiguous*
All user defined commands must start with an uppercase letter, to avoid
confusion with builtin commands. (There are a few builtin commands, notably
confusion with builtin commands. (There are a few builtin commands, notably
:Next, :Print and :X, which do start with an uppercase letter. The builtin
will always take precedence in these cases). The other characters of the user
command can be uppercase letters, lowercase letters or digits. When using
@ -831,8 +985,8 @@ ambiguous. For example, the command ":Cc2" could be the user command ":Cc2"
without an argument, or the command ":Cc" with argument "2". It is advised to
put a space between the command name and the argument to avoid these problems.
When using a user-defined command, the command can be abbreviated. However, if
an abbreviation is not unique, an error will be issued. Furthermore, a
When using a user-defined command, the command can be abbreviated. However, if
an abbreviation is not unique, an error will be issued. Furthermore, a
built-in command will always take precedence.
Example: >
@ -848,7 +1002,7 @@ It is recommended that full names for user-defined commands are used in
scripts.
:com[mand] *:com* *:command*
List all user-defined commands. When listing commands,
List all user-defined commands. When listing commands,
the characters in the first two columns are
! Command has the -bang attribute
" Command has the -register attribute
@ -857,11 +1011,22 @@ scripts.
:com[mand] {cmd} List the user-defined commands that start with {cmd}
*:command-verbose*
When 'verbose' is non-zero, listing a command will also display where it was
last defined. Example: >
:verbose command TOhtml
Name Args Range Complete Definition
TOhtml 0 % :call Convert2HTML(<line1>, <line2>)
Last set from /usr/share/vim/vim-7.0/plugin/tohtml.vim
<
See |:verbose-cmd| for more information.
*E174* *E182*
:com[mand][!] [{attr}...] {cmd} {rep}
Define a user command. The name of the command is
{cmd} and its replacement text is {rep}. The command's
attributes (see below) are {attr}. If the command
{cmd} and its replacement text is {rep}. The command's
attributes (see below) are {attr}. If the command
already exists, an error is reported, unless a ! is
specified, in which case the command is redefined.
@ -873,20 +1038,20 @@ scripts.
Command attributes
User-defined commands are treated by Vim just like any other ex commands. They
can have arguments, or have a range specified. Arguments are subject to
completion as filenames, buffers, etc. Exactly how this works depends upon the
User-defined commands are treated by Vim just like any other ex commands. They
can have arguments, or have a range specified. Arguments are subject to
completion as filenames, buffers, etc. Exactly how this works depends upon the
command's attributes, which are specified when the command is defined.
There are a number of attributes, split into four categories: argument
handling, completion behavior, range handling, and special cases. The
handling, completion behavior, range handling, and special cases. The
attributes are described below, by category.
Argument handling *E175* *E176*
By default, a user defined command will take no arguments (and an error is
reported if any are supplied). However, it is possible to specify that the
command can take arguments, using the -nargs attribute. Valid cases are:
reported if any are supplied). However, it is possible to specify that the
command can take arguments, using the -nargs attribute. Valid cases are:
-nargs=0 No arguments are allowed (the default)
-nargs=1 Exactly one argument is required
@ -934,26 +1099,38 @@ completion can be enabled:
-complete=tag_listfiles tags, file names are shown when CTRL-D is hit
-complete=var user variables
-complete=custom,{func} custom completion, defined via {func}
-complete=customlist,{func} custom completion, defined via {func}
Custom completion *:command-completion-custom*
*E467* *E468*
Custom completion *:command-completion-custom*
*:command-completion-customlist*
*E467* *E468*
It is possible to define customized completion schemes via the "custom,{func}"
completion argument. The {func} part should be a function with the following
prototype >
or the "customlist,{func}" completion argument. The {func} part should be a
function with the following prototype >
:function {func}(ArgLead, CmdLine, CursorPos)
The function need not use all these arguments, but it should provide the
completion candidates as the return value, one per line in a newline separated
string. The function arguments are:
The function need not use all these arguments. The function should provide the
completion candidates as the return value.
For the "custom" argument, the function should return the completion
candidates one per line in a newline separated string.
For the "customlist" argument, the function should return the completion
candidates as a Vim List. Non-string items in the list are ignored.
The function arguments are:
ArgLead the leading portion of the argument currently being
completed on
CmdLine the entire command line
CursorPos the cursor position in it
The function may use these for determining context. It is not necessary to
filter candidates against the (implicit pattern in) ArgLead. Vim will do
filter the candidates with its regexp engine after function return, and this
is probably more efficient in most cases.
CursorPos the cursor position in it (byte index)
The function may use these for determining context. For the "custom"
argument, it is not necessary to filter candidates against the (implicit
pattern in) ArgLead. Vim will do filter the candidates with its regexp engine
after function return, and this is probably more efficient in most cases. For
the "customlist" argument, Vim will not filter the returned completion
candidates and the user supplied function should filter the candidates.
The following example lists user names to a Finger command >
:com -complete=custom,ListUsers -nargs=1 Finger !finger <args>
@ -961,20 +1138,29 @@ The following example lists user names to a Finger command >
: return system("cut -d: -f1 /etc/passwd")
:endfun
The following example completes filenames from the directories specified in
the 'path' option: >
:com -nargs=1 -bang -complete=customlist,EditFileComplete
\ EditFile edit<bang> <args>
:fun EditFileComplete(A,L,P)
: return split(globpath(&path, a:ArgLead), "\n")
:endfun
<
Range handling *E177* *E178*
By default, user-defined commands do not accept a line number range. However,
By default, user-defined commands do not accept a line number range. However,
it is possible to specify that the command does take a range (the -range
attribute), or that it takes an arbitrary count value, either in the line
number position (-range=N, like the |:split| command) or as a "count"
argument (-count=N, like the |:Next| command). Possible attributes are:
argument (-count=N, like the |:Next| command). Possible attributes are:
-range Range allowed, default is current line
-range=% Range allowed, default is whole file (1,$)
-range=N A count (default N) which is specified in the line
number position (like |:split|)
-count=N A count (default N) which is specified either in the line
number position, or as an initial argument (like |:Next|)
number position, or as an initial argument (like |:Next|).
Specifying -count (without a default) acts like -count=0
Note that -range=N and -count=N are mutually exclusive - only one should be
@ -999,9 +1185,9 @@ replacement text separately.
Replacement text
The replacement text for a user defined command is scanned for special escape
sequences, using <...> notation. Escape sequences are replaced with values
from the entered command line, and all other text is copied unchanged. The
resulting string is executed as an Ex command. If the initial < of an escape
sequences, using <...> notation. Escape sequences are replaced with values
from the entered command line, and all other text is copied unchanged. The
resulting string is executed as an Ex command. If the initial < of an escape
sequence is preceded by a backslash, the sequence is copied unchanged.
The valid escape sequences are
@ -1019,7 +1205,7 @@ The valid escape sequences are
expands to nothing.
*<reg>* *<register>*
<reg> (See the '-register' attribute) The optional register,
if specified. Otherwise, expands to nothing. <register>
if specified. Otherwise, expands to nothing. <register>
is a synonym for this.
*<args>*
<args> The command arguments, exactly as supplied (but as
@ -1034,13 +1220,13 @@ The valid escape sequences are
If the first two characters of an escape sequence are "q-" (for example,
<q-args>) then the value is quoted in such a way as to make it a valid value
for use in an expression. This uses the argument as one single value.
When there is no argument <q-args> is an empty string.
To allow commands to pass their arguments on to a user-defined function, there
is a special form <f-args> ("function args"). This splits the command
is a special form <f-args> ("function args"). This splits the command
arguments at spaces and Tabs, quotes each argument individually, and the
<f-args> sequence is replaced by the comma-separated list of quoted arguments.
See the Mycmd example below. When there is no argument, <f-args> also has no
argument.
See the Mycmd example below. If no arguments are given <f-args> is removed.
Examples >
@ -1056,7 +1242,7 @@ Examples >
Replace <line1>-pu_|<line1>,<line2>d|r <args>|<line1>d
" Count the number of lines in the range
:com! -range -nargs=0 Lines :echo <line2> - <line1> + 1 "lines"
:com! -range -nargs=0 Lines echo <line2> - <line1> + 1 "lines"
" Call a user function (example of <f-args>)
:com -nargs=* Mycmd call Myfunc(<f-args>)

View File

@ -1,4 +1,4 @@
*mbyte.txt* For Vim version 7.0aa. Last change: 2004 Jul 05
*mbyte.txt* For Vim version 7.0aa. Last change: 2005 Oct 14
VIM REFERENCE MANUAL by Bram Moolenaar et al.
@ -286,6 +286,29 @@ Supported 'encoding' values are: *encoding-values*
1 koi8-u Ukrainian
1 macroman MacRoman (Macintosh encoding)
1 8bit-{name} any 8-bit encoding (Vim specific name)
1 cp437 similar to iso-8859-1
1 cp737 similar to iso-8859-7
1 cp775 Baltic
1 cp850 similar to iso-8859-4
1 cp852 similar to iso-8859-1
1 cp855 similar to iso-8859-2
1 cp857 similar to iso-8859-5
1 cp860 similar to iso-8859-9
1 cp861 similar to iso-8859-1
1 cp862 similar to iso-8859-1
1 cp863 similar to iso-8859-8
1 cp865 similar to iso-8859-1
1 cp866 similar to iso-8859-5
1 cp869 similar to iso-8859-7
1 cp874 Thai
1 cp1250 Czech, Polish, etc.
1 cp1251 Cyrillic
1 cp1253 Greek
1 cp1254 Turkish
1 cp1255 Hebrew
1 cp1256 Arabic
1 cp1257 Baltic
1 cp1258 Vietnamese
1 cp{number} MS-Windows: any installed single-byte codepage
2 cp932 Japanese (Windows only)
2 euc-jp Japanese (Unix only)
@ -328,6 +351,8 @@ u unicode same as ucs-2
u ucs2be same as ucs-2 (big endian)
u ucs-2be same as ucs-2 (big endian)
u ucs-4be same as ucs-4 (big endian)
default stands for the default value of 'encoding', depends on the
environment
For the UCS codes the byte order matters. This is tricky, use UTF-8 whenever
you can. The default is to use big-endian (most significant byte comes
@ -434,7 +459,7 @@ Useful utilities for converting the charset:
ftp://ftp.cuhk.hk/pub/chinese/ifcss/software/unix/convert/hc-30.tar.gz
Korean: hmconv
Hmconv is Korean code conversion utility especially for E-mail. It can
Hmconv is Korean code conversion utility especially for E-mail. It can
convert between EUC-KR and ISO-2022-KR. Hmconv can be found at:
ftp://ftp.kaist.ac.kr/pub/hangul/code/hmconv/
@ -442,7 +467,7 @@ Useful utilities for converting the charset:
Lv is a Powerful Multilingual File Viewer. And it can be worked as
|charset| converter. Supported |charset|: ISO-2022-CN, ISO-2022-JP,
ISO-2022-KR, EUC-CN, EUC-JP, EUC-KR, EUC-TW, UTF-7, UTF-8, ISO-8859
series, Shift_JIS, Big5 and HZ. Lv can be found at:
series, Shift_JIS, Big5 and HZ. Lv can be found at:
http://www.ff.iij4u.or.jp/~nrt/freeware/lv4495.tar.gz
@ -459,6 +484,12 @@ conversion needs to be done. These conversions are supported:
request a very large buffer, more than Vim is willing to provide).
Try getting another iconv() implementation.
*iconv-dynamic*
On MS-Windows Vim can be compiled with the |+iconv/dyn| feature. This means
Vim will search for the "iconv.dll" and "libiconv.dll" libraries. When
neither of them can be found Vim will still work but some conversions won't be
possible.
==============================================================================
4. Using a terminal *mbyte-terminal*
@ -504,7 +535,7 @@ Now start xterm with >
or, for bigger character: >
xterm -u8 -fn -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1
and you will have a working UTF-8 terminal emulator. Try both >
and you will have a working UTF-8 terminal emulator. Try both >
cat utf-8-demo.txt
vim utf-8-demo.txt
@ -759,7 +790,7 @@ is suitable for complex input, such as CJK.
number of Hira-gana characters are 76. So, first, we pre-input text as
pronounced in Hira-gana, second, we convert Hira-gana to Kanji or Kata-Kana,
if needed. There are some Kana-Kanji conversion server: jserver
(distributed with Wnn, see below) and canna. Canna could be found at:
(distributed with Wnn, see below) and canna. Canna could be found at:
ftp://ftp.nec.co.jp/pub/Canna/ (no longer works).
There is a good input system: Wnn4.2. Wnn 4.2 contains,
@ -799,7 +830,7 @@ Use the RPM or port for your system.
Preedit Area and Status Area are performed by the client application in
the area of application. The client application is directed by the
|IM-server| to display all pre-edit data at the location of text
insertion. The client registers callbacks invoked by the input method
insertion. The client registers callbacks invoked by the input method
during pre-editing.
*. over-the-spot *OverTheSpot*
Status Area is created in a fixed position within the area of application,
@ -1229,7 +1260,7 @@ is no longer relevant in the GTK+ 2 GUI.
Up to two combining characters can be used. The combining character is drawn
on top of the preceding character. When editing text a composing character is
mostly considered part of the preceding character. For example "x" will
delete a character and its following composing characters by default. If the
delete a character and its following composing characters by default. If the
'delcombine' option is on, then pressing 'x' will delete the combining
characters, one at a time, then the base character. But when inserting, you
type the first character and the following composing characters separately,
@ -1251,7 +1282,7 @@ characters present in the selected font.
Useful commands:
- "ga" shows the decimal, hexadecimal and octal value of the character under
the cursor. If there are composing characters these are shown too. (if the
the cursor. If there are composing characters these are shown too. (If the
message is truncated, use ":messages").
- "g8" shows the bytes used in a UTF-8 character, also the composing
characters, as hex numbers.
@ -1317,7 +1348,7 @@ a zero if necessary.
COMMAND ARGUMENTS *utf-8-char-arg*
Commands like |f|, |F|, |t| and |r| take an argument of one character. For
UTF-8 this argument may include one or two composing characters. These needs
UTF-8 this argument may include one or two composing characters. These need
to be produced together with the base character, Vim doesn't wait for the next
character to be typed to find out if it is a composing character or not.
Using 'keymap' or |:lmap| is a nice way to type these characters.

View File

@ -1,4 +1,4 @@
*message.txt* For Vim version 7.0aa. Last change: 2004 Jan 17
*message.txt* For Vim version 7.0aa. Last change: 2006 Jan 08
VIM REFERENCE MANUAL by Bram Moolenaar
@ -19,7 +19,16 @@ The ":messages" command can be used to view previously given messages. This
is especially useful when messages have been overwritten or truncated. This
depends on the 'shortmess' option.
The number of remembered messages is fixed at 20.
The number of remembered messages is fixed at 20 for the tiny version and 100
for other versions.
*g<*
The "g<" command can be used to see the last page of previous command output.
This is especially useful if you accidentally typed <Space> at the hit-enter
prompt.
Note: when you stopped the output with "q" at the more prompt only up to that
point will be displayed.
The previous command output is cleared when another command produces output.
If you are using translated messages, the first printed line tells who
maintains the messages or the translations. You can use this to contact the
@ -55,7 +64,7 @@ or view a list of recent messages with: >
LIST OF MESSAGES
*E222* *E228* *E232* *E256* *E293* *E298* *E304* *E317*
*E318* *E356* *E438* *E439* *E440* *E316* *E320* *E322*
*E323* *E341* *E473* *E570* >
*E323* *E341* *E473* *E570* *E685* >
Add to read buffer
makemap: Illegal mode
Cannot create BalloonEval with both message and callback
@ -74,6 +83,7 @@ LIST OF MESSAGES
line number out of range: {N} past the end
line count wrong in block {N}
Internal error
Internal error: {function}
fatal error in cs_manage_matches
This is an internal error. If you can reproduce it, please send in a bug
@ -278,6 +288,19 @@ Example: >
changes to: >
:w! /tmp/test
<
*E768* >
Swap file exists: {filename} (:silent! overrides)
You are protected from overwriting a file that is being edited by Vim. This
happens when you use ":w! filename" and a swapfile is found.
- If the swapfile was left over from an old crashed edit session you may want
to delete the swapfile. Edit {filename} to find out information about the
swapfile.
- If you want to write anyway prepend ":silent!" to the command. For example: >
:silent! w! /tmp/test
< The special command is needed, since you already added the ! for overwriting
an existing file.
*E139* >
File is loaded in another buffer
@ -363,7 +386,8 @@ cannot be written. You need to give the buffer a file name: >
When using the '~' character in a pattern, it is replaced with the previously
used pattern in a ":substitute" command. This fails when no such command has
been used yet. See |/~|.
been used yet. See |/~|. This also happens when using ":s/pat/%/", where the
"%" stands for the previous substitute string.
*E35* >
No previous regular expression
@ -412,6 +436,12 @@ abandon the buffer forcefully, e.g., with ":qa!". Careful, make sure you
don't throw away changes you really want to keep. You might have forgotten
about a buffer, especially when 'hidden' is set.
>
[No write since last change]
This appears when executing a shell command while at least one buffer was
changed. To avoid the message reset the 'warn' option.
*E38* >
Null argument
@ -560,6 +590,7 @@ The file is read-only and you are making a change to it anyway. You can use
the |FileChangedRO| autocommand event to avoid this message (the autocommand
must reset the 'readonly' option). See 'modifiable' to completely disallow
making changes to a file.
This message is only given for the first change after 'readonly' has been set.
*W13* >
Warning: File "{filename}" has been created after editing started
@ -643,6 +674,7 @@ and |+X11| features.
A command line started with a backslash or the range of a command contained a
backslash in a wrong place. This is often caused by command-line continuation
being disabled. Remove the 'C' flag from the 'cpoptions' option to enable it.
Or use ":set nocp".
*E471* >
Argument required
@ -705,9 +737,10 @@ a user-defined command.
This is an (incomplete) overview of various messages that Vim gives:
*hit-enter* *press-enter* *hit-return* *press-return* >
*hit-enter* *press-enter* *hit-return*
*press-return* *hit-enter-prompt*
Hit ENTER or type command to continue
Press ENTER or type command to continue
This message is given when there is something on the screen for you to read,
and the screen is about to be redrawn:
@ -715,10 +748,13 @@ and the screen is about to be redrawn:
- Something is displayed on the status line that is longer than the width of
the window, or runs into the 'showcmd' or 'ruler' output.
-> Hit <Enter> or <Space> to redraw the screen and continue, without that key
being used otherwise.
-> Hit ":" or any other Normal mode command character to start that command.
-> Hit <C-Y> to copy (yank) a modeless selection to the clipboard register.
-> Press <Enter> or <Space> to redraw the screen and continue, without that
key being used otherwise.
-> Press ':' or any other Normal mode command character to start that command.
-> Press 'k', 'u', 'b' or 'g' to scroll back in the messages. This works the
same way as at the |more-prompt|. Only works when 'compatible' is off and
'more' is on.
-> Press <C-Y> to copy (yank) a modeless selection to the clipboard register.
-> Use a menu. The characters defined for Cmdline-mode are used.
-> When 'mouse' contains the 'r' flag, clicking the left mouse button works
like pressing <Space>. This makes it impossible to select text though.
@ -726,19 +762,24 @@ and the screen is about to be redrawn:
pressing <Space>.
{Vi: only ":" commands are interpreted}
If you accidentally hit <Enter> or <Space> and you want to see the displayed
text then use |g<|. This only works when 'more' is set.
To reduce the number of hit-enter prompts:
- Set 'cmdheight' to 2 or higher.
- Add flags to 'shortmess'.
- Reset 'showcmd' and/or 'ruler'.
If your script causes the hit-enter prompt and you don't know why, you may
find the |v:scrollstart| variable useful.
Also see 'mouse'. The hit-enter message is highlighted with the |hl-Question|
group.
*more-prompt* *pager* >
-- More --
-- More -- (RET: line, SPACE: page, d: half page, q: quit)
-- More -- (RET/BS: line, SPACE/b: page, d/u: half page, q: quit)
-- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quit
This message is given when the screen is filled with messages. It is only
given when the 'more' option is on. It is highlighted with the |hl-MoreMsg|
@ -746,11 +787,16 @@ group.
Type effect ~
<CR> or <NL> or j or <Down> one more line
d down a page (half a screen)
<Space> or <PageDown> down a screen
G down all the way, until the hit-enter
prompt
<BS> or k or <Up> one line back (*)
<Space> or <PageDown> next page
b or <PageUp> previous page (*)
d down half a page
u up half a page (*)
u up a page (half a screen) (*)
b or <PageUp> back a screen (*)
g back to the start (*)
q, <Esc> or CTRL-C stop the listing
: stop the listing and enter a
command-line
@ -762,8 +808,8 @@ Type effect ~
Any other key causes the meaning of the keys to be displayed.
(*) backwards scrolling is only supported for these commands: >
:clist
(*) backwards scrolling is {not in Vi}. Only scrolls back to where messages
started to scroll.
(**) Clicking the left mouse button only works:
- For the GUI: in the last line of the screen.
- When 'r' is included in 'mouse' (but then selecting text won't work).
@ -772,4 +818,8 @@ Any other key causes the meaning of the keys to be displayed.
Note: The typed key is directly obtained from the terminal, it is not mapped
and typeahead is ignored.
The |g<| command can be used to see the last page of previous command output.
This is especially useful if you accidentally typed <Space> at the hit-enter
prompt.
vim:tw=78:ts=8:ft=help:norl:

View File

@ -1,4 +1,4 @@
*motion.txt* For Vim version 7.0aa. Last change: 2004 Jul 02
*motion.txt* For Vim version 7.0aa. Last change: 2006 Jan 02
VIM REFERENCE MANUAL by Bram Moolenaar
@ -57,6 +57,7 @@ or change text. The following operators are available:
|>| > shift right
|<| < shift left
|zf| zf define a fold
|g@| g@ call function set with the 'operatorfunc' option
If the motion includes a count and the operator also had a count before it,
the two counts are multiplied. For example: "2d3w" deletes six words.
@ -72,17 +73,18 @@ and end position. Generally, motions that move between lines affect lines
characterwise). However, there are some exceptions.
*exclusive* *inclusive*
A character motion is either inclusive or exclusive. When inclusive, the start
and end position of the motion are included in the operation. When exclusive,
the last character towards the end of the buffer is not included. Linewise
motions always include the start and end position.
A character motion is either inclusive or exclusive. When inclusive, the
start and end position of the motion are included in the operation. When
exclusive, the last character towards the end of the buffer is not included.
Linewise motions always include the start and end position.
Which motions are linewise, inclusive or exclusive is mentioned below. There
are however, two general exceptions:
Which motions are linewise, inclusive or exclusive is mentioned with the
command. There are however, two general exceptions:
1. If the motion is exclusive and the end of the motion is in column 1, the
end of the motion is moved to the end of the previous line and the motion
becomes inclusive. Example: "}" moves to the first line after a paragraph,
but "d}" will not include that line.
*exclusive-linewise*
2. If the motion is exclusive, the end of the motion is in column 1 and the
start of the motion was at or before the first non-blank in the line, the
motion becomes linewise. Example: If a paragraph begins with some blanks
@ -246,7 +248,7 @@ f{char} To [count]'th occurrence of {char} to the right. The
*F*
F{char} To the [count]'th occurrence of {char} to the left.
The cursor is placed on {char} |inclusive|.
The cursor is placed on {char} |exclusive|.
{char} can be entered like with the |f| command.
*t*
@ -258,7 +260,7 @@ t{char} Till before [count]'th occurrence of {char} to the
*T*
T{char} Till after [count]'th occurrence of {char} to the
left. The cursor is placed on the character right of
{char} |inclusive|.
{char} |exclusive|.
{char} can be entered like with the |f| command.
*;*
@ -349,6 +351,10 @@ or the last line. The first two commands put the cursor in the same column
except after the "$" command, then the cursor will be put on the last
character of the line.
If "k", "-" or CTRL-P is used with a [count] and there are less than [count]
lines above the cursor and the 'cpo' option includes the "-" flag it is an
error. |cpo--|.
==============================================================================
4. Word motions *word-motions*
@ -380,10 +386,11 @@ These commands move over words or WORDS.
*word*
A word consists of a sequence of letters, digits and underscores, or a
sequence of other non-blank characters, separated with white space (spaces,
tabs, <EOL>). This can be changed with the 'iskeyword' option.
tabs, <EOL>). This can be changed with the 'iskeyword' option. An empty line
is also considered to be a word.
*WORD*
A WORD consists of a sequence of non-blank characters, separated with white
space. An empty line is also considered to be a word and a WORD.
space. An empty line is also considered to be a WORD.
A sequence of folded lines is counted for one word of a single character.
"w" and "W", "e" and "E" move to the start/end of the first word or WORD after
@ -424,20 +431,24 @@ between Vi and Vim.
*]]*
]] [count] sections forward or to the next '{' in the
first column. When used after an operator, then the
'}' in the first column. |linewise|
first column. When used after an operator, then also
stops below a '}' in the first column. |exclusive|
Note that |exclusive-linewise| often applies.
*][*
][ [count] sections forward or to the next '}' in the
first column. |linewise|
first column. |exclusive|
Note that |exclusive-linewise| often applies.
*[[*
[[ [count] sections backward or to the previous '{' in
the first column. |linewise|
the first column. |exclusive|
Note that |exclusive-linewise| often applies.
*[]*
[] [count] sections backward or to the previous '}' in
the first column. |linewise|
the first column. |exclusive|
Note that |exclusive-linewise| often applies.
These commands move over three kinds of text objects.
@ -456,9 +467,12 @@ A paragraph begins after each empty line, and also at each of a set of
paragraph macros, specified by the pairs of characters in the 'paragraphs'
option. The default is "IPLPPPQPP LIpplpipbp", which corresponds to the
macros ".IP", ".LP", etc. (These are nroff macros, so the dot must be in the
first column). A section boundary is also a paragraph boundary. Note that
this does not include a '{' or '}' in the first column. Also note that a
blank line (only containing white space) is NOT a paragraph boundary.
first column). A section boundary is also a paragraph boundary.
Note that a blank line (only containing white space) is NOT a paragraph
boundary.
Also note that this does not include a '{' or '}' in the first column. When
the '{' flag is in 'cpoptions' then '{' in the first column is used as a
paragraph boundary |posix|.
*section*
A section begins after a form-feed (<C-L>) in the first column and at each of
@ -583,6 +597,20 @@ i< "inner <> block", select [count] <> blocks, from
'>', excluding the '<' and '>'.
When used in Visual mode it is made characterwise.
*v_at* *at*
at "a tag block", select [count] tag blocks, from the
[count]'th unmatched "<aaa>" backwards to the matching
"</aaa>", including the "<aaa>" and "</aaa>".
See |tag-blocks| about the details.
When used in Visual mode it is made characterwise.
*v_it* *it*
it "inner tag block", select [count] tag blocks, from the
[count]'th unmatched "<aaa>" backwards to the matching
"</aaa>", excluding the "<aaa>" and "</aaa>".
See |tag-blocks| about the details.
When used in Visual mode it is made characterwise.
a} *v_a}* *a}* *a{*
a{ *v_aB* *v_a{* *aB*
aB "a Block", select [count] Blocks, from "[count] [{" to
@ -616,6 +644,8 @@ i' *v_i'* *i'*
i` *v_i`* *i`*
Like a", a' and a`, but exclude the quotes and
repeating won't extend the Visual selection.
Special case: With a count of 2 the quotes are
included, but no extra white space as with a"/a'/a`.
When used after an operator:
For non-block objects:
@ -667,6 +697,25 @@ where on the object the cursor is. For example, compare "dw" and "daw": "dw"
deletes from the cursor position to the start of the next word, "daw" deletes
the word under the cursor and the space after or before it.
Tag blocks *tag-blocks*
For the "it" and "at" text objects an attempt is done to select blocks between
matching tags for HTML and XML. But since these are not completely compatible
there are a few restrictions.
The normal method is to select a <tag> until the matching </tag>. For "at"
the tags are included, for "it" they are excluded. But when "it" is repeated
the tags will be included (otherwise nothing would change).
"<aaa/>" items are skipped. Case is ignored, also for XML where case does
matter.
In HTML it is possible to have a tag like <br> or <meta ...> without a
matching end tag. These are ignored.
The text objects are tolerant about mistakes. Stray end tags are ignored.
==============================================================================
7. Marks *mark-motions* *E20* *E78*
@ -727,6 +776,24 @@ g'{mark} g`{mark}
:marks aB
< to list marks 'a' and 'B'. {not in Vi}
*:delm* *:delmarks*
:delm[arks] {marks} Delete the specified marks. Marks that can be deleted
include A-Z and 0-9. You cannot delete the ' mark.
They can be specified by giving the list of mark
names, or with a range, separated with a dash. Spaces
are ignored. Examples: >
:delmarks a deletes mark a
:delmarks a b 1 deletes marks a, b and 1
:delmarks Aa deletes marks A and a
:delmarks p-z deletes marks in the range p to z
:delmarks ^.[] deletes marks ^ . [ ]
:delmarks \" deletes mark "
< {not in Vi}
:delm[arks]! Delete all marks for the current buffer, but not marks
A-Z or 0-9.
{not in Vi}
A mark is not visible in any way. It is just a position in the file that is
remembered. Do not confuse marks with named registers, they are totally
unrelated.
@ -791,8 +858,8 @@ was made yet in the current file.
area in the current buffer. {not in Vi}.
*''* *``*
'' `` To the position before latest jump, or where the last
"m'" or "m`" command was given. Not set when the
'' `` To the position before the latest jump, or where the
last "m'" or "m`" command was given. Not set when the
|:keepjumps| command modifier was used.
Also see |restore-position|.
@ -808,8 +875,8 @@ was made yet in the current file.
*'^* *`^*
'^ `^ To the position where the cursor was the last time
when Insert mode was stopped This is used by the |gi|
command. Not set when the |:keepjumps| command
when Insert mode was stopped. This is used by the
|gi| command. Not set when the |:keepjumps| command
modifier was used. {not in Vi}
*'.* *`.*
@ -908,14 +975,16 @@ These commands are not marks themselves, but jump to a mark:
position. E.g., when updating a "Last change"
timestamp in the first line: >
:let lnum = getline(".")
:let lnum = line(".")
:keepjumps normal gg
:call SetLastChange()
:keepjumps exe "normal " . lnum . "G"
<
Note that ":keepjumps" must be used for every command.
When invoking a function the commands in that function
can still change the jumplist.
can still change the jumplist. Also, for
":keepjumps exe 'command '" the "command" won't keep
jumps. Instead use: ":exe 'keepjumps command'"
==============================================================================
8. Jumps *jump-motions*
@ -1029,7 +1098,7 @@ g; Go to [count] older position in change list.
*g,* *E663*
g, Go to [count] newer cursor position in change list.
Just like "g;| but in the opposite direction.
Just like |g;| but in the opposite direction.
(not a motion command)
{not in Vi}
{not available without the +jumplist feature}
@ -1217,7 +1286,7 @@ L To line [count] from bottom of window (default: Last
Cursor is adjusted for 'scrolloff' option.
<LeftMouse> Moves to the position on the screen where the mouse
click is |inclusive|. See also |<LeftMouse>|. If the
click is |exclusive|. See also |<LeftMouse>|. If the
position is in a status line, that window is made the
active window and the cursor is not moved. {not in Vi}

View File

@ -1,4 +1,4 @@
*netbeans.txt* For Vim version 7.0aa. Last change: 2004 Jun 16
*netbeans.txt* For Vim version 7.0aa. Last change: 2006 Feb 05
VIM REFERENCE MANUAL by Gordon Prieur
@ -16,7 +16,8 @@ NetBeans ExternalEditor Integration Features *netbeans*
8. Messages |netbeans-messages|
9. Running Vim from NetBeans |netbeans-run|
10. NetBeans protocol |netbeans-protocol|
11. Known problems |netbeans-problems|
11. NetBeans commands |netbeans-commands|
12. Known problems |netbeans-problems|
{Vi does not have any of these features}
{only available when compiled with the |+netbeans_intg| feature}
@ -37,7 +38,7 @@ Visit http://www.sun.com for more information regarding the Sun ONE Studio
product line.
Current releases of NetBeans provide full support for Java and limited support
for C, C++, and Fortran. Current releases of Sun ONE Studio provide full
for C, C++, and Fortran. Current releases of Sun ONE Studio provide full
support for Java, C, C++, and Fortran.
The interface to NetBeans is also supported by Agide, the A-A-P GUI IDE.
@ -49,12 +50,12 @@ See the A-A-P website for information: http://www.A-A-P.org.
==============================================================================
2. NetBeans Key Bindings *netbeans-keybindings*
Vim understands a number of key bindings that execute NetBeans commands. These
are typically all the Function key combinations. To execute a NetBeans command,
the user must press the Pause key followed by a NetBeans key binding. For
example, in order to compile a Java file, the NetBeans key binding is "F9". So,
while in vim, press "Pause F9" to compile a java file. To toggle a breakpoint
at the current line, press "Pause Shift F8".
Vim understands a number of key bindings that execute NetBeans commands.
These are typically all the Function key combinations. To execute a NetBeans
command, the user must press the Pause key followed by a NetBeans key binding.
For example, in order to compile a Java file, the NetBeans key binding is
"F9". So, while in vim, press "Pause F9" to compile a java file. To toggle a
breakpoint at the current line, press "Pause Shift F8".
The Pause key is Function key 21. If you don't have a working Pause key and
want to use F8 instead, use: >
@ -80,10 +81,10 @@ In case you do not want the NetBeans interface you can disable it by
uncommenting a line with "--disable-netbeans" in the Makefile.
Currently, only gvim is supported in this integration as NetBeans does not
have means to supply a terminal emulator for the vim command. Furthermore,
have means to supply a terminal emulator for the vim command. Furthermore,
there is only GUI support for GTK, GNOME, and Motif.
If Motif support is required the user must supply XPM libraries. See
If Motif support is required the user must supply XPM libraries. See
|workshop-xpm| for details on obtaining the latest version of XPM.
@ -98,45 +99,45 @@ XPM by yourself or use precompiled libraries from http://iamphet.nm.ru/misc/
==============================================================================
4. Downloading NetBeans *netbeans-download*
The NetBeans IDE is available for download from netbeans.org. You can download
The NetBeans IDE is available for download from netbeans.org. You can download
a released version, download sources, or use CVS to download the current
source tree. If you choose to download sources, follow directions from
source tree. If you choose to download sources, follow directions from
netbeans.org on building NetBeans.
Depending on the version of NetBeans you download, you may need to do further
work to get the required External Editor module. This is the module which lets
NetBeans work with gvim (or xemacs :-). See http://externaleditor.netbeans.org
work to get the required External Editor module. This is the module which lets
NetBeans work with gvim (or xemacs :-). See http://externaleditor.netbeans.org
for details on downloading this module if your NetBeans release does not have
it.
For C, C++, and Fortran support you will also need the cpp module. See
For C, C++, and Fortran support you will also need the cpp module. See
http://cpp.netbeans.org for information regarding this module.
You can also download Sun ONE Studio from Sun Microsystems, Inc for a 30 day
free trial. See http://www.sun.com for further details.
free trial. See http://www.sun.com for further details.
==============================================================================
5. Preparing NetBeans for Vim *netbeans-preparation*
In order for NetBeans to work with vim, the NetBeans External Editor module
must be loaded and enabled. If you have a Sun ONE Studio Enterprise Edition
then this module should be loaded and enabled. If you have a NetBeans release
must be loaded and enabled. If you have a Sun ONE Studio Enterprise Edition
then this module should be loaded and enabled. If you have a NetBeans release
you may need to find another way of obtaining this open source module.
You can check if you have this module by opening the Tools->Options dialog
and drilling down to the "Modules" list (IDE Configuration->System->Modules).
If your Modules list has an entry for "External Editor" you must make sure
it is enabled (the "Enabled" property should have the value "True"). If your
it is enabled (the "Enabled" property should have the value "True"). If your
Modules list has no External Editor see the next section on |obtaining-exted|.
==============================================================================
6. Obtaining the External Editor Module *obtaining-exted*
There are 2 ways of obtaining the External Editor module. The easiest way
There are 2 ways of obtaining the External Editor module. The easiest way
is to use the NetBeans Update Center to download and install the module.
Unfortunately, some versions do not have this module in their update
center. If you cannot download via the update center you will need to
download sources and build the module. I will try and get the module
center. If you cannot download via the update center you will need to
download sources and build the module. I will try and get the module
available from the NetBeans Update Center so building will be unnecessary.
Also check http://externaleditor.netbeans.org for other availability options.
@ -151,22 +152,22 @@ Assuming you have loaded and enabled the NetBeans External Editor module
as described in |netbeans-preparation| all you need to do is verify that
the gvim command line is properly configured for your environment.
Open the Tools->Options dialog and open the Editing category. Select the
External Editor. The right hand pane should contain a Properties tab and
an Expert tab. In the Properties tab make sure the "Editor Type" is set
to "Vim". In the Expert tab make sure the "Vim Command" is correct.
Open the Tools->Options dialog and open the Editing category. Select the
External Editor. The right hand pane should contain a Properties tab and
an Expert tab. In the Properties tab make sure the "Editor Type" is set
to "Vim". In the Expert tab make sure the "Vim Command" is correct.
You should be careful if you change the "Vim Command". There are command
You should be careful if you change the "Vim Command". There are command
line options there which must be there for the connection to be properly
set up. You can change the command name but thats about it. If your gvim
can be found by your $PATH then the VIM Command can start with "gvim". If
set up. You can change the command name but that's about it. If your gvim
can be found by your $PATH then the VIM Command can start with "gvim". If
you don't want gvim searched from your $PATH then hard code in the full
Unix path name. At this point you should get a gvim for any source file
Unix path name. At this point you should get a gvim for any source file
you open in NetBeans.
If some files come up in gvim and others (with different file suffixes) come
up in the default NetBeans editor you should verify the MIME type in the
Expert tab MIME Type property. NetBeans is MIME oriented and the External
Expert tab MIME Type property. NetBeans is MIME oriented and the External
Editor will only open MIME types specified in this property.
==============================================================================
@ -178,6 +179,7 @@ These messages are specific for NetBeans:
Region is guarded, cannot modify
NetBeans defines guarded areas in the text, which you cannot
change.
Also sets the current buffer, if necessary.
*E656*
NetBeans disallows writes of unmodified buffers
@ -193,10 +195,18 @@ Partial writes disallowed for NetBeans buffers
NetBeans connection lost for this buffer
NetBeans has become confused about the state of this file.
Rather than risc data corruption, NetBeans has severed the
connection for this file. Vim will take over responsibility
connection for this file. Vim will take over responsibility
for saving changes to this file and NetBeans will no longer
know of these changes.
*E744*
NetBeans does not allow changes in read-only files
Vim normally allows changes to a read-only file and only
enforces the read-only rule if you try to write the file.
However, NetBeans does not let you make changes to a file
which is read-only and becomes confused if vim does this.
So vim does not allow modifications to files when run with
NetBeans.
==============================================================================
9. Running Vim from NetBeans *netbeans-run*
@ -239,13 +249,13 @@ NetBeans (see http://externaleditor.netbeans.org). Later it was extended to
work with Agide (A-A-P GUI IDE, see http://www.a-a-p.org). The extensions are
marked with "version 2.1".
Version 2.2 of the protocol has several minor changes which should only
affect NetBeans users (ie, not Agide users). However, a bug was fixed which
could cause confusion. The netbeans_saved() function sent a "save" protocol
command. In protocol version 2.1 and earlier this was incorrectly interpreted
as a notification that a write had taken place. In reality, it told NetBeans
to save the file so multiple writes were being done. This caused various
problems and has been fixed in 2.2. To decrease the likelihood of this
Version 2.2 of the protocol has several minor changes which should only affect
NetBeans users (ie, not Agide users). However, a bug was fixed which could
cause confusion. The netbeans_saved() function sent a "save" protocol
command. In protocol version 2.1 and earlier this was incorrectly interpreted
as a notification that a write had taken place. In reality, it told NetBeans
to save the file so multiple writes were being done. This caused various
problems and has been fixed in 2.2. To decrease the likelihood of this
confusion happening again, netbeans_saved() has been renamed to
netbeans_save_buffer().
@ -417,6 +427,12 @@ guard off len
initDone Mark the buffer as ready for use. Implicitly makes the buffer
the current buffer. Fires the BufReadPost autocommand event.
insertDone
Sent by NetBeans to tell vim an initial file insert is done.
This triggers a read message being printed. Prior to version
2.3, no read messages were displayed after opening a file.
New in version 2.3.
moveAnnoToFront serNum
Not implemented.
@ -450,6 +466,12 @@ save Save the buffer when it was modified. The other side of the
- 'buftype' disallows writing
New in version 2.2.
saveDone
Sent by NetBeans to tell vim a save is done. This triggers
a save message being printed. Prior to version 2.3, no save
messages were displayed after a save.
New in version 2.3.
setAsUser Not implemented.
setBufferNumber pathname
@ -464,8 +486,10 @@ setContentType
Not implemented.
setDot off Make the buffer the current buffer and set the cursor at the
specified position. If there are folds they are opened to
make the cursor line visible.
specified position. If the buffer is open in another window
than make that window the current window.
If there are folds they are opened to make the cursor line
visible.
In version 2.1 "lnum/col" can be used instead of "off".
setExitDelay seconds
@ -473,6 +497,7 @@ setExitDelay seconds
This delay is used to give the IDE a chance to handle things
before really exiting. The default delay is two seconds.
New in version 2.1.
Obsolete in version 2.3.
setFullName pathname
Set the file name to be used for a buffer to "pathname", a
@ -490,7 +515,14 @@ setModified modified
When the boolean argument "modified" is "T" mark the buffer as
modified, when it is "F" mark it as unmodified.
setReadOnly Not implemented.
setModtime time
Update a buffers modification time after NetBeans saves the
file.
New in version 2.3.
setReadOnly
Passed by NetBeans to tell vim a file is readonly.
Implemented in verion 2.3.
setStyle Not implemented.
@ -508,7 +540,11 @@ showBalloon text
disappear when the mouse is moved more than a few pixels.
New in version 2.1.
specialKeys Not implemented.
specialKeys
Map a set of keys (mostly function keys) to be passed back
to NetBeans for processing. This lets NetBeans hotkeys be
used from vim.
Implemented in version 2.3.
startAtomic Begin an atomic operation. The screen will not be updated
until "endAtomic" is given.
@ -527,9 +563,13 @@ stopCaretListen
stopDocumentListen
Mark the buffer to stop reporting changes to the IDE.
Opposite of startDocumentListen.
NOTE: if "netbeansBuffer" was used to mark this buffer as a
NetBeans buffer, then the buffer is deleted in Vim. This is
for compatibility with Sun Studio 10.
unguard off len
Opposite of "guard", remove guarding for a text area.
Also sets the current buffer, if necessary.
version Not implemented.
@ -576,6 +616,7 @@ insert off text
123 no problem
123 !message failed
Note that the message in the reply is not quoted.
Also sets the current buffer, if necessary.
remove off length
Delete "length" bytes of text at position "off". Both
@ -584,6 +625,7 @@ remove off length
123 no problem
123 !message failed
Note that the message in the reply is not quoted.
Also sets the current buffer, if necessary.
saveAndExit Perform the equivalent of closing Vim: ":confirm qall".
If there are no changed files or the user does not cancel the
@ -616,10 +658,15 @@ buttonRelease button lnum col
at the time of the release. Only for buffers that are owned
by NetBeans. This event is not sent if the button was
released while the mouse was in the status line or in a
separator line. If col is less than 1 the button release was
separator line. If col is less than 1 the button release was
in the sign area.
New in version 2.2.
disconnect
Tell NetBeans that vim is exiting and not to try and read or
write more commands.
New in version 2.3.
fileClosed Not implemented.
fileModified Not implemented.
@ -726,7 +773,18 @@ DETACH IDE -> editor: break the connection without exiting the
REJECT Not used.
==============================================================================
11. Known problems *netbeans-problems*
11. NetBeans Commands *netbeans-commands*
*:nbkey*
:nbkey key Pass the key to NetBeans for processing
Pass the key to NetBeans for hot-key processing. You should not need to use
this command directly. However, NetBeans passes a list of hot-keys to Vim at
startup and when one of these keys is pressed, this command is generated to
send the key press back to NetBeans.
==============================================================================
12. Known problems *netbeans-problems*
NUL bytes are not possible. For editor -> IDE they will appear as NL
characters. For IDE -> editor they cannot be inserted.

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
*os_390.txt* For Vim version 7.0aa. Last change: 2003 Jun 03
*os_390.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Ralf Schandl
@ -12,17 +12,17 @@ This file contains the particulars for the z/OS UNIX version of Vim.
4. ASCII/EBCDIC dependent scripts |zOS-has-ebcdic|
5. XTerm Problems |zOS-xterm|
6. Motif Problems |zOS-Motif|
7 Bugs |zOS-Bugs|
7. Bugs |zOS-Bugs|
8. Known weaknesses |zOS-weaknesses|
9. Changes |zOS-changes|
DISCLAIMER: ~
We are IBM employees, but IBM is not responsible for this port. This is our
We are IBM employees, but IBM is not responsible for this port. This is our
private fun, and is provided in the hopes that it may be useful to others.
Please note that this software has NOT been submitted to any formal IBM
testing and is published AS IS. Please do not contact IBM for support for this
software, as it is not an official component of any IBM product. IT IS NOT
testing and is published AS IS. Please do not contact IBM for support for this
software, as it is not an official component of any IBM product. IT IS NOT
SUPPORTED, GUARANTEED, OR RELATED WHATSOEVER TO IBM.
Contributors: ~
@ -60,22 +60,22 @@ Vim should compile, link, and run right out of the box on a standard IBM z/OS
UNIX mainframe. I've personally run it on z/OS V1R2 and V1R3 machines without
problems.
Many changes had to be done to the code to port Vim to z/OS UNIX. As like
most UNIX programs, Vim contained heavy ASCII dependencies. I might have
Many changes had to be done to the code to port Vim to z/OS UNIX. As like
most UNIX programs, Vim contained heavy ASCII dependencies. I might have
missed an ASCII dependency, or it is possible that a new one has been added
with a feature or bug fix. Most programmers are simply not aware of possible
ASCII/EBCDIC conversion issues. If you hit a problem that seems related to
with a feature or bug fix. Most programmers are simply not aware of possible
ASCII/EBCDIC conversion issues. If you hit a problem that seems related to
this, feel free to contact us at the email addresses above.
One indication of ASCII/EBCDIC conversion problems is screen corruption with
"unprintable" characters. For example, at one point the errorbell was broken
in Vim. Any time Vim tried to ring the terminal bell an ASCII character 0x07
would be printed. This works fine on most terminals, but is broken on an
EBCDIC one. The correct solution was to define a different value for the bell
in Vim. Any time Vim tried to ring the terminal bell an ASCII character 0x07
would be printed. This works fine on most terminals, but is broken on an
EBCDIC one. The correct solution was to define a different value for the bell
character on EBCDIC systems.
Remember, it's only possible to fix a bug if the community knows about it.
Don't rely on someone else to report it! See the section |bug-reports|.
Don't rely on someone else to report it! See the section |bug-reports|.
==============================================================================
3. Building VIM for z/OS UNIX *OS390-building* *zOS-building*
@ -83,12 +83,12 @@ Don't rely on someone else to report it! See the section |bug-reports|.
A word on debugging code first: ~
The normal run of configure adds the flag '-g' to the compiler options,
to include debugging information into the executable. This information
to include debugging information into the executable. This information
are normally removed from the executable with the strip command during
installation. On z/OS UNIX, it is not possible to remove this from
the executable. The strip command exists on z/OS UNIX and is called
installation. On z/OS UNIX, it is not possible to remove this from
the executable. The strip command exists on z/OS UNIX and is called
during the installation, but it does nothing. It is equivalent to the
'touch' command. This is due to the way debug symbols are stored in the
'touch' command. This is due to the way debug symbols are stored in the
objects generated by the compiler.
If you want to build Vim without debugging code, export the environment
@ -99,11 +99,11 @@ variable CFLAGS set to an empty string before you call the configure script.
Building without X11: ~
Note: Use cc to build Vim. The c89 compiler has stricter syntax checking
Note: Use cc to build Vim. The c89 compiler has stricter syntax checking
and will not compile Vim cleanly.
If you build VIM without X11 support, compiling and building is
straightforward. Don't forget to export _CC_CCMODE=1 before calling
straightforward. Don't forget to export _CC_CCMODE=1 before calling
configure and make.
>
$ export _CC_CCMODE=1
@ -114,7 +114,7 @@ configure and make.
Test notes:
Test 11 will fail if you do not have gzip installed.
Test 42 will fail, as VIM on z/OS UNIX doesn't support the multibyte
feature. (David Moore: "Doesn't work _yet_! :-) I'll see what I
feature. (David Moore: "Doesn't work _yet_! :-) I'll see what I
can do.")
>
@ -123,8 +123,8 @@ configure and make.
Building with X11: ~
There are two ways for building Vim with X11 support. You can link it
statically with the X11 libraries or can bind it with the X11 DLLs. The
There are two ways for building Vim with X11 support. You can link it
statically with the X11 libraries or can bind it with the X11 DLLs. The
statically linked version results in a huge executable (~13MB), while the
dynamically linked executable is much smaller (~4.5MB).
@ -137,7 +137,7 @@ Here is what you do, if you want Motif:
VIM is now linked statically with the X11 libraries.
b) Dynamic link:
Make VIM as described for the static link. Then change the contents of
Make VIM as described for the static link. Then change the contents of
the 'auto/link.sed' file by appending: >
s%-lXm *%/usr/lib/Xm.x %g
s%-lX11 *%/usr/lib/X11.x %g
@ -155,7 +155,7 @@ See the Makefile and the file link.sh on how link.sed is used.
==============================================================================
4. ASCII/EBCDIC dependent scripts *OS390-has-ebcdic* *zOS-has-ebcdic*
For the internal script language the feature "ebcdic" was added. With this
For the internal script language the feature "ebcdic" was added. With this
you can fix ASCII dependent scripts like this:
>
if has("ebcdic")
@ -178,7 +178,7 @@ the screen with <C-L> or if you can't move to the left with the cursor key on
the command line, try adding >
:set t_le=^H
<
to your .vimrc. Note: '^H' is one character, hit <C-V><C-H> to get it.
to your .vimrc. Note: '^H' is one character, hit <C-V><C-H> to get it.
==============================================================================
6. Motif Problems *OS390-Motif* *zOS-Motif*
@ -203,9 +203,9 @@ There is no solution for this as of yet.
8. Known weaknesses *OS390-weaknesses* *zOS-weaknesses*
- No binary search in tag files.
The program /bin/sort sorts by ASCII value by default. This program is
normally used by ctags to sort the tags. There might be a version of
ctags out there, that does it right, but we can't be sure. So this seems to
The program /bin/sort sorts by ASCII value by default. This program is
normally used by ctags to sort the tags. There might be a version of
ctags out there, that does it right, but we can't be sure. So this seems to
be a permanent restriction.
- Multibyte support (utf-8) doesn't work, it's disabled at compile time.
@ -246,10 +246,10 @@ not an exhaustive summary of all the modifications made to the code base.
screen corruption problems in gVim reported by Anthony Giorgio.
Anthony Giorgio updated this document:
- Changed OS/390 to z/OS where appropriate. IBM decided to rename
- Changed OS/390 to z/OS where appropriate. IBM decided to rename
all of its servers and operating systems. z/OS and OS/390
are the same product, but the version numbering system was
reset for the name change. (e.g. OS/390 V2R11 == z/OS V1R1)
reset for the name change (e.g. OS/390 V2R11 == z/OS V1R1).
- Added information about second edition of the Open Source Redbook.
- Moved Redbook information to a separate section.
- Various tweaks and changes.
@ -265,16 +265,16 @@ not an exhaustive summary of all the modifications made to the code base.
6.0q (alpha):
Minor changes for nrformats=alpha (see |'nrformats'|).
Problem with hard-coded keycode for the English pound sign. Added a define in
Problem with hard-coded keycode for the English pound sign. Added a define in
ascii.h
Disabled multibyte for EBCDIC in feature.h
6.0f (alpha):
First compile of Vim 6 on z/OS UNIX. Some minor changes were needed.
First compile of Vim 6 on z/OS UNIX. Some minor changes were needed.
Finally found the reason why make from the top level didn't work (I must have
been blind before!). The Makefile contained a list of targets in one target
line. On all other UNIX's the macro $@ evaluates to the first target in this
been blind before!). The Makefile contained a list of targets in one target
line. On all other UNIX's the macro $@ evaluates to the first target in this
list, only on z/OS UNIX it evaluates to the last one :-(.
5.6-390d:
@ -282,7 +282,7 @@ not an exhaustive summary of all the modifications made to the code base.
5.6-390c:
I grepped through the source and examined every spot with a character
involved in a operation (+-). I hope I now found all EBCDIC/ASCII
involved in a operation (+-). I hope I now found all EBCDIC/ASCII
stuff, but ....
Fixed:
@ -295,7 +295,7 @@ not an exhaustive summary of all the modifications made to the code base.
- fixed quick-access table in findoptions()
- fixed 'g^H' select mode
- fixed tgetstr() 'get terminal capability string', ESC and
Ctrl chars where wrong. (Not used on OS/390 UNIX)
Ctrl chars where wrong. (Not used on OS/390 UNIX)
ctags:
@ -311,13 +311,13 @@ not an exhaustive summary of all the modifications made to the code base.
- added special compiler and linker options if building with X11
- configure:
- after created via autoconf hand-edited it to make the test for
ICEConnectionNumber work. This is a autoconf problem. OS/390 UNIX
ICEConnectionNumber work. This is a autoconf problem. OS/390 UNIX
needs -lX11 for this.
- Makefile
- Don't include the lib directories ('-L...') into the variable
ALL_LIBS. Use own variable ALL_LIB_DIRS instead. A fully POSIX
ALL_LIBS. Use own variable ALL_LIB_DIRS instead. A fully POSIX
compliant compiler must not accept objects/libraries and options
mixed. Now we can call the linker like this:
mixed. Now we can call the linker like this:
$(CC) $(LDFLAGS) $(ALL_LIB_DIRS) $(OBJ) $(ALL_LIBS)

View File

@ -1,4 +1,4 @@
*os_amiga.txt* For Vim version 7.0aa. Last change: 2004 Jun 28
*os_amiga.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Bram Moolenaar
@ -13,7 +13,7 @@ Installation on the Amiga:
look for the file "VIM:doc/help.txt" (for the help command).
Setting the environment variable $VIM also works. And the other way around:
when $VIM used and it is not defined, "VIM:" is used.
- With DOS 1.3 or earlier: Put "arp.library" in "libs:". Vim must have been
- With DOS 1.3 or earlier: Put "arp.library" in "libs:". Vim must have been
compiled with the |+ARP| feature enabled. Make sure that newcli and run are
in "C:" (for executing external commands).
- Put a shell that accepts a command with "-c" (e.g. "Csh" from Fish disk
@ -21,13 +21,13 @@ Installation on the Amiga:
executing external commands).
If you have sufficient memory you can avoid startup delays by making Vim and
csh resident with the command "rez csh vim". You will have to put
"rezlib.library" in your "libs:" directory. Under 2.0 you will need rez
csh resident with the command "rez csh vim". You will have to put
"rezlib.library" in your "libs:" directory. Under 2.0 you will need rez
version 0.5.
If you do not use digraphs, you can save some memory by recompiling without
the |+digraphs| feature. If you want to use Vim with other terminals you can
recompile with the TERMCAP option. Vim compiles with Manx 5.x and SAS 6.x.
the |+digraphs| feature. If you want to use Vim with other terminals you can
recompile with the TERMCAP option. Vim compiles with Manx 5.x and SAS 6.x.
See the makefiles and feature.h.
If you notice Vim crashes on some files when syntax highlighting is on, or
@ -47,7 +47,7 @@ If you want to use different colors set the termcap codes:
t_ZH (for italic text)
t_ZR (for normal text after t_ZH)
Standard ANSI escape sequences are used. The codes are:
Standard ANSI escape sequences are used. The codes are:
30 grey char 40 grey cell >0 grey background 0 all attributes off
31 black char 41 black cell >1 black background 1 boldface
32 white char 42 white cell >2 white background 2 faint
@ -57,8 +57,8 @@ Standard ANSI escape sequences are used. The codes are:
36 white char 46 white cell >6 white background 8 invisible
37 blue char 47 blue cell >7 blue background
The codes with '>' must be the last. The cell and background color should be
the same. The codes can be combined by separating them with a semicolon. For
The codes with '>' must be the last. The cell and background color should be
the same. The codes can be combined by separating them with a semicolon. For
example to get white text on a blue background: >
:set t_me=^V<Esc>[0;32;43;>3m
:set t_se=^V<Esc>[0;32;43;>3m
@ -72,14 +72,14 @@ example to get white text on a blue background: >
When using multiple commands with a filter command, e.g. >
:r! echo this; echo that
Only the output of the last command is used. To fix this you have to group the
commands. This depends on the shell you use (that is why it is not done
automatically in Vim). Examples: >
Only the output of the last command is used. To fix this you have to group the
commands. This depends on the shell you use (that is why it is not done
automatically in Vim). Examples: >
:r! (echo this; echo that)
:r! {echo this; echo that}
Commands that accept a single file name allow for embedded spaces in the file
name. However, when using commands that accept several file names, embedded
name. However, when using commands that accept several file names, embedded
spaces need to be escaped with a backslash.
------------------------------------------------------------------------------
@ -94,8 +94,8 @@ For the latest info about the MorphOS version:
Problems ~
There are a couple of problems which are not MorphOS related but more Vim and
UN*X related. When starting up Vim in ram: it complains with a nag requester
from MorphOS please simply ignore it. Another problem is when running Vim as
UN*X related. When starting up Vim in ram: it complains with a nag requester
from MorphOS please simply ignore it. Another problem is when running Vim as
is some plugins will cause a few problems which you can ignore as well.
Hopefully someone will be fixing it over the time.
@ -116,7 +116,7 @@ Installation ~
ftp://ftp.vim.org/pub/vim/amiga/vim62rt.tgz
and unpack it in your 'Apps' directory of the MorphOS installation. For me
and unpack it in your 'Apps' directory of the MorphOS installation. For me
this would create following directory hierarchy:
MorphOS:Apps/Vim/Vim62/...
@ -130,8 +130,8 @@ Installation ~
4) Copy the '.vimrc' file to s:
5) There is also a file named 'color-sequence' included in this archive. This
will set the MorphOS Shell to show ANSI colors. Please copy the file to s:
5) There is also a file named 'color-sequence' included in this archive. This
will set the MorphOS Shell to show ANSI colors. Please copy the file to s:
and change the s:shell-startup to:
;Begin VIM

View File

@ -1,4 +1,4 @@
*os_beos.txt* For Vim version 7.0aa. Last change: 2004 May 01
*os_beos.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Bram Moolenaar
@ -31,11 +31,11 @@ matters not discussed in this file, Vim behaves very much like the Unix
1. General *beos-general*
The default syntax highlighting mostly works with different foreground colors
to highlight items. This works best if you set your Terminal window to a
darkish background and light letters. Some middle-grey background (for
to highlight items. This works best if you set your Terminal window to a
darkish background and light letters. Some middle-grey background (for
instance (r,g,b)=(168,168,168)) with black letters also works nicely. If you
use the default light background and dark letters, it may look better to
simply reverse the notion of foreground and background color settings. To do
simply reverse the notion of foreground and background color settings. To do
this, add this to your .vimrc file (where <Esc> may need to be replaced with
the escape character): >
@ -48,7 +48,7 @@ the escape character): >
2. Compiling Vim *beos-compiling*
From the Advanced Access Preview Release (AAPR) on, Vim can be configured with
the standard configure script. To get the compiler and its flags right, use
the standard configure script. To get the compiler and its flags right, use
the following command-line in the shell (you can cut and paste it in one go):
CC=$BE_C_COMPILER CFLAGS="$BE_DEFAULT_C_FLAGS -O7" \
@ -60,9 +60,9 @@ When configure has run, and you wish to enable GUI support, you must edit the
config.mk file so that the lines with GUI_xxx refer to $(BEOSGUI_xxx) instead
of $(NONE_xxx).
Alternatively you can make this change in the Makefile; it will have a
more permanent effect. Search for "NONE_".
more permanent effect. Search for "NONE_".
After compilation you need to add the resources to the binary. Add the
After compilation you need to add the resources to the binary. Add the
following few lines near the end (before the line with "exit $exit_value") of
the link.sh script to do this automatically.
@ -81,12 +81,12 @@ You will need it when using "make install" to install Vim.
Now type "make" to compile Vim, then "make install" to install it.
If you want to install Vim by hand, you must copy Vim to $HOME/config/bin, and
create a bunch of symlinks to it ({g,r,rg}{vim,ex,view}). Furthermore you must
copy Vims configuration files to $HOME/config/share/vim:
create a bunch of symlinks to it ({g,r,rg}{vim,ex,view}). Furthermore you must
copy Vim's configuration files to $HOME/config/share/vim:
vim-5.0s/{*.vim,doc,syntax}. For completeness, you should also copy the nroff
manual pages to $HOME/config/man/man1. Don't forget ctags/ctags and xxd/xxd!
manual pages to $HOME/config/man/man1. Don't forget ctags/ctags and xxd/xxd!
Obviously, you need the unlimited linker to actually link Vim. See
Obviously, you need the unlimited linker to actually link Vim. See
http://www.metrowerks.com for purchasing the CodeWarrior compiler for BeOS.
There are currently no other linkers that can do the job.
@ -97,7 +97,7 @@ you have the appropriate files installed. |beos-perl|
3. Timeout in the Terminal *beos-timeout*
Because some POSIX/UNIX features are still missing[1], there is no direct OS
support for read-with-timeout in the Terminal. This would meat that you cannot
support for read-with-timeout in the Terminal. This would mean that you cannot
use :mappings of more than one character, unless you also :set notimeout.
|'timeout'|
@ -112,16 +112,16 @@ indistinctive character sequences.
These problems do not exist in the GUI.
[1]: there is no select() on file descriptors; also the termios VMIN and VTIME
settings do not seem to work properly. This has been the case since DR7 at
settings do not seem to work properly. This has been the case since DR7 at
least and still has not been fixed as of PR2.
*beos-unicode*
4. Unicode vs. Latin1 *beos-utf8*
BeOS uses Unicode and UTF-8 for text strings (16-bit characters encoded to
8-bit characters). Vim assumes ISO-Latin1 or other 8-bit character codes.
This does not produce the desired results for non-ASCII characters. Try the
command :digraphs to see. If they look messed up, use :set isprint=@ to
8-bit characters). Vim assumes ISO-Latin1 or other 8-bit character codes.
This does not produce the desired results for non-ASCII characters. Try the
command :digraphs to see. If they look messed up, use :set isprint=@ to
(slightly) improve the display of ISO-Latin1 characters 128-255. This works
better in the GUI, depending on which font you use (below).
@ -133,46 +133,46 @@ You may also use the /boot/bin/xtou command to convert UTF-8 files from (xtou
Normally Vim starts with the GUI if you start it as gvim or vim -g. The BeOS
version tries to determine if it was started from the Tracker instead of the
Terminal, and if so, use the GUI anyway. However, the current detection scheme
is fooled if you use the command "vim - </dev/null" or "vim filename &". The
Terminal, and if so, use the GUI anyway. However, the current detection scheme
is fooled if you use the command "vim - </dev/null" or "vim filename &". The
latter can be called a feature but probably only works because there is no
BSD-style job control.
Stuff that does not work yet:
- Running external commands from the GUI does not work 100% (again due to lack
of support for select()). There was a choice between seeing the command's
output, or being able to interrupt it. I chose for seeing the output. Even
of support for select()). There was a choice between seeing the command's
output, or being able to interrupt it. I chose for seeing the output. Even
now the command sometimes crashes mysteriously, apparently in Be's
malloc_internal() called from the putenv() function, after fork()ing. (data
access exception occurred, ec01b0ec: 90e80000 *stw r7, 0x0000 (r8))(:!ls
works usually, :r !ls usually doesn't). This has been reported as bug
malloc_internal() called from the putenv() function, after fork()ing. (data
access exception occurred, ec01b0ec: 90e80000 *stw r7, 0x0000 (r8)). (:!ls
works usually, :r !ls usually doesn't). This has been reported as bug
# 971215-083826.
- The window title.
- Starting the GUI from the Terminal version with :gui always acts as if
:gui -f were used. There is no way to fix this that I can see.
:gui -f were used. There is no way to fix this that I can see.
- There are some small display glitches here and there that I hope to clean up
later. Most of them occur when the window is partially obscured. Some of
later. Most of them occur when the window is partially obscured. Some of
them seem to be bugs in BeOS, because the Terminal has similar glitches.
- Mouse up events are not generated when outside the window. This is a bug in
BeOS. You can notice this when selecting text and moving the cursor outside
- Mouse up events are not generated when outside the window. This is a bug in
BeOS. You can notice this when selecting text and moving the cursor outside
the window, then letting go of the mouse button. Another way is when you
drag the scrollbar and do the same thing. Because Vim still thinks you are
still playing with the scrollbar it won't change it itself. I provided a
still playing with the scrollbar it won't change it itself. I provided a
workaround which kicks in when the window is activated or deactivated (so it
works best with focus- follows-mouse (/boot/bin/ffm) turned on).
- The cursor does not flash (very low priority; I'm not sure I even like it
when it flashes)
The $VIM directory *beos-vimdir*
6. The $VIM directory *beos-vimdir*
$VIM is the symbolic name for the place where Vims support files are stored.
The default value for $VIM is set at compile time and can be determined with >
:version
The normal value is /boot/home/config/share/vim. If you don't like it you can
The normal value is /boot/home/config/share/vim. If you don't like it you can
set the VIM environment variable to override this, or set 'helpfile' in your
.vimrc: >
@ -189,7 +189,7 @@ session, unless you use the File Types application to set Vim to be "Single
Launch") or on the Vim window (starts editing the files). Dropping a folder
sets Vim's current working directory. |:cd| |:pwd| If you drop files or
folders with either SHIFT key pressed, Vim changes directory to the folder
that contains the first item dropped. When starting Vim, there is no need to
that contains the first item dropped. When starting Vim, there is no need to
press shift: Vim behaves as if you do.
Files dropped set the current argument list. |argument-list|
@ -198,10 +198,10 @@ Files dropped set the current argument list. |argument-list|
8. Single Launch vs. Multiple Launch *beos-launch*
As distributed Vim's Application Flags (as seen in the FileTypes preference)
are set to Multiple Launch. If you prefer, you can set them to Single Launch
are set to Multiple Launch. If you prefer, you can set them to Single Launch
instead. Attempts to start a second copy of Vim will cause the first Vim to
open the files instead. This works from the Tracker but also from the command
line. In the latter case, non-file (option) arguments are not supported.
open the files instead. This works from the Tracker but also from the command
line. In the latter case, non-file (option) arguments are not supported.
NB: Only the GUI version has a BApplication (and hence Application Flags).
This section does not apply to the GUI-less version, should you compile one.
@ -214,16 +214,16 @@ Set fonts with >
:set guifont=Courier10_BT/Roman/10
where the first part is the font family, the second part the style, and the
third part the size. You can use underscores instead of spaces in family and
third part the size. You can use underscores instead of spaces in family and
style.
Best results are obtained with monospaced fonts (such as Courier). Vim
Best results are obtained with monospaced fonts (such as Courier). Vim
attempts to use all fonts in B_FIXED_SPACING mode but apparently this does not
work for proportional fonts (despite what the BeBook says).
Vim also tries to use the B_ISO8859_1 encoding, also known as ISO Latin 1.
This also does not work for all fonts. It does work for Courier, but not for
ProFontISOLatin1/Regular (strangely enough). You can verify this by giving the >
This also does not work for all fonts. It does work for Courier, but not for
ProFontISOLatin1/Regular (strangely enough). You can verify this by giving the >
:digraphs
@ -270,30 +270,30 @@ because the ALT (aka COMMAND) keys are not passed to applications.
Vim calls the various mouse buttons LeftMouse, MiddleMouse and RightMouse. If
you use the default Mouse preference settings these names indeed correspond to
reality. Vim uses this mapping:
reality. Vim uses this mapping:
Button 1 -> LeftMouse,
Button 2 -> RightMouse,
Button 3 -> MiddleMouse.
If your mouse has fewer than 3 buttons you can provide your own mapping from
mouse clicks with modifier(s) to other mouse buttons. See the file
mouse clicks with modifier(s) to other mouse buttons. See the file
vim-5.x/macros/swapmous.vim for an example. |gui-mouse-mapping|
12. Color names *beos-colors*
Vim has a number of color names built-in. Additional names are read from the
file $VIMRUNTIME/rgb.txt, if present. This file is basically the color
database from X. Names used from this file are cached for efficiency.
Vim has a number of color names built-in. Additional names are read from the
file $VIMRUNTIME/rgb.txt, if present. This file is basically the color
database from X. Names used from this file are cached for efficiency.
13. Compiling with Perl *beos-perl*
Compiling with Perl support enabled is slightly tricky. The Metrowerks
compiler has some strange ideas where to search for include files. Since
Compiling with Perl support enabled is slightly tricky. The Metrowerks
compiler has some strange ideas where to search for include files. Since
several include files with Perl have the same names as some Vim header
files, the wrong ones get included. To fix this, run the following Perl
files, the wrong ones get included. To fix this, run the following Perl
script while in the vim-5.0/src directory: >
preproc.pl > perl.h

View File

@ -1,4 +1,4 @@
*os_dos.txt* For Vim version 7.0aa. Last change: 2003 Dec 20
*os_dos.txt* For Vim version 7.0aa. Last change: 2006 Feb 14
VIM REFERENCE MANUAL by Bram Moolenaar
@ -126,8 +126,8 @@ text. For example, to get grey text on a blue background: >
See |highlight-groups| for other groups that are available.
A DOS console does not support attributes like bold and underlining. You can
set the color used in five modes with nine termcap options. Note that this is
not necessary since you can set the color directly with the ":highlight"
set the color used in five modes with nine terminal options. Note that this
is not necessary since you can set the color directly with the ":highlight"
command; these options are for backward compatibility with older Vim versions.
The |'highlight'| option specifies which of the five modes is used for which
action. >

View File

@ -1,4 +1,4 @@
*os_mac.txt* For Vim version 7.0aa. Last change: 2004 Jun 19
*os_mac.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Bram Moolenaar et al.
@ -9,7 +9,7 @@
This file documents the particularities of the Macintosh version of Vim.
NOTE: This file is a bit outdated. You might find more useful info here:
http://macvim.swdev.org/
http://macvim.org/
1. Filename Convention |mac-filename|
2. .vimrc an .vim files |mac-vimfile|
@ -33,7 +33,7 @@ Indianapolis IN 46220 USA
==============================================================================
1. Filename Convention *mac-filename*
You can use either the unix or mac path separator or a mix of both. In order
You can use either the unix or mac path separator or a mix of both. In order
to determine if the specified filename is relative to the current folder or
absolute (i.e. relative to the "Desktop"), the following algorithm is used:
@ -59,7 +59,7 @@ You can use the |$VIM| and |$VIMRUNTIME| variable. >
2. .vimrc and .vim files *mac-vimfile*
On the Mac files starting with a dot "." are discouraged, thus the rc files
are named "vimrc" or "_vimrc" and "gvimrc" or "_gvimrc". These files can be in
are named "vimrc" or "_vimrc" and "gvimrc" or "_gvimrc". These files can be in
any format (mac, dos or unix). Vim can handle any file format when the
|'nocompatible'| option is set, otherwise it will only handle mac format
files.
@ -71,6 +71,12 @@ Q: I can't enter non-ASCII character in Apple Terminal.
A: Under Window Settings, Emulation, make sure that "Escape non-ASCII
characters" is not checked.
Q: How do I start the GUI from the command line?
A: Assuming that Vim.app is located in /Applications:
open /Applications/Vim.app
Or:
/Applications/Vim.app/Contents/MacOS/Vim -g {arguments}
==============================================================================
4. Mac Lack *mac-lack*

View File

@ -1,4 +1,4 @@
*os_mint.txt* For Vim version 7.0aa. Last change: 2001 Sep 03
*os_mint.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Jens M. Felderhoff
@ -15,12 +15,12 @@ The Unix behavior described in the documentation also refers to the
MiNT version of Vim unless explicitly stated otherwise.
For wildcard expansion of <~> (home directory) you need a shell that
expands the tilde. The vanilla Bourne shell doesn't recognize it.
expands the tilde. The vanilla Bourne shell doesn't recognize it.
With csh and ksh it should work OK.
The MiNT version of vim needs the termcap file /etc/termcap with the
terminal capabilities of your terminal. Builtin termcaps are
supported for the vt52 terminal. Termcap entries for the TOSWIN window
terminal capabilities of your terminal. Builtin termcaps are
supported for the vt52 terminal. Termcap entries for the TOSWIN window
manager and the virtual console terminals have been appended to the
termcap file that comes with the Vim distribution.

View File

@ -1,4 +1,4 @@
*os_msdos.txt* For Vim version 7.0aa. Last change: 2001 Sep 03
*os_msdos.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Bram Moolenaar
@ -97,7 +97,7 @@ write a file, and for filter commands. Or Vim runs out of memory, and random
problems may result.
The Dos32 version cannot have an unlimited number of files open at any one
time. The limit depends on the setting of FILES in your CONFIG.SYS. This
time. The limit depends on the setting of FILES in your CONFIG.SYS. This
defaults to 15; if you need to edit a lot of files, you should increase this.
If you do not set FILES high enough, you can get strange errors, and shell
commands may cause a crash!
@ -207,18 +207,24 @@ in such a way that it becomes too long may give unexpected results.
8. Symbolically linked files *msdos-linked-files*
When using Vim to edit a symbolically linked file on a unix NFS file server,
you may run into problems.
When writing the file, Vim does not "write through" the symlink. Instead, it
deletes the symbolic link and creates a new file in its place.
On Unix, Vim is prepared for links (symbolic or hard). A backup copy of
the original file is made and then the original file is overwritten. This
assures that all properties of the file remain the same. On non-Unix systems,
the original file is renamed and a new file is written. Only the protection
bits are set like the original file. However, this doesn't work properly when
you may run into problems. When writing the file, Vim does not "write
through" the symlink. Instead, it deletes the symbolic link and creates a new
file in its place.
On Unix, Vim is prepared for links (symbolic or hard). A backup copy of the
original file is made and then the original file is overwritten. This assures
that all properties of the file remain the same. On non-Unix systems, the
original file is renamed and a new file is written. Only the protection bits
are set like the original file. However, this doesn't work properly when
working on an NFS-mounted file system where links and other things exist. The
only way to fix this in the current version is not making a backup file, by
":set nobackup nowritebackup" |'writebackup'|
A similar problem occurs when mounting a Unix filesystem through Samba or a
similar system. When Vim creates a new file it will get the default user ID
for the mounted file system. This may be different from the original user ID.
To avoid this set the 'backupcopy' option to "yes".
==============================================================================
9. Copy/paste in a dos box *msdos-copy-paste*
@ -235,7 +241,7 @@ In other versions, the following can be used.
How to copy/paste text from/to vim in a dos box:
1) to get VIM to run in a window, instead of full screen, press alt+enter.
1) To get VIM to run in a window, instead of full screen, press alt+enter.
This toggles back and forth between full screen and a dos window.
NOTE: In Windows 95 you must have the property "Fast Pasting" unchecked!
In the properties dialog box for the MS-DOS window, go to "MS-DOS
@ -245,25 +251,25 @@ How to copy/paste text from/to vim in a dos box:
2) To paste something _into_ Vim, put Vim in insert mode.
3) put the text you want to paste on the windows clipboard.
3) Put the text you want to paste on the windows clipboard.
4) Click the control box in the upper left of the Vim window. (This looks
like a big minus sign). If you don't want to use the mouse, you can get
4) Click the control box in the upper left of the Vim window. (This looks
like a big minus sign.) If you don't want to use the mouse, you can get
this with alt+spacebar.
5) on the resulting dropdown menu choose "Edit"
6) on the child dropdown menu choose "Paste"
5) On the resulting dropdown menu choose "Edit".
6) On the child dropdown menu choose "Paste".
To copy something from the Vim window to the clipboard,
1) select the control box to get the control drop down menu.
2) select "Edit".
3) select "Mark"
4) using either the keys or the mouse, select the part of the Vim window that
you want to copy. To use the keys, use the arrow keys, and hold down shift
1) Select the control box to get the control drop down menu.
2) Select "Edit".
3) Select "Mark".
4) Using either the keys or the mouse, select the part of the Vim window that
you want to copy. To use the keys, use the arrow keys, and hold down shift
to extend the selection.
5) when you've completed your selection, press 'enter.' The selection
is now in the windows clipboard. By the way, this can be any
rectangular selection, for example columns 4-25 in rows 7-10. It can
5) When you've completed your selection, press 'enter'. The selection
is now in the windows clipboard. By the way, this can be any
rectangular selection, for example columns 4-25 in rows 7-10. It can
include anything in the VIM window: the output of a :!dir, for
example.

View File

@ -1,4 +1,4 @@
*os_os2.txt* For Vim version 7.0aa. Last change: 2004 Jan 09
*os_os2.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Paul Slootman
@ -28,19 +28,19 @@ that are started via a shell escape from within Vim. This specifically means
that Vim won't be able to remove the swap file(s) associated with buffers open
at the time the other program was started, until the other program is stopped.
At that time, the swap file may be removed, but if Vim could not do that the
first time, it won't be removed at all. You'll get warnings that some other
first time, it won't be removed at all. You'll get warnings that some other
Vim session may be editing the file when you start Vim up again on that file.
This can be reproduced with ":!start epm". Now quit Vim, and start Vim again
This can be reproduced with ":!start epm". Now quit Vim, and start Vim again
with the file that was in the buffer at the time epm was started. I'm working
on this!
A second problem is that Vim doesn't understand the situation when using it
when accessing the OS/2 system via the network, e.g. using telnet from a Unix
system, and then starting Vim. The problem seems to be that OS/2 =sometimes=
system, and then starting Vim. The problem seems to be that OS/2 =sometimes=
recognizes function / cursor keys, and tries to convert those to the
corresponding OS/2 codes generated by the "normal" PC keyboard. I've been
corresponding OS/2 codes generated by the "normal" PC keyboard. I've been
testing a workaround (mapping the OS/2 codes to the correct functions), but so
far I can't say anything conclusive (this is on Warp 3, by the way). In the
far I can't say anything conclusive (this is on Warp 3, by the way). In the
meantime any help will be appreciated.
@ -52,12 +52,12 @@ is generally available as (ask Archie about it):
emxrt.zip emx runtime package
I've included a copy of emx.dll, which should be copied to one of the
directories listed in your LIBPATH. Emx is GPL'ed, but the emx.dll library is
directories listed in your LIBPATH. Emx is GPL'ed, but the emx.dll library is
not (read COPYING.EMX to find out what that means to you).
This emx.dll is from the emxfix04.zip package, which unfortunately has a bug,
eh, I mean a POSIX feature, in select(). Versions of Vim before 3.27 will
appear to hang when starting (actually, while processing vimrc). Hit <Enter> a
appear to hang when starting (actually, while processing vimrc). Hit <Enter> a
couple of times until Vim starts working if this happens. Next, get an up to
date version of Vim!
@ -84,14 +84,14 @@ you get a tree of Vim files like this:
etc.
Note: .vimrc may also be called _vimrc to accommodate those who have chosen to
install OS/2 on a FAT file system. Vim first tries to find .vimrc and if that
install OS/2 on a FAT file system. Vim first tries to find .vimrc and if that
fails, looks for _vimrc in the same place. The existence of a .vimrc or
_vimrc file influences the 'compatible' options, which can have unexpected side
effects. See |'compatible'|.
If you're using network drives with OS/2, then you can install Vim on a
network drive (including .vimrc; this is then called the "system" vimrc file),
and then use a personal copy of .vimrc (the "user" vimrc file). This should be
and then use a personal copy of .vimrc (the "user" vimrc file). This should be
located in a directory indicated by the HOME environment variable.
@ -135,14 +135,14 @@ TERMINAL SETTING
*os2ansi*
Use "os2ansi" as the TERM environment variable (or don't set it at all, as the
default is the correct value). You can set term to os2ansi in the .vimrc, in
default is the correct value). You can set term to os2ansi in the .vimrc, in
case you need TERM to be a different value for other applications. The
problem is that OS/2 ANSI emulation is quite limited (it doesn't have insert /
delete line, for example).
If you want to use a different value for TERM (because of other programs, for
example), make sure that the termcap entry for that TERM value has the
appropriate key mappings. The termcap.dat distributed with emx does not always
appropriate key mappings. The termcap.dat distributed with emx does not always
have them. Here are some suitable values to add to the termcap entry of your
choice; these allow the cursor keys and the named function keys (such as
pagedown) to work.
@ -214,7 +214,7 @@ clipboard you would use: >
endif
This will ensure that only on OS/2 clipbrd is called whereas on other
platforms vims build in mechanism is used. (To enable this functions on every
platforms vims build in mechanism is used. (To enable this functions on every
load of Vim place the above lines in your .vimrc.)
vim:tw=78:ts=8:ft=help:norl:

View File

@ -1,4 +1,4 @@
*os_qnx.txt* For Vim version 7.0aa. Last change: 2004 Apr 23
*os_qnx.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Julian Kinraid
@ -22,7 +22,7 @@ Vim on QNX behaves much like other unix versions. |os_unix.txt|
2. Compiling Vim *qnx-compiling*
Vim can be compiled using the standard configure/make approach. If you want to
Vim can be compiled using the standard configure/make approach. If you want to
compile for X11, pass the --with-x option to configure. Otherwise, running
./configure without any arguments or passing --enable-gui=photon, will compile
vim with the Photon gui support. Run ./configure --help , to find out other
@ -118,12 +118,12 @@ Known problems:
set noguipty
Bugs:
- Still a slight problem with menu highlighting
- Still a slight problem with menu highlighting.
- When using phditto/phinows/etc., if you are using a font that
doesn't support the bold attribute, when vim attempts to draw
bold text it will be all messed up.
- The cursor can sometimes be hard to see.
- A number of minor problems that can fixed :)
- A number of minor problems that can fixed. :)
Todo:
- Improve multi-language support.

View File

@ -1,4 +1,4 @@
*os_risc.txt* For Vim version 7.0aa. Last change: 2004 May 01
*os_risc.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Thomas Leonard
@ -47,9 +47,9 @@ distribution, but modified slightly to work within the limits of ADFS, plus
some extra files such as the window templates.
User choices are read from `Choices:*' and are saved to `<Choices$Write>.*'.
If you have the new !Boot structure then these should be set up already. If
If you have the new !Boot structure then these should be set up already. If
not, set Choices$Path to a list of directories to search when looking for
user configuration files. Set Choices$Write to the directory you want files
user configuration files. Set Choices$Write to the directory you want files
to be saved into (so your search patterns and marks can be remembered between
sessions).
@ -58,7 +58,7 @@ sessions).
2. Filename munging
All pathname munging is disabled by default, so Vim should behave like a
normal RISC OS application now. So, if you want to edit `doc/html' then you
normal RISC OS application now. So, if you want to edit `doc/html' then you
actually type `*vi doc/html'.
The only times munging is done is when:
@ -66,7 +66,7 @@ The only times munging is done is when:
- Searching included files from C programs, since these are always munged.
See |[I|.
Note: make sure you are in the right directory when you use this
command (ie the one with subdirectories 'c' and 'h').
command (i.e. the one with subdirectories 'c' and 'h').
- Sourcing files using |:so|.
Paths starting `$VIM/' are munged like this:
@ -88,7 +88,7 @@ To use Vim from the command-line use the `*vi' command (or '*ex' for
Type `*vi -h' for a list of options.
Running the command-line version of Vim in a large high-color mode may cause
the scrolling to be very slow. Either change to a mode with fewer colors or
the scrolling to be very slow. Either change to a mode with fewer colors or
use the GUI version.
Also, holding down Ctrl will slow it down even more, and Ctrl-Shift will
@ -115,7 +115,7 @@ The global clipboard is supported, so you can select some text and then
paste it directly into another application (provided it supports the
clipboard too).
Clicking Menu now opens a menu like a normal RISC OS program. Hold down Shift
Clicking Menu now opens a menu like a normal RISC OS program. Hold down Shift
when clicking Menu to paste (from the global clipboard).
Dragging a file to the window replaces the CURRENT buffer (the one with the
@ -134,27 +134,27 @@ For fonts, you have the choice of the system font, an outline font, the system
font via ZapRedraw and any of the Zap fonts via ZapRedraw: >
:set guifont=
< To use the system font via the VDU drivers. Supports
< To use the system font via the VDU drivers. Supports
bold and underline.
>
:set guifont=Corpus.Medium
< Use the named outline font. You can use any font, but
< Use the named outline font. You can use any font, but
only monospaced ones like Corpus look right.
>
:set guifont=Corpus.Medium:w8:h12:b:i
< As before, but with size of 8 point by 12 point, and
in bold italic.
If only one of width and height is given then that
value is used for both. If neither is given then 10
value is used for both. If neither is given then 10
point is used.
Thanks to John Kortink, Vim can use the ZapRedraw module. Start the font name
Thanks to John Kortink, Vim can use the ZapRedraw module. Start the font name
with '!' (or '!!' for double height), like this: >
:set guifont=!!
< Use the system font, but via ZapRedraw. This gives a
faster redraw on StrongARM processors, but you can't
get bold or italic text. Double height.
get bold or italic text. Double height.
>
:set guifont=!script
< Uses the named Zap font (a directory in VimFont$Path).
@ -164,12 +164,12 @@ with '!' (or '!!' for double height), like this: >
currently, but you can use any of the Zap fonts if
they are in VimFont$Path.
Vim will try to load font files '0', 'B', 'I' and 'IB'
from the named directory. Only '0' (normal style) MUST
be present. Link files are not currently supported.
from the named directory. Only '0' (normal style) MUST
be present. Link files are not currently supported.
Note that when using ZapRedraw the edit bar is drawn in front of the character
you are on rather than behind it. Also redraw is incorrect for screen modes
with eigen values of 0. If the font includes control characters then you can
you are on rather than behind it. Also redraw is incorrect for screen modes
with eigen values of 0. If the font includes control characters then you can
get Vim to display them by changing the 'isprint' option.
If you find the scrolling is too slow on your machine, try experimenting
@ -199,8 +199,8 @@ It seems to work pretty well now, using '*vi -T ansi'.
If Vim crashes then the swap and backup files (if any) will be in the
directories set with the 'directory' and 'bdir' options. By default the swap
files are in <Wimp$ScrapDir> (ie inside !Scrap) and backups are in the
directory you were saving to. Vim will allow you to try and recover the file
files are in <Wimp$ScrapDir> (i.e. inside !Scrap) and backups are in the
directory you were saving to. Vim will allow you to try and recover the file
when you next try to edit it.
To see a list of swap files, press <F12> and type `*vi -r'.
@ -223,13 +223,13 @@ command-line version, or press CTRL-C in the GUI version.
*riscos-memory*
8. Memory usage
Vim will use dynamic areas on RISC OS 3.5 or later. If you can use them on
older machines then edit the !RunTxt and GVim files. I don't know what UnixLib
Vim will use dynamic areas on RISC OS 3.5 or later. If you can use them on
older machines then edit the !RunTxt and GVim files. I don't know what UnixLib
does by default on these machines so I'm playing safe.
It doesn't work at all well without dynamic areas, since it can't change its
memory allocation once running. Hence you should edit `!Vim.GVim' and
`!Vim.!RunTxt' to choose the best size for you. You probably need at least
memory allocation once running. Hence you should edit `!Vim.GVim' and
`!Vim.!RunTxt' to choose the best size for you. You probably need at least
about 1400K.
==============================================================================
@ -237,11 +237,11 @@ about 1400K.
9. Filetypes
You can now specify that autocommands are only executed for files of certain
types. The filetype is given in the form &xxx, when xxx is the filetype.
types. The filetype is given in the form &xxx, when xxx is the filetype.
Filetypes must be specified by number (eg &fff for Text).
Filetypes must be specified by number (e.g. &fff for Text).
The system has changed from version 5.3. The new sequence of events is:
The system has changed from version 5.3. The new sequence of events is:
- A file is loaded. |'osfiletype'| is set to the RISC OS filetype.
- Based on the filetype and pathname, Vim will try to set |'filetype'| to the
@ -264,7 +264,7 @@ Some examples may make this clearer:
since many pathnames contain them.
- You can prefix the command with '~', which stops any output from being
displayed. This also means that you don't have to press <Enter> afterwards,
displayed. This also means that you don't have to press <Enter> afterwards,
and stops the screen from being redrawn. {only in the GUI version}
==============================================================================
@ -274,14 +274,14 @@ Some examples may make this clearer:
Downloading everything you need:
- Get the latest source distribution (see www.vim.org)
- Get the runtime environment files (eg these help files)
- Get the runtime environment files (e.g. these help files)
- Get the `extra' archive (contains the RISC OS specific bits)
- Get the RISC OS binary distribution (if possible)
Unarchiving:
- Create a raFS disk and put the archives on it.
- Create a raFS disk and put the archives on it
- Un-gzip them
- Un-tar them (*tar xELf 50 archive/tar)
@ -289,9 +289,9 @@ Unarchiving:
Recompiling the sources:
- Create c, s, and h directories.
- Put all the header files in 'h' \
- Put all the C files in `c' | And lose the extensions
- Put the assembler file (`swis/s') in 's' /
- Put all the header files in 'h'. \
- Put all the C files in `c'. | And lose the extensions
- Put the assembler file (`swis/s') in 's'. /
- Rename all the files in `proto' to `h', like this:
raFS::VimSrc.source.proto.file/pro
becomes
@ -300,9 +300,9 @@ Recompiling the sources:
.pro"
with
_pro.h"
- Create a simple Makefile if desired and do '*make -k'
Use 'CC = gcc -DRISCOS -DUSE_GUI -O2 -x c' in the Makefile
- Save the binary as !Vim.Vim in the binary distribution
- Create a simple Makefile if desired and do '*make -k'.
Use 'CC = gcc -DRISCOS -DUSE_GUI -O2 -x c' in the Makefile.
- Save the binary as !Vim.Vim in the binary distribution.
Updating the run-time environment:
@ -311,9 +311,9 @@ Updating the run-time environment:
new files.
- Remove files in `doc' not ending in `/txt', except for `tags'.
- Lose the extensions from the files in `doc'.
- Edit the `doc.tags' file. Remove extensions from the second column: >
- Edit the `doc.tags' file. Remove extensions from the second column: >
:%s/^\(.[^\t]*\t.*\)\.txt\t/\1\t/
- Remove extensions from the syntax files. Split them into two directories
- Remove extensions from the syntax files. Split them into two directories
to avoid the 77 entry limit on old ADFS filesystems.
- Edit `Vim:FileType' to match `*.c.*' as well as `*/c' and so on.
Add filetype checking too.

View File

@ -1,4 +1,4 @@
*os_unix.txt* For Vim version 7.0aa. Last change: 2003 Mar 15
*os_unix.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by Bram Moolenaar
@ -11,7 +11,7 @@ For compiling Vim on Unix see "INSTALL" and "Makefile" in the src directory.
The default help file name is "/usr/local/lib/vim/help.txt"
The files "$HOME/.vimrc" and "$HOME/.exrc" are used instead of "s:.vimrc" and
"s:.exrc". Additionally "/usr/local/etc/vimrc" is used first.
"s:.exrc". Additionally "/usr/local/etc/vimrc" is used first.
If "/usr/local/share" exists it is used instead of "/usr/local/lib".
Temporary files (for filtering) are put in "/tmp". If you want to place them
@ -26,15 +26,15 @@ For executing external commands fork()/exec() is used when possible, otherwise
system() is used, which is a bit slower. The output of ":version" includes
|+fork| when fork()/exec() is used, |+system()| when system() is used. This
can be changed at compile time.
(For forking of the GUI version see |gui-fork|).
(For forking of the GUI version see |gui-fork|.)
Because terminal updating under Unix is often slow (e.g. serial line
terminal, shell window in suntools), the 'showcmd' and 'ruler' options
are default off. If you have a fast terminal, try setting them on. You might
are default off. If you have a fast terminal, try setting them on. You might
also want to set 'ttyfast'.
When using Vim in an xterm the mouse clicks can be used by Vim by setting
'mouse' to "a". If there is access to an X-server gui style copy/paste will
'mouse' to "a". If there is access to an X-server gui style copy/paste will
be used and visual feedback will be provided while dragging with the mouse.
If you then still want the xterm copy/paste with the mouse, press the shift
key when using the mouse. See |mouse-using|. Visual feedback while dragging
@ -54,7 +54,7 @@ supports colors, but "T_Co" is empty or zero): >
For real color terminals the ":highlight" command can be used.
The file "tools/Vim132" is a shell script that can be used to put Vim in 132
The file "tools/vim132" is a shell script that can be used to put Vim in 132
column mode on a vt100 and lookalikes.
vim:tw=78:ts=8:ft=help:norl:

View File

@ -1,4 +1,4 @@
*os_vms.txt* For Vim version 7.0aa. Last change: 2004 Jun 16
*os_vms.txt* For Vim version 7.0aa. Last change: 2005 Jul 12
VIM REFERENCE MANUAL
@ -47,16 +47,19 @@ You can download precompiled executables from:
To use the precompiled binary version, you need one of these archives:
vim-XX-exe-alpha-gui.zip Alpha GUI/Motif executables
vim-XX-exe-alpha-gtk.zip Alpha GUI/GTK executables
vim-XX-exe-alpha-term.zip Alpha console executables
vim-XX-exe-ia64-gui.zip IA64 GUI/Motif executables
vim-XX-exe-ia64-gtk.zip IA64 GUI/GTK executables
vim-XX-exe-ia64-term.zip IA64 console executables
vim-XX-exe-axp-gui.zip Alpha GUI/Motif executables
vim-XX-exe-axp-gtk.zip Alpha GUI/GTK executables
vim-XX-exe-axp-term.zip Alpha console executables
vim-XX-exe-vax-gui.zip VAX GUI executables
vim-XX-exe-vax-term.zip VAX console executables
and of course
vim-XX-runtime.zip runtime files
The binary archives contain: vim.exe, ctags.exe, xxd.exe, mms_vim.exe files.
The binary archives contain: vim.exe, ctags.exe, xxd.exe files.
==============================================================================
@ -68,33 +71,35 @@ See the file [.SRC]INSTALLVMS.TXT.
4. Problems *vms-problems*
The code has been tested under Open VMS 6.2 - 7.3 on Alpha and VAX platforms
with the DECC compiler. It should work without bigger problems.
If it happened that your system does not have some include libraries you can
tune up in OS_VMS_CONF.H file.
The code has been tested under Open VMS 6.2 - 8.2 on Alpha, VAX and IA64
platforms with the DEC C compiler. It should work without bigger problems.
If your system does not have some include libraries you can tune up in
OS_VMS_CONF.H file.
If you decided to build Vim with +perl, +python, etc. options, first you need
to download OpenVMS distributions of Perl and Python. Build and deploy the
libraries and change adequate lines in MAKE_VMS.MMS file. There should not be
problem from Vim side.
to download OpenVMS distributions of Perl and Python. Build and deploy the
libraries and change adequate lines in MAKE_VMS.MMS file. There should not be
a problem from Vim side.
Note: Under VAX it should work with DEC C compiler without problem. VAXC
compiler is not fully ANSI C compatible in pre-processor directives
semantics, therefore you have to use a converter program what will do the
lion part of the job. For detailed instruction read file INSTALLvms.txt
Also GTK, XPM library paths should be configured in MAKE_VMS.MMS
MMS_VIM.EXE is building together with VIM.EXE, but for XD.EXE you should
Note: Under VAX it should work with the DEC C compiler without problems. The
VAX C compiler is not fully ANSI C compatible in pre-processor directives
semantics, therefore you have to use a converter program what will do the lion
part of the job. For detailed instructions read file INSTALLvms.txt
MMS_VIM.EXE is build together with VIM.EXE, but for XD.EXE you should
change to subdirectory and build it separately.
CTAGS is not part of Vim source distribution any more, however the OpenVMS
specific source might contain CTAGS source files as it is described above.
CTAGS is not part of the Vim source distribution anymore, however the OpenVMS
specific source might contain CTAGS source files as described above.
You can find more information about CTAGS on VMS at
http://www.polarhome.com/ctags/
Advanced users may try some acrobatics in FEATURE.H file also.
It is possible to compile with +xfontset +xim options too, but then you have
to set up GUI fonts etc. correctly. See. :help xim from Vim command prompt.
to set up GUI fonts etc. correctly. See :help xim from Vim command prompt.
You may want to use GUI with GTK icons, then you have to download and install
GTK for OpenVMS or at least runtime shareable images - LIBGTK from
@ -132,18 +137,18 @@ Use: >
define/nolog TMP device:[path.tmp]
to get vim.exe to find its document, filetype, and syntax files, and to
specify a directory where temporary files will be located. Copy the "runtime"
specify a directory where temporary files will be located. Copy the "runtime"
subdirectory of the vim distribution to vimruntime.
Logicals $VIMRUNTIME and $TMP are optional.
If $VIMRUNTIME is not set, Vim will guess and try to set up automatically.
Read more about at :help runtime
Read more about it at :help runtime
If $TMP is not set, you will not be able to use some functions as CTAGS,
XXD, printing etc. that use temporary directory for normal operation.
$TMP directory should be readable and writable by the user(s).
The easiest way to set up $TMP is to define logical: >
The $TMP directory should be readable and writable by the user(s).
The easiest way to set up $TMP is to define a logical: >
define/nolog TMP SYS$SCRATCH
or as: >
@ -155,9 +160,9 @@ or as: >
Usually, you want to run just one version of Vim on your system, therefore
it is enough to dedicate one directory for Vim.
Copy all Vim runtime directory structure to the deployment position.
Copy the whole Vim runtime directory structure to the deployment position.
Add the following lines to your LOGIN.COM (in SYS$LOGIN directory).
Set up logical $VIM as: >
Set up the logical $VIM as: >
$ define VIM device:<path>
@ -174,20 +179,20 @@ Please, check the notes for customization and configuration of symbols.
You may want to create .vimrc and .gvimrc files in your home directory
(SYS$LOGIN) to overwrite default settings.
The easiest way is just rename example files. You may leave the menu file
(MENU.VIM) and files vimrc and gvimrc in the original $VIM directory. It will
be default setup for all users, and for users is enough just to have their
own additions or resetting in home directory in files .vimrc and .gvimrc.
The easiest way is just rename example files. You may leave the menu file
(MENU.VIM) and files vimrc and gvimrc in the original $VIM directory. It will
be default setup for all users, and for users it is enough just to have their
own additions or resetting in their home directory in files .vimrc and .gvimrc.
It should work without problems.
Note: Remember, system rc files (default for all users) does not have leading
"." So, system rc files are: >
Note: Remember, system rc files (default for all users) don't have a leading
".". So, system rc files are: >
$VIM:vimrc
$VIM:gvimrc
$VIM:menu.vim
and user's customized rc files are: >
and user customized rc files are: >
sys$login:.vimrc
sys$login:.gvimrc
@ -203,7 +208,7 @@ Example LOGIN.COM: >
Note: This set-up should be enough, if you are working on standalone server or
clustered environment, but if you want to use Vim as internode editor in
DECNET environment, it will satisfy you as well.
DECNET environment, it will satisfy as well.
You just have to define the "whole" path: >
$ define VIM "<server_name>[""user password""]::device:<path>"
@ -214,10 +219,11 @@ as for example: >
$ define VIM "PLUTO::RF10:[UTIL.VIM]"
$ define VIM "PLUTO""ZAY mypass""::RF10:[UTIL.VIM]" ! if passwd required
You can also use $VIMRUNTIME logical to point to proper version of Vim if you
have installed more versions in the same time. If $VIMRUNTIME is not defined
Vim will borrow value from $VIM logical. You can find more information about
$VIMRUNTIME logical by typing :help runtime as a Vim command.
You can also use the $VIMRUNTIME logical to point to the proper version of Vim
if you have installed more versions at the same time. If $VIMRUNTIME is not
defined Vim will borrow its value from the $VIM logical. You can find more
information about the $VIMRUNTIME logical by typing :help runtime as a Vim
command.
System administrators might want to set up a system wide Vim installation,
then add to the SYS$STARTUP:SYLOGICALS.COM >
@ -231,38 +237,40 @@ and to the SYS$STARTUP:SYLOGIN.COM >
$ gv*im:== spawn/nowait/input=NLA0 mcr VIM:VIM.EXE -g -GEOMETRY 80x40
It will set up normal Vim work environment for every user on the system.
It will set up a normal Vim work environment for every user on the system.
==============================================================================
7. GUI mode questions *vms-gui*
OpenVMS in a real mainframe OS, therefore even if it has a GUI console, most of
the users does not use a native X/Window environment during normal operation.
It is not possible to start Vim in GUI mode "just like that". But anyhow it is
not too complicate either.
OpenVMS is a real mainframe OS, therefore even if it has a GUI console, most
of the users do not use a native X/Window environment during normal operation.
It is not possible to start Vim in GUI mode "just like that". But anyhow it
is not too complicated either.
First of all: you will need an executable that is built with enabled GUI.
First of all: you will need an executable that is built with the GUI enabled.
Second: you need to have installed DECW/Motif on your VMS server, otherwise
you will get errors that some shareable libraries are missing.
Third: If you choose to run Vim with extra feature as GUI/GTK then you need
GTK installation too or at least GTK runtime environment (LIBGTK etc.)
Third: If you choose to run Vim with extra features such as GUI/GTK then you
need a GTK installation too or at least a GTK runtime environment (LIBGTK
can be downloaded from http://www.polarhome.com/vim/).
1) If you are working on the VMS X/Motif console:
Start Vim with the command: >
$ mc device:<path>VIM.EXE -g
<
or type :gui as a command to the Vim command prompt. For more info :help gui
or type :gui as a command to the Vim command prompt. For more info :help
gui
2) If you are working on other X/Window environment as Unix or some remote X
VMS console. Set up display to your host with: >
2) If you are working on some other X/Window environment like Unix or a remote
X VMS console. Set up display to your host with: >
$ set disp/create/node=<your IP address>/trans=<transport-name>
<
and start Vim as in point 1. You can find more help in VMS documentation or
and start Vim as in point 1. You can find more help in VMS documentation or
type: help set disp in VMS prompt.
Examples: >
@ -276,11 +284,11 @@ For more information type $help set disp in VMS prompt.
3) Another elegant solution is XDM if you have installed on OpenVMS box.
It is possible to work from XDM client as from GUI console.
4) If you are working on MS Windows or other non X/Window environment
You need to set up one X server and run Vim as in point 2.
For MS Windows there are available free X servers as MIX , Omni X etc.
4) If you are working on MS-Windows or some other non X/Window environment
you need to set up one X server and run Vim as in point 2.
For MS-Windows there are available free X servers as MIX , Omni X etc.,
as well as excellent commercial products as eXcursion or ReflectionX with
built in DEC support.
built-in DEC support.
Please note, that executables without GUI are slightly faster during startup
then with enabled GUI in character mode. Therefore, if you do not use GUI
@ -319,7 +327,7 @@ Read more in ch: 8.6 (Terminal problems).
8.2 Filters
Vim supports filters; ie. if you have a sort program that can handle
Vim supports filters, i.e., if you have a sort program that can handle
input/output redirection like Unix (<infile >outfile), you could use >
:map \s 0!'aqsort<CR>
@ -333,19 +341,20 @@ Vim is saving files into a new file with the next higher file version
number, try these settings. >
:set nobackup " does not create *.*_ backup files
:set nowritebackup " does not have any purpose on VMS. It's default.
:set nowritebackup " does not have any purpose on VMS. It's the
" default.
Recovery is working perfect as well from the default swap file.
Read more with :help swapfile
(Claude Marinier <ClaudeMarinier@xwavesolutions.com> Vim 5.5, Zoltan Arpadffy
Vim 5.6 )
Vim 5.6)
8.4 Directory conversion
Vim will internally convert any unix-style paths and even mixed unix/VMS
paths into VMS style paths. Some typical conversions resemble:
paths into VMS style paths. Some typical conversions resemble:
/abc/def/ghi -> abc:[def]ghi.
/abc/def/ghi.j -> abc:[def]ghi.j
@ -377,9 +386,9 @@ example: >
Note: syntax is very important, otherwise VMS will recognize more parameters
instead of one (resulting with: file not found)
2. Set up Vim as your internode editor. If Vim is not installed on your host,
just set up your IP address, full Vim path including the server name and run
the command procedure below: >
2. Set up Vim as your internode editor. If Vim is not installed on your
host, just set up your IP address, the full Vim path including the server name
and run the command procedure below: >
$ if (p1 .eqs. "") .OR. (p2 .eqs. "") then goto usage
$ set disp/create/node=<your_IP_here>/trans=tcpip
@ -392,8 +401,8 @@ the command procedure below: >
$ write sys$output " Example: @SETVIM.COM username passwd"
$ end:
Note: Never use it in clustered environment (you do not need it), and load could
be very-very slow, but even faster then a local Emacs. :-)
Note: Never use it in a clustered environment (you do not need it), loading
could be very-very slow, but even faster then a local Emacs. :-)
(Zoltan Arpadffy, Vim 5.6)
@ -404,7 +413,7 @@ If your terminal name is not known to Vim and it is trying to find the default
one you will get the following message during start-up:
---
Terminal entry not found in termcap
'unknown-terminal' not known. Available built-in terminals are:
'unknown-terminal' not known. Available built-in terminals are:
builtin_gui
builtin_riscos
builtin_amiga
@ -422,13 +431,13 @@ defaulting to 'vt320'
---
The solution is to define default terminal name: >
$ ! unknown terminal name. let us use vt320 or ansi instead.
$ ! unknown terminal name. Let us use vt320 or ansi instead.
$ ! Note: it's case sensitive
$ define term "vt320"
Terminals from VT100 to VT320 (as V300, VT220, VT200 ) do not need any extra
keyboard mappings. They should work perfect as they are, including arrows,
Ins, Del buttons etc. Except Backspace in GUI mode. To solve it, add to
keyboard mappings. They should work perfect as they are, including arrows,
Ins, Del buttons etc., except Backspace in GUI mode. To solve it, add to
.gvimrc: >
inoremap <Del> <BS>
@ -457,9 +466,9 @@ special commands to execute executables: >
MCR <path>filename <parameters>
OpenVMS users always have to be aware that the Vim command :! "just" drop them
to DCL prompt. This feature is possible to use without any problem with all
to DCL prompt. This feature is possible to use without any problem with all
DCL commands, but if we want to execute some program as XXD, CTAGS, JTAGS etc.
we're running into trouble if we following the Vim documentation (see: help
we're running into trouble if we follow the Vim documentation (see: help
xxd).
Solution: Execute with the MC command and add the full path to the executable.
@ -470,9 +479,9 @@ Example: Instead of :%!xxd command use: >
... or in general: >
:!mc <path>filename <parameters>
Note: You can use XXD, and CTAGS from GUI menu.
Note: You can use XXD and CTAGS from GUI menu.
To customize ctags it is possible to define logical $CTAGS with standard
To customize ctags it is possible to define the logical $CTAGS with standard
parameters as: >
define/nolog CTAGS "--totals -o sys$login:tags"
@ -488,7 +497,7 @@ documentation at http://ctags.sourceforge.net/ctags.html.
If you want to use your .vimrc and .gvimrc from other platforms (e.g. Windows)
you can get in trouble if you ftp that file(s): VMS has different end-of-line
indication.
The symptom is that ViM is not sourcing your .vimrc/.gvimrc, even if you say:
The symptom is that Vim is not sourcing your .vimrc/.gvimrc, even if you say:
>
:so sys$login:.vimrc
@ -535,8 +544,8 @@ will be confused after a window-resize.
From 6.0 diff functionality has been implemented, but OpenVMS does not use
GNU/Unix like diff therefore built in diff does not work.
There is a simple solution to solve this anomaly. Install an Unix like diff
and Vim will work perfect in diff mode too. You just have to redefine your
There is a simple solution to solve this anomaly. Install a Unix like diff
and Vim will work perfect in diff mode too. You just have to redefine your
diff program as: >
define /nolog diff <GNU_PATH>diff.exe
@ -551,16 +560,16 @@ boxes that is meant to solve GNU problems on OpenVMS.
8.12 diff-mode
Vim 6.0 and higher supports vim diff-mode (See |new-diff-mode|, |diff-mode|
and |08.7|). This uses the external program 'diff' and expects a Unix-like
output format from diff. The standard VMS diff has a different output
format. To use vim on VMS in diff-mode, you need to:
and |08.7|). This uses the external program 'diff' and expects a Unix-like
output format from diff. The standard VMS diff has a different output
format. To use vim on VMS in diff-mode, you need to:
1 Install a Unix-like diff program, e.g. GNU diff
2 Tell vim to use the Unix-like diff for diff-mode.
You can download GNU diff from the VIM-VMS website, it is one of the GNU
tools in http://www.polarhome.com/vim/files/gnu_tools.zip. I suggest to
tools in http://www.polarhome.com/vim/files/gnu_tools.zip. I suggest to
unpack it in a separate directory "GNU" and create a logical GNU: that
points to that directory. e.g: >
points to that directory, e.g: >
DEFINE GNU <DISK>:[<DIRECTORY>.BIN.GNU]
@ -569,9 +578,9 @@ prompt: >
GDIFF :== $GNU:DIFF.EXE
Now you need to tell vim to use the new diff program. Take the example
Now you need to tell vim to use the new diff program. Take the example
settings from |diff-diffexpr| and change the call to the external diff
program to the new diff on VMS. Add this to your .vimrc file: >
program to the new diff on VMS. Add this to your .vimrc file: >
" Set up vimdiff options
if v:version >= 600
@ -612,8 +621,8 @@ You can now compare files in 4 ways: >
8.13 Allow '$' in C keywords
DEC C uses many identifiers with '$' in them. This is not allowed in ANSI C,
and vim recognises the '$' as the end of the identifier. You can change this
DEC C uses many identifiers with '$' in them. This is not allowed in ANSI C,
and vim recognises the '$' as the end of the identifier. You can change this
with the |iskeyword|command.
Add this command to your .vimrc file: >
@ -625,7 +634,7 @@ CS.VIM) and add this command: >
set iskeyword+=$
Now word-based commands, e.g. the '*'-search-command and the CTRL-]
tag-lookup, work on the whole identifier. (Ctags on VMS also supports '$' in
tag-lookup, work on the whole identifier. (Ctags on VMS also supports '$' in
C keywords since ctags version 5.1.)
( Coen Engelbarts, Vim 6.1)
@ -633,8 +642,8 @@ C keywords since ctags version 5.1.)
8.14 VIMTUTOR for beginners
It exits VIMTUTOR.COM DCL script that can help Vim beginners to learn/make
first steps with Vim on OpenVMS. Depending of binary distribution you may start
it with: >
first steps with Vim on OpenVMS. Depending of binary distribution you may
start it with: >
@vim:vimtutor
@ -644,6 +653,17 @@ it with: >
9. VMS related changes *vms-changes*
Version 7.0
- GTKLIB and Vim build on IA64
- colors in terminal mode
- syntax highlighting in terminal mode
- write problem fixed (extra CR)
- ESC and ESC sequence recognition in terminal mode
- make file changed to support new MMS version
- env variable expansion in path corrected
- printing problems corrected
- help text added for case insensitive arguments
Version 6.3 (2004 May 10)
- Improved vms_read function
- CTAGS v5.5.4 included

View File

@ -1,4 +1,4 @@
*os_win32.txt* For Vim version 7.0aa. Last change: 2004 May 01
*os_win32.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
VIM REFERENCE MANUAL by George Reilly
@ -184,14 +184,15 @@ A. There are no good reasons to run the 16-bit DOS version on NT. The Win32
runs on top of an 80x86 emulator.
Q. How do I change the font?
A. In the GUI version, you can use the 'guifont' option.
In the console version, you need to set the font of the console itself.
A. In the GUI version, you can use the 'guifont' option. Example: >
:set guifont=Lucida_Console:h15:cDEFAULT
< In the console version, you need to set the font of the console itself.
You cannot do this from within Vim.
Q. When I change the size of the console window with ':set lines=xx' or
similar, the font changes! (Win95)
A. You have the console font set to 'Auto' in Vim's (or your MS-DOS prompt's)
properties. This makes W95 guess (badly!) what font is best. Set an explicit
properties. This makes W95 guess (badly!) what font is best. Set an explicit
font instead.
Q. Why can't I paste into Vim when running Windows 95?
@ -249,6 +250,16 @@ A. On Unix, Vim is prepared for links (symbolic or hard). A backup copy of
things exist. The only way to fix this in the current version is not
making a backup file, by ":set nobackup nowritebackup" |'writebackup'|
Q. I'm using Vim to edit a file on a Unix file server through Samba. When I
write the file, the owner of the file is changed. Why?
A. When writing a file Vim renames the original file, this is a backup (in
case writing the file fails halfway). Then the file is written as a new
file. Samba then gives it the default owner for the file system, which may
differ from the original owner.
To avoid this set the 'backupcopy' option to "yes". Vim will then make a
copy of the file for the backup, and overwrite the original file. The
owner isn't changed then.
Q. How do I get to see the output of ":make" while it's running?
A. Basically what you need is to put a tee program that will copy its input
(the output from make) to both stdout and to the errorfile. You can find a
@ -271,7 +282,7 @@ A. VisionFS can't handle certain dot (.) three letter extension file names.
dir > file.bat
<
The result is that the "dir" command updates the "file.bat~" file, instead
of creating a new "file.bat" file. This same behavior is exhibited in Vim
of creating a new "file.bat" file. This same behavior is exhibited in Vim
when editing an existing file named "foo.bat" because the default behavior
of Vim is to create a temporary file with a '~' character appended to the
name. When the file is written, it winds up being deleted.
@ -295,13 +306,13 @@ A. When using :! to run an external command, you can run it with "start": >
To avoid this special treatment, use ":! start".
Q. I'm using Win32s, and when I try to run an external command like "make",
Vim doesn't wait for it to finish! Help!
Vim doesn't wait for it to finish! Help!
A. The problem is that a 32-bit application (Vim) can't get notification from
Windows that a 16-bit application (your DOS session) has finished. Vim
Windows that a 16-bit application (your DOS session) has finished. Vim
includes a work-around for this, but you must set up your DOS commands to
run in a window, not full-screen. Unfortunately the default when you
install Windows is full-screen. To change this:
1) Start PIF editor (in the Main program group)
run in a window, not full-screen. Unfortunately the default when you
install Windows is full-screen. To change this:
1) Start PIF editor (in the Main program group).
2) Open the file "_DEFAULT.PIF" in your Windows directory.
3) Changes the display option from "Full Screen" to "Windowed".
4) Save and exit.
@ -310,10 +321,10 @@ A. The problem is that a 32-bit application (Vim) can't get notification from
:!dir C:\<CR>".
< You should see a DOS box window appear briefly with the directory listing.
Q. I use Vim under Win32s and NT. In NT, I can define the console to default to
50 lines, so that I get a 80x50 shell when I ':sh'. Can I do the same in
Q. I use Vim under Win32s and NT. In NT, I can define the console to default to
50 lines, so that I get a 80x50 shell when I ':sh'. Can I do the same in
W3.1x, or am I stuck with 80x25?
A. Edit SYSTEM.INI and add 'ScreenLines=50' to the [NonWindowsApp] section. DOS
A. Edit SYSTEM.INI and add 'ScreenLines=50' to the [NonWindowsApp] section. DOS
prompts and external DOS commands will now run in a 50-line window.
vim:tw=78:fo=tcq2:ts=8:ft=help:norl:

View File

@ -1,4 +1,4 @@
*pattern.txt* For Vim version 7.0aa. Last change: 2004 May 09
*pattern.txt* For Vim version 7.0aa. Last change: 2006 Feb 14
VIM REFERENCE MANUAL by Bram Moolenaar
@ -117,6 +117,14 @@ gD Goto global Declaration. When the cursor is on a
like "gd", except that the search for the keyword
always starts in line 1. {not in Vi}
*1gd*
1gd Like "gd", but ignore matches inside a {} block that
ends before the cursor position. {not in Vi}
*1gD*
1gD Like "gD", but ignore matches inside a {} block that
ends before the cursor position. {not in Vi}
*CTRL-C*
CTRL-C Interrupt current (search) command. Use CTRL-Break on
MS-DOS |dos-CTRL-Break|.
@ -153,6 +161,7 @@ The offset gives the cursor position relative to the found match:
s[-num] [num] characters to the left of the start of the match
b[+num] [num] identical to s[+num] above (mnemonic: begin)
b[-num] [num] identical to s[-num] above (mnemonic: begin)
;{pattern} perform another search, see |//;|
If a '-' or '+' is given but [num] is omitted, a count of one will be used.
When including an offset with 'e', the search becomes inclusive (the
@ -216,7 +225,7 @@ To clear the last used search pattern: >
This will not set the pattern to an empty string, because that would match
everywhere. The pattern is really cleared, like when starting Vim.
The search usual skips matches that don't move the cursor. Whether the next
The search usually skips matches that don't move the cursor. Whether the next
match is found at the next character or after the skipped match depends on the
'c' flag in 'cpoptions'. See |cpo-c|.
with 'c' flag: "/..." advances 1 to 3 characters
@ -224,6 +233,10 @@ match is found at the next character or after the skipped match depends on the
The unpredictability with the 'c' flag is caused by starting the search in the
first column, skipping matches until one is found past the cursor position.
When searching backwards, searching starts at the start of the line, using the
'c' flag in 'cpoptions' as described above. Then the last match before the
cursor position is used.
In Vi the ":tag" command sets the last search pattern when the tag is searched
for. In Vim this is not done, the previous search pattern is still remembered,
unless the 't' flag is present in 'cpoptions'. The search pattern is always
@ -243,9 +256,13 @@ switched off by setting the 's' flag in the 'shortmess' option. The highlight
method 'w' is used for this message (default: standout).
*search-range*
You cannot limit the search command "/" to a certain range of lines. A trick
to do this anyway is to use the ":substitute" command with the 'c' flag.
Example: >
You can limit the search command "/" to a certain range of lines by including
\%>l items. For example, to match the word "limit" below line 199 and above
line 300: >
/\%>199l\%<300llimit
Also see |/\%>l|.
Another way is to use the ":substitute" command with the 'c' flag. Example: >
:.,300s/Pattern//gc
This command will search from the cursor position until line 300 for
"Pattern". At the match, you will be asked to type a character. Type 'q' to
@ -267,7 +284,7 @@ the "*" is under your right hand middle finger (search to the right and down).
==============================================================================
2. The definition of a pattern *search-pattern* *pattern* *[pattern]*
*regular-expression* *regexp* *Pattern*
*E76* *E361* *E363* *E383* *E476*
*E76* *E383* *E476*
For starters, read chapter 27 of the user manual |usr_27.txt|.
@ -377,12 +394,14 @@ More explanation and examples below, follow the links.
|/\ze| \ze \ze anything, sets end of match
|/\%^| \%^ \%^ beginning of file |/zero-width| *E71*
|/\%$| \%$ \%$ end of file |/zero-width|
|/\%V| \%V \%V inside Visual area |/zero-width|
|/\%#| \%# \%# cursor position |/zero-width|
|/\%'m| \%'m \%'m mark m position |/zero-width|
|/\%l| \%23l \%23l in line 23 |/zero-width|
|/\%c| \%23c \%23c in column 23 |/zero-width|
|/\%v| \%23v \%23v in virtual column 23 |/zero-width|
Character classes {not in Vi}:
Character classes {not in Vi}: */character-classes*
|/\i| \i \i identifier character (see 'isident' option)
|/\I| \I \I like "\i", but excluding digits
|/\k| \k \k keyword character (see 'iskeyword' option)
@ -431,7 +450,7 @@ Character classes {not in Vi}:
x x a character with no special meaning matches itself
|/[]| [] \[] any character specified inside the []
|/\%[]| \%[] \%[] a list of optionally matched atoms
|/\%[]| \%[] \%[] a sequence of optionally matched atoms
|/\c| \c \c ignore case
|/\C| \C \C match case
@ -442,6 +461,12 @@ Character classes {not in Vi}:
|/\Z| \Z \Z ignore differences in Unicode "combining characters".
Useful when searching voweled Hebrew or Arabic text.
|/\%d| \%d \%d match specified decimal character (eg \%d123
|/\%x| \%x \%x match specified hex character (eg \%x2a)
|/\%o| \%o \%o match specified octal character (eg \%o040)
|/\%u| \%u \%u match specified multibyte character (eg \%u20ac)
|/\%U| \%U \%U match specified large multibyte character (eg
\%U12345678)
Example matches ~
\<\I\i* or
@ -511,11 +536,6 @@ An atom can be followed by an indication of how many times the atom can be
matched and in what way. This is called a multi. See |/multi| for an
overview.
It is not possible to use a multi that can match more than one time after an
atom that can match an empty string. That's because this could result in an
endless loop. If you try it, you will get this error message: >
*, \+ or \{ operand could be empty
<
*/star* */\star* *E56*
* (use \* when 'magic' is not set)
Matches 0 or more of the preceding atom, as many as possible.
@ -566,7 +586,7 @@ endless loop. If you try it, you will get this error message: >
\{-} matches 0 or more of the preceding atom, as few as possible
{Vi does not have any of these}
n and m are positive decimal numbers
n and m are positive decimal numbers or zero
If a "-" appears immediately after the "{", then a shortest match
first algorithm is used (see example below). In particular, "\{-}" is
@ -625,7 +645,7 @@ endless loop. If you try it, you will get this error message: >
position: "\(foo\)\@!bar" will match "bar" in "foobar", because at the
position where "bar" matches, "foo" does not match. To avoid matching
"foobar" you could use "\(foo\)\@!...bar", but that doesn't match a
bar at the start of a line. Use "\(foo\)\@<!bar".
bar at the start of a line. Use "\(foo\)\@<!bar".
*/\@<=*
\@<= Matches with zero width if the preceding atom matches just before what
@ -729,7 +749,7 @@ $ At end of pattern or in front of "\|" or "\)" ("|" or ")" after "\v"):
*/\>*
\> Matches the end of a word: The previous char is the last char of a
word. The 'iskeyword' option specifies what is a word character.
word. The 'iskeyword' option specifies what is a word character.
|/zero-width|
*/\zs*
@ -739,7 +759,7 @@ $ At end of pattern or in front of "\|" or "\)" ("|" or ")" after "\v"):
/^\s*\zsif
< matches an "if" at the start of a line, ignoring white space.
Can be used multiple times, the last one encountered in a matching
branch is used. Example: >
branch is used. Example: >
/\(.\{-}\zsFab\)\{3}
< Finds the third occurrence of "Fab".
{not in Vi} {not available when compiled without the +syntax feature}
@ -770,6 +790,11 @@ $ At end of pattern or in front of "\|" or "\)" ("|" or ")" after "\v"):
position after the first "VIM".
Searching from the end of the file backwards is easier!
*/\%V*
\%V Match inside the Visual area. When Visual mode has already been
stopped match in the area that |gv| would reselect.
Only works for the current buffer.
*/\%#* *cursor-position*
\%# Matches with the cursor position. Only works when matching in a
buffer displayed in a window. {not in Vi}
@ -784,10 +809,24 @@ $ At end of pattern or in front of "\|" or "\)" ("|" or ")" after "\v"):
< When 'hlsearch' is set and you move the cursor around and make changes
this will clearly show when the match is updated or not.
*/\%'m* */\%<'m* */\%>'m*
\%'m Matches with the position of mark m.
\%<'m Matches before the position of mark m.
\%>'m Matches after the position of mark m.
Example, to highlight the text from mark 's to 'e: >
/.\%>'s.*\%<'e..
< Note that two dots are required to include mark 'e in the match. That
is because "\%<'e" matches at the character before the 'e mark, and
since it's a |/zero-width| match it doesn't include that character.
{not in Vi}
WARNING: When the mark is moved after the pattern was used, the result
becomes invalid. Vim doesn't automatically update the matches.
Similar to moving the cursor for "\%#" |/\%#|.
*/\%l* */\%>l* */\%<l*
\%23l Matches in a specific line.
\%<23l Matches above a specific line.
\%>23l Matches below a specific line.
\%<23l Matches above a specific line (lower line number).
\%>23l Matches below a specific line (higher line number).
These three can be used to match specific lines in a buffer. The "23"
can be any line number. The first line is 1. {not in Vi}
WARNING: When inserting or deleting lines Vim does not automatically
@ -829,8 +868,8 @@ $ At end of pattern or in front of "\|" or "\)" ("|" or ")" after "\v"):
are halfway a Tab or other character that occupies more than one
screen character. {not in Vi}
WARNING: When inserting or deleting text Vim does not automatically
update the matches. This means Syntax highlighting quickly becomes
wrong.
update highlighted matches. This means Syntax highlighting quickly
becomes wrong.
Example, to highlight the all characters after virtual column 72: >
/\%>72v.*
< When 'hlsearch' is set and you move the cursor around and make changes
@ -924,7 +963,7 @@ x A single character, with no special meaning, matches itself
[] (with 'nomagic': \[]) */[]* */\[]* */\_[]* */collection*
\_[]
A collection. This is a sequence of characters enclosed in brackets.
A collection. This is a sequence of characters enclosed in brackets.
It matches any single character in the collection.
Example matches ~
[xyz] any 'x', 'y' or 'z'
@ -937,6 +976,10 @@ x A single character, with no special meaning, matches itself
"\_[^ab]" matches the end-of-line and any character but "a" and "b".
This makes it Vi compatible: Without the "\_" or "\n" the collection
does not match an end-of-line.
*E769*
When the ']' is not there Vim will not give an error message but
assume no collection is used. Useful to search for '['. However, you
do get E769 for internal searching.
If the sequence begins with "^", it matches any single character NOT
in the collection: "[^xyz]" matches anything but 'x', 'y' and 'z'.
@ -971,6 +1014,17 @@ x A single character, with no special meaning, matches itself
a list of at least one character, each of which is either '-', '.',
'/', alphabetic, numeric, '_' or '~'.
These items only work for 8-bit characters.
*/[[=* *[==]*
- An equivalence class. This means that characters are matched that
have almost the same meaning, e.g., when ignoring accents. The form
is:
[=a=]
Currrently this is only implemented for latin1. Also works for the
latin1 characters in utf-8 and latin9.
*/[[.* *[..]*
- A collation element. This currently simply accepts a single
character in the form:
[.a.]
*/\]*
- To include a literal ']', '^', '-' or '\' in the collection, put a
backslash before it: "[xyz\]]", "[\^xyz]", "[xy\-z]" and "[xyz\\]".
@ -988,6 +1042,11 @@ x A single character, with no special meaning, matches itself
\t <Tab>
\r <CR> (NOT end-of-line!)
\b <BS>
\d123 decimal number of character
\o40 octal number of character up to 0377
\x20 hexadecimal number of character up to 0xff
\u20AC hex. number of multibyte character up to 0xffff
\U1234 hex. number of multibyte character up to 0xffffffff
NOTE: The other backslash codes mentioned above do not work inside
[]!
- Matching with a collection can be slow, because each character in
@ -996,7 +1055,7 @@ x A single character, with no special meaning, matches itself
much faster than "[0-9]" and matches the same characters.
*/\%[]* *E69* *E70* *E369*
\%[] A list of optionally matched atoms. This always matches.
\%[] A sequence of optionally matched atoms. This always matches.
It matches as much of the list of atoms it contains as possible. Thus
it stops at the first atom that doesn't match. For example: >
/r\%[ead]
@ -1011,6 +1070,17 @@ x A single character, with no special meaning, matches itself
< Matches the words "r", "re", "ro", "rea", "roa", "read" and "road".
{not available when compiled without the +syntax feature}
*/\%d* */\%x* */\%o* */\%u* */\%U* *E678*
\%d123 Matches the character specified with a decimal number. Must be
followed by a non-digit.
\%o40 Matches the character specified with an octal number up to 0377.
Numbers below 040 must be followed by a non-octal digit or a non-digit.
\%x2a Matches the character specified with up to two hexadecimal characters.
\%u20AC Matches the character specified with up to four hexadecimal
characters.
\%U1234abcd Matches the character specified with up to eight hexadecimal
characters.
==============================================================================
7. Ignoring case in a pattern */ignorecase*

Some files were not shown because too many files have changed in this diff Show More